简单的C语言解析器不编译linux机器

时间:2013-11-25 04:39:03

标签: c unix gcc yacc lex

我无法在编译时将所有源代码放在一起。我不知道我做错了什么,我在这里和那里遇到过小问题而且我已经解决了大部分问题(都是愚蠢的疏忽)但是现在我还面临另一个问题,也许有人在这里可以采取一看,告诉我我做错了什么:

我正在使用lex(flex)和yacc命令行实用程序编写一个小型C语言解析器程序。我正在进入运行Unix(Solaris 10)的SUN Oracle t4-2主框架。我从我写的2个文件开始:grammar.y和grammar.l

以下是我的行动的屏幕截图: enter image description here

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

运行flex grammar.l生成文件:lex.yy.c

然后我尝试使用gcc * .c -o test

进行编译

然后我得到屏幕截图中显示的错误。

请一个比我更聪明的人告诉我我做错了什么......

非常感谢任何帮助

1 个答案:

答案 0 :(得分:3)

错误消息告诉您已引用了两个未定义的函数yyerror()computSymbolIndex()

对于第一个,您需要提供该功能的定义。它不是由yacc提供的,但它并不难写。 (这里需要做的只是打印错误和exit(1)。)

对于第二个,你需要修正你的拼写错误。