Tag: antlr3

在C中编译ANTLR 3语法

我一直在尝试学习ANTLR,并使用本教程(也在本问题中引用)使用C输出代码。 我成功地获得了ANTLR来生成词法分析器和解析器作为C源代码,但我无法在Mac OS X Snow Leopard(i686-apple-darwin10-gcc-4.2.1)上使用gcc进行编译。 下面是我尝试编译“SimpleCalcLexer.c”时的结果。 dyn-72-33-132-199:Desktop bf$ gcc -o lexer SimpleCalcLexer.c Undefined symbols: “_main”, referenced from: start in crt1.10.6.o “_antlr3LexerNewStream”, referenced from: _SimpleCalcLexerNewSSD in ccjXa6NU.o ld: symbol(s) not found collect2: ld returned 1 exit status SimpleCalcLexer.c文件在任何地方都没有引用“main”(也没有定义),但解析器确实定义了它,所以我尝试编译它: dyn-72-33-132-199:Desktop bf$ gcc -o parser SimpleCalcParser.c Undefined symbols: “_antlr3CommonTokenStreamSourceNew”, referenced from: _main in ccn8ZVhk.o “_antlr3ParserNewStream”, referenced from: […]

“FOLLOW_set_in_”…在生成的解析器中未定义

我已经为类似Java的DSL编写了一个语法。 虽然它仍然存在一些问题(它不能像我希望的那样识别所有输入),但最让我担心的是生成的C代码是不可编译的。 我使用AntlrWorks 1.5和Antlr 3.5(Antlr 4显然不支持C目标)。 问题在于表达规则。 我有规则prio14Expression到prio0Expression,它处理运算符优先级。 问题是优先级2,它评估前缀和后缀运算符: … prio3Expression: prio2Expression ((‘*’ | ‘/’ | ‘%’) prio2Expression)*; prio2Expression: (‘++’ | ‘–‘ | ‘!’ | ‘+’ | ‘-‘)* prio1Expression (‘++’ | ‘–‘)*; prio1Expression: prio0Expression ( (‘.’ prio0Expression) | (‘(‘ (expression (‘,’ expression)*)? ‘)’) | (‘[‘ expression (‘,’ expression)* ‘]’) )*; prio0Expression: /*(‘(‘) => */(‘(‘ expression […]

C目标运行时的简单ANTLR 3.4示例

有没有人知道(或有)一个简单的ANTLR 3.4示例main()函数用于C目标? 我试图在C或C ++中开始使用ANTLR,我看到的所有示例(包括这个 )都已过时,例如它们使用的函数不再存在。 似乎没有下载包本身的任何示例,Wiki上的示例已过时。