Lex与Yacc学习(六)之lex & yacc (简单计算器程序) 运行
2015-01-22 09:36
399 查看
词法分析程序ch3-01.l
%{ #include "ch3-01.tab.h" extern int yylval; %} %% [0-9]+ { yylval = atoi(yytext); return NUMBER; } [ \t] ; /* ignore white space */ \n return 0; /* logical EOF */ . return yytext[0]; %%
语法分析程序ch3-01.y
%token NAME NUMBER %% statement: NAME '=' expression | expression { printf("= %d\n", $1); } ; expression: expression '+' NUMBER { $$ = $1 + $3; } | expression '-' NUMBER { $$ = $1 - $3; } | NUMBER { $$ = $1; } ; %% int main() { yyparse(); return 0; } int yyerror(char *s) { printf("%s/n",s); return 0; }
编译运行命令:
(1)首先,编译lex文件,生成lex.yy.c文件flex ch3-01.l
(2)其次,编译yacc文件,生成ch3-01.tab.h 与ch3-01.tab.c文件
bison -d ch3-01.y
(3)链接生成的.c 文件,并生成相应的可执行文件
gcc -o ch3-01 ch3-01.tab.c lex.yy.c -ly -lfl
(4)运行可执行文件,计算简单表达式
./ch3-01.exe
99+11
相关文章推荐
- Lex与Yacc学习(六)之lex & yacc (简单计算器程序) 运行
- Lex与Yacc学习(二)之第一个Lex程序
- LEX & YACC 写的一个表达式计算程序
- lex 和 yacc 学习笔记1
- lex 和 yacc 学习…
- Lex&yacc简单计算器
- lex 和 yacc 学习…
- 《疯狂Java讲义(第三版)》学习笔记之 —— 1.3 Java运行机制 && 1.5 第一个Java程序
- Lex与Yacc学习(二)之第一个Lex程序
- 创造新语言(2)——用Lex&Yacc构建简单的分析程序
- lex 和 yacc 学习…
- lex 和 yacc 学习…
- 编译原理学习笔记——Lex&YACC(一)
- dotnet学习笔记二 - 运行.net程序的秘密
- 升级IE弹出"以前的安装有尚未完成的操作,需要重新启动。建议在运行Internet Explorer安装程序之前重新启动计算机。现在安装程序将关闭"
- yacc和lex学习概括
- 与afreez一起学习DirectFB之:如何高效的运行DirectFB程序,即Directfbrc文件介绍
- 从lex&yacc说到编译器(3.范式文法)
- BT源代码学习心得(二):程序运行参数的获取
- 与afreez一起学习DirectFB之:编译运行第一个DirectFB程序