在 ANTLR4 中使用显式标记定义有哪些优点和缺点?我发现单括号中的文本比创建单独的标记并使用它代替文本更具描述性且更易于使用。
E.g.:
grammar SimpleTest;
top: library | module ;
library: 'library' library_name ';' ;
library_name: IDENTIFIER;
module: MODULE module_name ';' ;
module_name: IDENTIFIER;
MODULE: 'module' ;
IDENTIFIER: [a-zA-Z0-9]+;
生成的令牌是:
T__0=1
T__1=2
MODULE=3
IDENTIFIER=4
'library'=1
';'=2
'module'=3
如果我对此不感兴趣'library'
“令牌”,因为规则已经确定了我要匹配的内容,而且无论如何我都会跳过它,将其替换为有任何意义吗LIBRARY
和一个令牌声明? (然后代币的数量将会增加。)为什么这是 ANTLRWorks 中的警告?
实际上,隐式标记和显式标记之间存在差异:
来自“权威 ANTLR4 参考”,第 76 页:
ANTLR 收集并分离所有字符串文字和词法分析器
来自解析器规则的规则。诸如“enum”之类的文字成为词汇
规则并立即在解析器规则之后但在
明确的词汇规则.
ANTLR 词法分析器解决了之间的歧义
词汇规则倾向于首先指定的规则。
突出我的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)