根据这些instructions,我正在尝试在当前的Flash Builder 4.5.1项目中使用ANTLR生成的* .as文件。
因此,我将此ANTLR's Actionscript runtime添加到我的项目中 - 没有问题。
我使用ANTLRWorks编译lexer / parser规范也没有问题。
我在源* .g文件中添加了语言选项,以使ANTLR生成Actionscript源:
options {
backtrack = true;
memoize = true;
k=2;
output = AST;
language=ActionScript; // Added this
ASTLabelType = CommonTree;
}
不幸的是,ANTLR / ANTLRworks生成的Actionscript代码是错误的:
Catch语句的读取方式与此catch (RecognitionException re)
类似,但应如下所示:catch ( re:RecognitionException )
。
此外,Flash Builder在这里抱怨使用Array:
public override function get tokenNames():Array { return PhpParser.tokenNames; }
有人可以确认这些问题,并可能提供如何解决这些问题的提示吗?
UPDATE-1
快速浏览一下ANTLR v3.3的来源,发现了这个模板代码[第142行@ ActionScript.stg]:
catch ( re:RecognitionException )
因此,当前的3.3分支似乎知道正确的语法。
不幸的是,当前的ANTLRworks 1.4.2(包括3.3分支)失败了。
答案 0 :(得分:1)
ANTLR的项目负责人Terence Parr刚刚证实,ANTLRworks需要一个新的编译。感谢您的大力支持!