文件中的Antlr标记
向Antlr提供大量代币的最佳方式是什么? 假设我们有一个100000个英语动词的列表,我们如何将它们添加到语法中?我们当然可以包含一个巨大的语法文件,比如verbs.g,但也许有一个更优雅的方法,修改一个.token文件等等文件中的Antlr标记,antlr,Antlr,向Antlr提供大量代币的最佳方式是什么? 假设我们有一个100000个英语动词的列表,我们如何将它们添加到语法中?我们当然可以包含一个巨大的语法文件,比如verbs.g,但也许有一个更优雅的方法,修改一个.token文件等等 grammar verbs; VERBS: 'eat' | 'drink' | 'sit' | ... ... | 'sleep' ; 标记是否应该是lexer或parser标记,即动词:或动词:?可能是动词:。我宁愿使用语义谓词 为此,您必须定义一个令牌 word
grammar verbs;
VERBS:
'eat' |
'drink' |
'sit' |
...
...
| 'sleep'
;
标记是否应该是lexer或parser标记,即动词:或动词:?可能是动词:。我宁愿使用语义谓词 为此,您必须定义一个令牌
word : [a-z]+
在每一个你想使用动词(而不是泛型词)的站点上,放一个语义谓词,检查被解析的词是否在动词列表中
使用建议不要将解析器/词法分析器用于此类任务
- 每增加一个动词都会改变语法
- 每个附加动词都会放大生成的代码
- 接合更容易
- 上/小写字母可能更容易处理