欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2/Agda, C++/Lisp/Haskell
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
链接
分享您的观点