【发布时间】:2016-01-04 13:18:50
【问题描述】:
在令牌冲突的情况下如何定义 ANTLR 词法分析器行为? 让我解释一下我所说的“冲突”令牌是什么意思。 例如,假设定义了以下内容:
INT_STAGE : '1'..'6';
INT : '0'..'9'+;
这里有一个冲突,因为在读取了一系列数字之后,词法分析器将不知道是否有一个 INT 或多个 INT_STAGE 标记(或两者的不同组合)。 经过测试,看起来如果 INT 在 INT_STAGE 之后定义,则词法分析器更愿意找到 INT_STAGE,但可能不是 INT?否则,将永远找不到 INT_STAGE。
另一个例子是:
FOOL: ' fool'
FOO: 'foo'
ID : ('a'..'z'|'A'..'Z'|'_'|'%') ('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'%')*;
有人告诉我这是识别所有标记的“正确”顺序: 在读取“傻瓜”时,词法分析器会找到一个 FOOL 令牌,而不是 FOO ID 或其他东西。
【问题讨论】: