我在编译时无法将所有源代码放在一起。我不知道自己在做什么错,我到处都遇到了小问题,我已经解决了大多数问题(都是愚蠢的疏忽),但现在我又遇到了另一个问题,也许这里有人可以解决看看并告诉我我做错了什么:

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

这是我的操作的屏幕截图:


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

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

然后我尝试使用gcc * .c -o test进行编译

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

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

任何帮助都感激不尽

最佳答案

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

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

对于第二个,您将需要修正您的错字。

08-15 22:42