3.1.5 词汇和语法的正式定义
词汇通常用正则表达式表示。
例如,我们的示例语言可以定义如下:
INTEGER :0|[1-9][0-9]*
PLUS : +
MINUS: -
如您所看到的,这里用正则表达式给出了整数的定义。
语法通常使用一种称为BNF的格式来定义。我们的示例语言可以定义如下:
expression := term operation term
operation := PLUS | MINUS
term := INTEGER | expression
之前我们说过,如果语言的语法是与上下文无关的语法,就可以由常规解析器进行解析。与上下文无关的语法的直观定义就是可以完全用 BNF 格式表达的语法。有关正式定义,请参阅关于与上下文无关的语法的维基百科文章。