对于一个宠物项目,我开始摆弄ANTLR.在完成一些教程后,我现在正在尝试为我自己的语言创建语法并生成AST.
现在我主要在ANTLRWorks中乱搞,但现在我已经验证了解析树看起来很好我想(迭代地,因为我还在学习并且仍然需要对最终结构做出一些决定)树)创建AST.似乎antlrworks不会将其可视化(或者至少不使用"Interpreter"功能,Debug不能在我的任何机器上运行).
底线:是以手动方式可视化AST的唯一方法,遍历/显示它还是以字符串表示形式将树打印到控制台?
我正在寻找的是从输入,语法 - >视觉AST表示到ANTLRWorks的"解释器"功能的简单方法.有任何想法吗?
有谁知道R是否存在现有的ANTLR或IRONY语法?
非常感谢.
我的情况是,我的语言包含一些在构建时未知但在运行时已知的单词,导致需要不断重建/重新部署程序以考虑新单词.如果在Antlr中有可能从配置文件中生成一些令牌,我就会徘徊?
例如,如果我有一个规则,在一个简化的例子中
rule : WORDS+;
WORDS : 'abc';
Run Code Online (Sandbox Code Playgroud)
我的语言在runntime遇到'bcd',我希望能够修改配置文件以将bcd定义为单词,而不是必须重建然后重新部署.
我想将一个非常简单的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+是否有工具可以自动进行此转换,至少对于简单的情况?如果没有,是否有更完整的此类必要修改清单?
我想知道将内部解析算法呈现为"LL(*)"的ANTLR v3是否完全代表PEG(解析表达式语法)解析器.
有区别吗?
在什么是ANTLR3中的"语义谓词"?Bart Kiers非常清楚地概述了Antlr3中的不同语义谓词.
太糟糕了,Antlr4中的语法/语义似乎有所改变,所以这不会编译:
end_of_statement
: ';'
| EOF
| {input.LT(1).getType() == RBRACE}? =>
;
RBRACE
: '}'
;
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何处理end_of_statement的第三种情况:如果下一个标记是'}'但不消耗它,则接受.
我正在使用ANTLR构建一个简单的.NET for .NET,将字符串中的脚本转换为Dynamic Method.我的第一个想法是转换为IL操作码,但现在我正在阅读有关DM创建的表达式树.似乎我可以使用表达式树生成任何方法,就像IL代码一样?
谢谢!