为什么不使用ANTLR生成c头文件1.5?

时间:2013-07-05 10:58:05

标签: c antlr3 antlrworks

我试图在Windows上使用antlrworks 1.5(ANTLR 3.5)从ANTLR.grammar文件生成c代码,但它不会生成任何头文件,例如对于sample.g它会生成:
sample.tokens
sampleLexer.c
sampleParser.c

但不是任何头文件,我无法弄清楚原因。

我现在使用的语法,例如:

grammar sample;

options 
{
language    = C;
}

rule1:
'ABC'   
;

我也收到警告:

[12:39:44] warning(24):  template error: context [/outputFile /parser] 1:1 could not pass through undefined attribute filterMode
[12:39:44] warning(24):  template error: context [/outputFile /parser /genericParser /_sub721 /ruleAttributeScopeFuncMacro] 1:4 no such property or can't access: null.attributes
[12:39:44] warning(24):  template error: context [/outputFile /parser /genericParser] 155:5 no such property or can't access: null.apifuncs
[12:39:44] warning(24):  template error: context [/outputFile /parser /genericParser /rule /ruleDeclarations] 4:1 no such property or can't access: null.attributes
[12:39:44] warning(24):  template error: context [/outputFile /parser /genericParser /rule /ruleInitializations] 8:1 no such property or can't access: null.attributes
[12:39:44] warning(24):  template error: context [/outputFile /lexer /lexerRule /ruleDeclarations] 4:1 no such property or can't access: null.attributes

我在stackoverflow上找到一篇关于类似警告的文章:
numerous template errors generating OracleSQL grammar using Antlr-3.5-complete.jar
(这是我发现的唯一一件事,我认为它可能没有做任何关于未生成头文件的事情)

我很感激任何帮助,我想从我很久以前为java做过的一些sql语法为我的c ++项目生成一些AST树,但我坚持这个有趣的问题。

注意:

我还检查了所有这些文章:

http://www.antlr.org/wiki/display/ANTLR3/FAQ+-+Getting+Started //开始指南 http://www.antlr.org/wiki/pages/viewpage.action?pageId=728 //指导如何安装ANTLR (虽然我使用antlrworks,所以我真的不需要任何其他安装) http://www.antlr.org/wiki/pages/viewpage.action?pageId=29130826 // CplusTARGET(它不支持AST树,我在stackoverflow上读过它,这就是为什么我现在正在尝试c目标) http://www.antlr.org/wiki/display/ANTLR3/Using+the+ANTLR3+C+Target // C TARGET https://github.com/antlr/examples-v3 //目标示例

2 个答案:

答案 0 :(得分:1)

这可能是ANTLRWorks 1.5.1已经解决的错误的副作用(即将在下一周内发布)。

https://github.com/antlr/antlrworks/pull/9

答案 1 :(得分:0)

我在1.5.0遇到了同样的问题 使用1.5.2解决了这个问题。您可以在此处下载http://www.antlr3.org/works/