2014-03-28 41 views
1

我,包括我的C代码的两个diferent法解析器所以包括它定义的前缀,第二个:当我结合这一个在全球proyect它编译没有法前缀未定义的符号yyparse

%option prefix="prep" 

错误,但在执行时,如果我尝试调用prepparse(原yyparse)我得到这个错误:

undefined symbol: prepparse 

我曾尝试包括外部参考(不太清楚,如果这是正确的):

extern int prepparse(void); 

和定义它在莱克斯头:

#define yyparse prepparse 

但我仍然得到同样的错误。

任何想法我做错了什么?

+0

而你编译'prep.lex.c'而不是'yy.lex.c'(至少这是使用'flex -Pprep'时的事情的flex方式)? – Jens

+0

我正在编译lex.prep.c和lex.yy.c,因为它们在不同的阶段被调用,首先prepparse()用于预处理,然后用于yyparse进行权威性的解析。 – jordi

+0

刚刚编译,或两者都链接到可执行文件? – vonbrand

回答

0

我想我明白了。我发现我忽略了一个重要的信息。因为我只想修改一些令牌,而不是定义一个完整的语言(它只是预先准备好的),所以我没有定义一个Yacc文件,所以我实际上不是一个解析器,而是一个Lexer,我不得不打电话。所以这个命令不是预先准备好的,而是预先的。

我stil没有它的工作,但我想这是另一个不同的问题。