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

标签 c unix gcc yacc lex

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

我正在使用 lex (flex) 和 yacc 命令行实用程序编写一个小型 C 语言解析器程序。我正在通过 SSH 连接到运行 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 进行编译

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

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

任何帮助将不胜感激

最佳答案

错误消息告诉您您引用了两个函数,yyerror()computSymbolIndex(),您尚未定义它们。

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

对于第二个,您需要更正错字。

关于c - 简单的C语言解析器不编译linux机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20184853/

相关文章:

c - macOS 上的 Libsodium,x86_64 的 undefined symbol

比较同一函数的两个 C 实现

c - 无法读取服务器发送的消息

java - java中交互式外部进程的输入和输出

bash - 在 Bash 中减去两个变量

c++ - 理解 char * 到 int * 的转换及其含义

unix - 如何在 bash 中每隔一行的内容打印附加字符串?

c - 是否可以使用预处理器对数组进行排序?

c - GCC 无法编译 libcurl 示例 : ‘CURLINFO_TOTAL_TIME_T’ undeclared

gcc - 如何从 .la 文件获取 .so 文件?