我在编译时无法将所有源代码放在一起。我不知道自己在做什么错,我到处都遇到了小问题,我已经解决了大多数问题(都是愚蠢的疏忽),但现在我又遇到了另一个问题,也许这里有人可以解决看看并告诉我我做错了什么:
我正在使用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)
。)
对于第二个,您将需要修正您的错字。