我想将一个非常简单的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+是否有工具可以自动进行此转换,至少对于简单的情况?如果没有,是否有更完整的此类必要修改清单?
基本上不可能自动执行此转换,因为 Antlr 语法缺乏 Xtext 语法所需的信息。Xtext 中的规则名称将用于从中创建类。Xtext 中的一些作业将成为这些类中的 getter 和 setter。然而,这些分配不应该用于每个规则调用,因为 Xtext 中有特殊模式可以减少生成的 AST 中的噪声。诸如此类的事情使得自动进行这种转换几乎不可能。然而,通常可以直接将 Antlr 语法复制到 Xtext 编辑器中并手动修复问题。
| 归档时间: |
|
| 查看次数: |
3731 次 |
| 最近记录: |