我理解在理论上分离解析器规则和词法分析器规则背后的理论,但在ANTLR中这两个语句之间的实际差异是什么:
my_rule: ... ;
MY_RULE: ... ;
Run Code Online (Sandbox Code Playgroud)
它们会导致不同的AST树吗?性能不同?潜在的含糊之处?
我想将一个非常简单的Antlr语法转换为Xtext,因此没有语法谓词,没有Xtext提供的Antlr的花哨功能.考虑这个语法
grammar simple; // Antlr3
foo: number+;
number: NUMBER;
NUMBER: '0'..'9'+;
Run Code Online (Sandbox Code Playgroud)
和它的Xtext对应物
grammar Simple; // Xtext
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
generate Simple "http://www.example.org/Simple"
Foo: dummy=Number+;
Number: NUMBER_TOKEN;
terminal NUMBER_TOKEN: '0'..'9'+;
Run Code Online (Sandbox Code Playgroud)
Xtext在幕后使用Antlr,但这两种格式并不完全相同.我必须修改一些烦人的(并且部分可理解的)事情,包括:
terminal关键字前缀终端import "http://www.eclipse.org/emf/2002/Ecore" as ecore使终端工作foo: dummy=number+是否有工具可以自动进行此转换,至少对于简单的情况?如果没有,是否有更完整的此类必要修改清单?