我试了几个。谷歌只有几个关于re2c + lemon的教程 目前,对于所有示例,我都会遇到类似的错误:
In file included from main.cpp:2:0:
parser.y:44:5: error: ‘yygotominor’ was not declared in this scope
A.int_value = B.int_value * C.int_value;
^
In file included from main.cpp:2:0:
parser.c:770:16: error: ‘YY_MAX_SHIFTREDUCE’ was not declared in this scope
if( yyact <= YY_MAX_SHIFTREDUCE ){
^
parser.c:771:15: error: ‘YY_MAX_SHIFT’ was not declared in this scope
if( yyact>YY_MAX_SHIFT ) yyact += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE;
^
它在哪里宣布?
PS:不要发布10条旧文章(即使没有代码或者代码现在无法编译)。如果可以 - 在这里写一个例子。如果不是 - 请不要发布Google链接。
答案 0 :(得分:3)
本教程适合我:
获取re2c(有关详细信息,请参阅re2c安装页面http://re2c.org/install/install.html)。
获取柠檬:下载tarball wget http://prdownloads.sourceforge.net/souptonuts/lemon_examples.tar.gz
,提取并构建(我必须在#include <stdlib.h>
)的许多示例中添加malloc
。
克隆github回购https://github.com/tokuhirom/re2c-lemon-tutorial:git clone https://github.com/tokuhirom/re2c-lemon-tutorial.git
修补re2c-lemon-tutorial / Makefile以查找柠檬和re2c(如果需要)。
make
,./mycalc
并享受(点击Ctrl+D
停止并发出结果)。
re2c网站上的更多re2c示例:http://re2c.org,柠檬tarball中的更多柠檬示例。