|
最近刚开始学习lex&yacc,碰到yacc编译时问题,请兄弟们帮看一下:
这是一个很简单的计算器例子。
temp.l(lex file):
- %{
- #include "y.tab.h"
- extern int yylval;
- %}
- %%
- [0-9]+ { yylval = atoi(yytext); return NUMBER; }
- [ \t] ; /* ignore white space */
- \n return 0; /* logical EOF */
- . return yytext[0];
- %%
复制代码
----------------------
temp.y(yacc file):
- %token NAME NUMBER
- %%
- statement: NAME '=' expression
- | expression { printf("= %d\n", $1); }
- ;
- expression: expression '+' NUMBER { $$ = $1 + $3; }
- | expression '-' NUMBER { $$ = $1 - $3; }
- | NUMBER { $$ = $1; }
- ;
复制代码
编译过程如下:
lex temp.l
yacc -d temp.y
gcc -o mycal lex.yy.c y.tab.c -ll [-ly]
我想问的问题很简单:
请问:GNU下的yacc(bison)它的库名字是叫做什么?因为在gcc那一行中如果加入[-ly]就会报错;如果不加也会报yyerror未定义,我自已定义一个yyerror后编译通过,但运行后输入任何表达式(如:1+1)不会显示结果。
请指教一下。谢谢!! |
|