2014-03-28 43 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沒有它的工作,但我想這是另一個不同的問題。