我有一个由我的语法文件输出的Lua代码的AST,目前它为我执行解析和词法分析。我想要添加一个树形语法到其中,但是因为我使用的是C#,我不确定该如何实现。当你已经编写了解析器和词法分析器时,生成树形语法代码的基本过程是什么?
更新:我有以下语法文件:
tree grammar LuaGrammar;
options {
backtrack=true;
language=CSharp2;
//output=AST;
tokenVocab=Lua;
filter=true;
ASTLabelType=CommonTree;
}
@lexer::namespace{/*my namespace*/}
@parser::namespace{/*my namespace*/}
dummyRule
: ^('=' x=. y=.) {};
我的主要语法文件和这个文件放在同一个目录下,生成没有问题。但是,在尝试编译这个文件时,我遇到了以下错误:
[02:54:06] error(143): C:\Users\RCIX\Desktop\AguaLua\Project\trunk\AguaLua\AguaLua\ANTLR Data\LuaGrammar.g:12:18: unknown or invalid action scope for tree grammar: lexer
[02:54:06] error(143): C:\Users\RCIX\Desktop\AguaLua\Project\trunk\AguaLua\AguaLua\ANTLR Data\LuaGrammar.g:13:19: unknown or invalid action scope for tree grammar: parser
我是不是走在正确的道路上,或者完全偏离了轨道?