欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
GNU bison
来自开放百科 - 灰狐
(版本间的差异)
小 |
|||
(未显示1个用户的5个中间版本) | |||
第1行: | 第1行: | ||
− | + | {{SeeWikipedia}} | |
− | + | GNU bison是一个自由软件,用于自动生成语法分析器程序,实际上可用于所有常见的操作系统。Bison把LALR形式的上下文无关文法描述转换为可做语法分析的C或C++程序。在新版本中,Bison增加了对GLR语法分析算法的支持。 | |
− | + | GNU bison基本兼容[[Yacc]],并做了一些改进。它一般与[[GNU Flex]]一起使用。 | |
==Examples== | ==Examples== | ||
− | + | touch parse.y | |
− | + | ||
%{ | %{ | ||
#include<stdio.h> | #include<stdio.h> | ||
第19行: | 第18行: | ||
%% | %% | ||
− | + | line: | |
− | + | /* empty */ | |
− | + | ||
|line exp '\n' {printf("%d\n",$2);} | |line exp '\n' {printf("%d\n",$2);} | ||
| error '\n'; | | error '\n'; | ||
第44行: | 第42行: | ||
yyparse(); | yyparse(); | ||
} | } | ||
+ | bison parse.y | ||
+ | |||
+ | ==链接== | ||
+ | *[http://www.gnu.org/software/bison/ GNU bison主页] | ||
− | + | [[category:GNU]] | |
− | [[ | + |
2023年6月27日 (二) 04:50的最后版本
您可以在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
[编辑] 链接
分享您的观点