目录
1.题目
编写LEX文件:一个能识别所有运算式中包含的符号:数字(0-9)+,变量(a-zA-Z)+,运算符:“+,-,*,/,(,)”。
如输入(a+10)*b,输出:
OPERATER:(
WORD:a
OPERATER:+
NUMBER:10
OPERATER:)
OPERATER:*
WORD:b
2.flex与bison的下载安装
(1)文件获取
途径一:该文章绑定文件
途径二:文件下载地址如下
链接:https://pan.baidu.com/s/1GWCSWVex932zWPkdrV89_g?pwd=link
提取码:link
途径三:加qq群935465933领取
群密码:link
没有解压缩软件的朋友可以在群内自行下载
(2)安装
bison安装
flex安装
以上两款软件的安装流程都没有什么需要特别注意的点,大家自行安装即可。(建议放在自己容易找到的文件夹中)
bison我们在后续的学习中会用到,先下载下来不亏;
下面我们进入flex安装后bin目录,后续操作都将在这里进行。
3. 编写.l文件
首先在此目录下新建一个文本文件,然后重命名,把他改为homework1.l
ps:不会显示,修改文件后缀的朋友可以搜索(怎么显示文件后缀),网上教程很多,在此不过多阐述
在此,我们右键.l文件,选择打开方式,用记事本或者Notepad打开,输入下列代码即可
ps:这里的END是便于大家作业要求输出学号用的,可以自行更改输出的语句
%option main
/*定义数字类型NUM*/
NUM [0-9]+
/*定义字母类型WORD*/
WORD [a-zA-Z]+
/*定义字符类型OPT*/
OPT ("+"|"-"|"*"|"/"|"("|")")
/*结束输出自己的信息,不需要可以连同第14行删除*/
END("\n")
%%
{NUM} {printf("NUMBER:%s\n",yytext);}
{WORD} {printf("WORD:%s\n",yytext);}
{OPT} {printf("OPERATER:%s\n",yytext);}
{END} {printf("\n程序运行结束\n",yytext);}
. {}
%%
保存后退即可出
4.生成lex.yy.c文件,以及编译操作
(1)打开命令窗口
接着在该目录下打开命令窗口
点击,输入cmd,回车即可
(2)flex指令生成lex.yy.c文件
dir
首先查看目录,确保我们所在文件位置与.l文件,flex文件一致
然后用flex指令生成lex.yy.c文件
flex homework1.l
这样便是成功了,如果出错检查空格等错误。
(3)编译lex.yy.c文件
回到目录,这时我们看到文件里多了lex.yy.c文件
右键点击,选择打开方式
点击编译,弹出命令框,然后输入即可
输入题目所要求式子即可