如果我想为例子来定义的Lisp编程语言,其中名称可以包含即使非字母数字字符,我要列出所有像一个符号可用字符:BNF和EBNF符号是否允许使用正则表达式?
validchar ::= "a" | "b" | "c" ... "-" | "*" | "$" ... ;
name = validchar, (validchar | digit)+;
还是我允许使用regexs,如:
validchar ::= "[^(^)^\s^\d]";
name ::= validchar, (validchar | digit)*;
甚至:
name ::= "[^(^)^\s^\d]", "[^(^)^\s]"*;
这会缩短很多,而且它将包括连字符如₩,¥,€等等,我不能列出但实际上可用。