编译原理
Li_yy123
hi
展开
-
编译原理—Lex简单使用
flex的简单使用(1)将flex.exe和创建的text.lex放在同一文件夹下;(2)在DOS命令提示符下执行编译 flex text.lex 得到目标文件 lex.yy.c;(3)在VC或CB中运行lex,yy.c,产生可执行程序lex.yy.exe(4)运行可执行文件,执行其功能。例题:输入一个 C 源程序文件, 用 FLex 实现以下任务a) 添加行号。原创 2016-04-15 21:05:00 · 12824 阅读 · 3 评论 -
编译原理—递归下降分析
/*(1)E→TG(2)G→ATG(3)G→ε(4)T→FH(5)H→MFH(6)H→ε(7)F→i(8)A→+(9)A→-(10)M→*(11)M→/*/#include #include #include#includeusing namespace std;char a[50], b[50], d[200], e[10];char ch;int n1,原创 2016-06-15 14:51:05 · 4122 阅读 · 0 评论 -
编译原理—Lex和Bison实现计算器
calc.lex文件%{ /* * 一个简单计算器的Lex词法文件 */ #include #include void yyerror(char*); /* #include "calc.tab.h" */%}%% /* a-z为变量 */ [a-z] { yylval =原创 2016-04-20 14:39:11 · 3957 阅读 · 0 评论 -
编译原理—中缀转后缀
zh.lex文件%{ /* * 输入中缀表达式,输出后缀表达式 */ #include #include int yyerror(char*);%}%%[0-9]+ { yylval=atoi(yytext); return INTEGER; }[+*\n] {原创 2016-04-20 14:51:44 · 2355 阅读 · 1 评论 -
编译原理—二进制转十进制
Lex文件%{ /* * 输入二进制数,输出十进制数 */%}%%1 { yylval.v=1; return INT; }0 { yylval.v=0; return INT; }[\.\n] {return *yytext;}%%int yywrap(void){ return 1;原创 2016-04-20 14:56:49 · 2544 阅读 · 0 评论 -
编译原理—括号的对数
.lex文件%{ /* * 输入一符号串,若合法,则输出括号的对数 */ #include void yyerror(char*);%}%%[()\n] { return *yytext; }. {return a;}%%int yywrap(void){ return 1;}.y文件原创 2016-04-20 14:59:22 · 1200 阅读 · 1 评论 -
编译原理—判断回文
pal.lex%{ /* * 输入一符号串,判断是否为回文(顺读和倒读都一样)。 */ #include #include #include #include int yyerror(char*);%}%%[a-zA-Z]+ { yylval = yytext;原创 2016-04-20 15:00:40 · 1206 阅读 · 1 评论