2013-11-25 60 views
3

我在編譯時將所有源代碼放在一起時遇到了麻煩。我不知道我做錯了什麼,我一直在這裏和那裏遇到小問題,我已經解決了大部分問題(所有愚蠢的疏忽),但現在我還面臨着另一個問題,也許這裏有人可以採取一看,並告訴我我做錯了什麼:簡單的C語言解析器沒有編譯linux機器

我正在寫一個小型的C語言分析程序使用lex(flex)和yacc命令行工具。我正在使用運行Unix(Solaris 10)的Sun Oracle t4-2主框架進行SSH連接。我開始用2個文件我寫道:grammar.y和grammar.l

這是我操作的屏幕截圖: enter image description here

運行的yacc -d grammar.y生成文件:y.tab.h和y.tab.c的

運行柔性grammar.l生成文件:lex.yy.c中

然後我嘗試使用我得到中所示的錯誤GCC的* .c -o測試

然後編譯屏幕截圖。

請別人比我,告訴我什麼,我做錯了聰明......

任何幫助將非常感激

回答

3

錯誤消息告訴你,你已經提到兩個功能,yyerror()computSymbolIndex(),你還沒有定義。

對於第一個,您需要提供該函數的定義。它不是由yacc提供的,但它不會很難寫。 (這裏需要做的只是打印錯誤和exit(1)。)

對於第二個,你需要修復你的錯字。

+1

在某些系統上,您可以通過使用'-ly'進行編譯來獲得默認'yyerror'。 – Gene

+0

yyerror包含在lex實用程序的庫中,當運行程序lex或flex時,它應該不包括輸出的flex.yy.c文件中的庫定義?我的錯字在哪裏,我沒有看到它 – mosawi

+0

哦,我的領主,我明白了!計算符號索引是錯字... ComputeSymbolIndex – mosawi