我无法在编译时将所有源代码放在一起。我不知道我做错了什么,我在这里和那里遇到过小问题而且我已经解决了大部分问题(都是愚蠢的疏忽)但是现在我还面临另一个问题,也许有人在这里可以采取一看,告诉我我做错了什么:
我正在使用lex(flex)和yacc命令行实用程序编写一个小型C语言解析器程序。我正在进入运行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
进行编译然后我得到屏幕截图中显示的错误。
请一个比我更聪明的人告诉我我做错了什么......
非常感谢任何帮助
答案 0 :(得分:3)
错误消息告诉您已引用了两个未定义的函数yyerror()
和computSymbolIndex()
。
对于第一个,您需要提供该功能的定义。它不是由yacc提供的,但它并不难写。 (这里需要做的只是打印错误和exit(1)
。)
对于第二个,你需要修正你的拼写错误。