来自文件的Antlr令牌

时间:2012-02-09 01:47:10

标签: antlr

为Antlr提供大量令牌的最佳方法是什么? 假设我们有一个包含100,000个英语动词的列表,我们怎样才能将它们添加到我们的语法中?我们可能会包含一个像verbs.g这样的巨大语法文件,但也许有一种更优雅的方式,通过修改.token文件等?

grammar verbs;

VERBS:
'eat' |
'drink' |
'sit' |
...
...
| 'sleep'
;

令牌也应该是词法分析器或解析器令牌,即VERBS:或动词:?可能是VERBS:。

1 个答案:

答案 0 :(得分:2)

我宁愿使用语义谓词。

为此你必须定义一个标记

word : [a-z]+

并且在每个想要使用动词(而不是通用词)的站点上放置一个语义谓词,用于检查解析后的单词是否在动词列表中。

建议不要将解析器/词法分析器用于此类任务

  • 每个附加动词都会改变语法
  • 每个附加动词放大生成的代码
  • 结合更容易
  • 上/下案例可以更容易处理