【发布时间】:2016-07-31 10:27:30
【问题描述】:
例如,如果我想定义 Lisp 编程语言,其中名称甚至可以包含非字母数字字符,我是否应该使用如下符号列出所有可用字符:
validchar ::= "a" | "b" | "c" ... "-" | "*" | "$" ... ;
name = validchar, (validchar | digit)+;
或者我可以使用正则表达式,例如:
validchar ::= "[^(^)^\s^\d]";
name ::= validchar, (validchar | digit)*;
甚至:
name ::= "[^(^)^\s^\d]", "[^(^)^\s]"*;
这会大大缩短它,它甚至会包含₩、¥、€等字符,我无法列出但实际上是可用的。
【问题讨论】: