欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
GNU bison
来自开放百科 - 灰狐
(重定向自GNU Bison)
您可以在Wikipedia上了解到此条目的英文信息 GNU bison Thanks, Wikipedia. |
GNU bison是一个自由软件,用于自动生成语法分析器程序,实际上可用于所有常见的操作系统。Bison把LALR形式的上下文无关文法描述转换为可做语法分析的C或C++程序。在新版本中,Bison增加了对GLR语法分析算法的支持。
GNU bison基本兼容Yacc,并做了一些改进。它一般与GNU Flex一起使用。
Examples
touch parse.y
%{ #include<stdio.h> %}
%token NUM %left '+' '-' %left '*' '/'
%start line
%%
line:
/* empty */ |line exp '\n' {printf("%d\n",$2);} | error '\n';
exp: exp '+' exp {$$ = $1 + $3;} | exp '*' exp {$$ = $1 * $3;} | exp '-' exp {$$ = $1 - $3;} | exp '/' exp { if ($3 == 0) $$ = 0; else $$ = $1/$3;} | NUM {$$ = $1;}; %%
yyerror() { printf("Error detected in parsing\n"); }
main() { yyparse(); }
bison parse.y
链接
分享您的观点