我正在查看Java的解析器和词法分析器语法,可以在here中找到。 Lexer语法定义了记号,例如分号和其他内容。然后,在Parser语法中,使用文字';'
而不是编写SEMI
。 here的使用位置示例。这是为什么?这背后有什么原因吗?
答案 0 :(得分:1)
如果使用单个字符串文字定义了词法分析器规则(而没有使用相同的文字量定义其他词法分析器规则),例如SEMI: ';';
,则可以使用字符串文字来引用该规则,而不是引用其规则名称。
之所以允许这样做,是因为statement ';'
之类的内容比statement SEMI
之类的内容更具可读性。