我正在尝试在 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 上找到了一篇关于类似警告的文章:
使用 Antlr-3.5-complete.jar 生成 OracleSQL 语法的大量模板错误
(这是我发现的唯一一件事,我认为它可能对头文件没有做任何事情生成)
我将不胜感激,我想从很久以前为 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 //目标示例