1.概述
上一篇文章: 【Antlr】Antlr将词法符号送入不同的通道、处理注释
出自:antlr 权威指南
并且补充
考虑这样一个句子“ Brown leaves in the fall°。它是有歧义的,因为存在两种解释。如果我们指的是树木的叶子,这句话就是在描述一种自然现象。但是,如果我们正在谈论一位Jane Brown女士,这句话的意义就完全被上下文改变了。”Leaves” 就从名词变成了动词。
这种情况类似我们在11.3节中解决的问题:Ct+中存在上下文相关的语句,如下T (0)既可以是函数调用语句,也可以是类型转换语句,它的具体含义取决于当前程序中的T定义。由于我们的C++词法分析器输送给语法分析器的是含义模糊的通用1D词法符号,上述歧义性的影响更加显著。因此,我们需要在文法规则中加入语义判定来选择不同的备选分支。
此外,我们也可以令词法分析器向语法分析器输送更精确的词法符号,例如由上下文决定的FUNCTION_ NA