相关疑难解决方法(0)

ANTLR中解析器规则和词法分析器规则之间的实际区别?

我理解在理论上分离解析器规则和词法分析器规则背后的理论,但在ANTLR中这两个语句之间的实际差异是什么:

my_rule: ... ;

MY_RULE: ... ;
Run Code Online (Sandbox Code Playgroud)

它们会导致不同的AST树吗?性能不同?潜在的含糊之处?

parsing antlr lexical-analysis

18
推荐指数
2
解决办法
7219
查看次数

将简单的Antlr语法转换为Xtext

我想将一个非常简单的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+
  • 请记住,规则和终端名称必须是唯一的,即使不区分大小写.
  • (可选)将规则名称的第一个字母大写以遵循Java约定.

是否有工具可以自动进行此转换,至少对于简单的情况?如果没有,是否有更完整的此类必要修改清单?

antlr xtext

10
推荐指数
1
解决办法
3731
查看次数

标签 统计

antlr ×2

lexical-analysis ×1

parsing ×1

xtext ×1