如果我想爲例子來定義的Lisp編程語言,其中名稱可以包含即使非字母數字字符,我要列出所有像一個符號可用字符:BNF和EBNF符號是否允許使用正則表達式?
validchar ::= "a" | "b" | "c" ... "-" | "*" | "$" ... ;
name = validchar, (validchar | digit)+;
還是我允許使用regexs,如:
validchar ::= "[^(^)^\s^\d]";
name ::= validchar, (validchar | digit)*;
甚至:
name ::= "[^(^)^\s^\d]", "[^(^)^\s]"*;
這會縮短很多,而且它將包括連字符如₩,¥,€等等,我不能列出但實際上可用。