题目
编写LEX文件:一个能识别所有运算式中包含的符号:数字(0-9)+,变量(a-zA-Z)+,运算符:“+,-,*,/,(,)”。
如输入(a+10)*b,输出:
OPERATER:(
WORD:a
OPERATER:+
NUMBER:10
OPERATER:)
OPERATER:*
WORD:b
1.首先需要有一个flex.exe文件
文件下载地址:
2.在这个文件中写.l文件
/*hw1.l*/
%option main
DIGIT [0-9]+
WORD [a-zA-Z]+
OPT ("+"|"-"|"*"|"/"|"("|")")
%%
{DIGIT} {printf("NUMBER:%s\n",yytext);}
{WORD} {printf("WORD:%s\n",yytext);}
{OPT} {printf("OPERATER:%s\n",yytext);}
. {}
%%
3.win+r打开cmd命令
(1)进入flex.exe文件所在文件夹
命令框直接输入 E:(进入E盘)
然后使用cd命令进入该文件夹
(2)使用dir命令查看目录中的文件
确保有flex.exe和.l文件
4.生成lex.yy.c文件
在命令框中输入:flex homework1.l
返回文件夹中即可看到生成了lex.yy.c文件
5.生成lex.yy.exe文件
这里我们需要用编译器编译运行一下(我用的是Dev-C++,联想商店可下载)
(1)点击文件—>打开项目或文件
(2)选中lex.yy.c
根据刚刚的文件路径找到文件
(3)然后编译运行
(可以直接按f9)
(4)生成.exe文件
6.运行结果
(1)运行:输入 lex.yy
(2)输入想要判断的运算式
例:(a+10)*b
此题结束。
版权归原作者 A steria. 所有, 如有侵权,请联系我们删除。