bison和flex的例子
发布时间:2020-12-15 04:48:05 所属栏目:百科 来源:网络整理
导读:parser.l: %{ #include stdio.h int yylex(void); void yyerror(char *);%}%token INTEGER%%program: program expr 'n' { printf("%dn",$2); } | ;expr: INTEGER { $$ = $1; } | expr '+' expr { $$ = $1 + $3; } | expr '-' expr { $$ = $1 - $3; } ;%%vo
parser.l: %{ #include <stdio.h> int yylex(void); void yyerror(char *); %} %token INTEGER %% program: program expr 'n' { printf("%dn",$2); } | ; expr: INTEGER { $$ = $1; } | expr '+' expr { $$ = $1 + $3; } | expr '-' expr { $$ = $1 - $3; } ; %% void yyerror(char *s) { fprintf(stderr,"%sn",s); } int main(void) { yyparse(); return 0; }scanner.l %{ #include "y.tab.h" #include <stdlib.h> void yyerror(char *); %} %% [0-9]+ { yylval = atoi(yytext); return INTEGER; } [-+n] return *yytext; [ t] ; /* skip whitespace */ . yyerror("invalid character"); %% 这个编译器实现简单的加减,不支持括号。 编译: bison -y -d parser.l 以下是运行例: [jialiang@host tmp]$ ./plusminis.exe d refs: http://epaperpress.com/lexandyacc/pry1.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 为什么不能通过在aspx文件中调用方法来设置asp:Labe
- 使用Flexible实现手淘H5页面的终端适配的注意事项
- JavaScript、C# URL编码、解码总结
- React Native 入门(三) - 给 Android 开发者的学习建议
- swift – Xcode 8 ios 10 Simulator,是否可以将推送通知发送
- flex – Date to String < - > String to Date
- 基于STM32 8通道ADC采样实现源代码(转) 以后设计参考使用
- ios – 打开sqlite数据库
- ORACLE ADF11g: 清空TABLE选中的行
- 【Ogre引擎架构-第二讲】 深入OgreXmlConverter解析Sinbad.