2013-11-25 58 views
3

我在编译时将所有源代码放在一起时遇到了麻烦。我不知道我做错了什么,我一直在这里和那里遇到小问题,我已经解决了大部分问题(所有愚蠢的疏忽),但现在我还面临着另一个问题,也许这里有人可以采取一看,并告诉我我做错了什么:简单的C语言解析器没有编译linux机器

我正在写一个小型的C语言分析程序使用lex(flex)和yacc命令行工具。我正在使用运行Unix(Solaris 10)的Sun Oracle t4-2主框架进行SSH连接。我开始用2个文件我写道:grammar.y和grammar.l

这是我操作的屏幕截图: enter image description here

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

运行柔性grammar.l生成文件:lex.yy.c中

然后我尝试使用我得到中所示的错误GCC的* .c -o测试

然后编译屏幕截图。

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

任何帮助将非常感激

回答

3

错误消息告诉你,你已经提到两个功能,yyerror()computSymbolIndex(),你还没有定义。

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

对于第二个,你需要修复你的错字。

+1

在某些系统上,您可以通过使用'-ly'进行编译来获得默认'yyerror'。 – Gene

+0

yyerror包含在lex实用程序的库中,当运行程序lex或flex时,它应该不包括输出的flex.yy.c文件中的库定义?我的错字在哪里,我没有看到它 – mosawi

+0

哦,我的领主,我明白了!计算符号索引是错字... ComputeSymbolIndex – mosawi