为Antlr提供大量令牌的最佳方法是什么? 假设我们有一个包含100,000个英语动词的列表,我们怎样才能将它们添加到我们的语法中?我们可能会包含一个像verbs.g这样的巨大语法文件,但也许有一种更优雅的方式,通过修改.token文件等?
grammar verbs;
VERBS:
'eat' |
'drink' |
'sit' |
...
...
| 'sleep'
;
令牌也应该是词法分析器或解析器令牌,即VERBS:或动词:?可能是VERBS:。
答案 0 :(得分:2)
我宁愿使用语义谓词。
为此你必须定义一个标记
word : [a-z]+
并且在每个想要使用动词(而不是通用词)的站点上放置一个语义谓词,用于检查解析后的单词是否在动词列表中。
建议不要将解析器/词法分析器用于此类任务