[英]How to include Yacc/Bison-Parser into own project?
我想为自己的项目使用yacc / bison解析器。 使用我自己的Makefile构建解析器时,一切正常。 我从http://ymorin.is-a-geek.org/projects/kconfig-frontends (只是解析器为/<path-to-kconfig>/libs/parser
。
现在,当将这些文件包含到Eclipse中的C ++项目中时,在点击make之后,由于语法错误,编译器在.y
文件处崩溃-无法读取.y-语法。 因此,我从构建过程中排除了解析器。
在回答Yacc和Lex包含混淆时 ,我读到只有.h文件必须包含在内,才能使用解析器的功能。
所以我所做的是:
void testout(char *txt) {printf(txt);}
void testout(char *txt);
创建了yconf.h void testout(char *txt);
主要,我想在其中调用该函数的样子:
#include "y.tab.h" #include "yconf.h" #include <stdio.h> extern "C"{ int main(int argc, char *argv[]) { char configIn[] = "test"; printf(configIn); testout(configIn); return 0; } }
错误
现在在编译时出现错误: undefined reference to 'testout(char*)'
。 但是Eclipse本身可以解析该功能-单击该功能时,yconf.h将打开。 这就是为什么我不知道问题出在哪里的原因。
Eclipse设置:
在/ project / properties / C / C ++ Build / Settings中,我将相同的include路径放置到gcc
和g++
的解析器源以及链接器中。 另外,我在此设置中将y.tab.h
和yconf.h
添加为“包含文件”
如果需要更多信息,请询问。
感谢您提供有关如何解决此问题的建议。 感谢您的支持
亲切的问候
好一个真正的刚需y.tab.h
和y.tab.c
。 使用此makefile创建的:
lex ./lconf.l
bison -d -y ./yconf.y
我的错误是:我使用C ++进行编程,并且在错误的位置输入了extern "C"
命令,该头文件需要声明为c格式。 这是正确的代码:
extern "C"{
#include "y.tab.h"
}
int main(int argc, char *argv[])
{
char configIn[] = "test";
testout(configIn);
return 0;
}
(TESTOUT是在y.tab.h / C的函数用一个简单printf
参数configIn的-执行“试验”打印时)。
BTW:我排除的解析器的所有源文件编译不过的y.tab.c
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.