我在编译时无法将所有源代码放在一起。我不知道我做错了什么,我在这里和那里遇到了小问题并且我已经解决了大部分问题(所有愚蠢的疏忽)但现在我面临另一个问题,也许这里有人可以接受看看并告诉我我做错了什么:
我正在使用 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)
。)
对于第二个,您需要更正错字。
关于c - 简单的C语言解析器不编译linux机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184853/