一开始看到这个作业的时候真的很懵圈,因为感觉每个字都认识但合起来就不知道到底是什么意思。开始的时候先去官网看了flex的介绍,官网上推荐和visual studio一起用,然后又去下载了vs。搞了半天没搞懂结果发现FLEX用起来其实超级简单。
方法一:直接长按鼠标左键将*.l文件(用LEX文法编写的程序)拖进flex.exe。
方法二:将你的flex.exe所在的路径添加到系统的环境变量中,在cmd窗口中通过输入 flex *.l来编译*.l中的文法。
通过FLEX编译后会生成一个lex.yy.c文件可以直接用C语言编写工具打开编译运行。
*.l文件内容如下,可以实现如下功能:
1.识别关键字,标识符,有符号数字(整数,小数,指数),类型
2.可以输出每个单词所在的行数
3.可以识别%d、%f等和地址符
4.可以输出报错处理。例如float=10e是错误的语法,当文本文档出现例子中的语句时程序报错。
%{
#include <stdio.h>
#include <stdlib.h>
int count = 0;
int line = 1;
int tot=0;
char s[10000][90],ans;
%}
delim [" " \t]
whitespace {
delim}+
change [\n]+
OPT \+|-|\*|\/|\+=|>=|<=|#|=
type [iI][nN][tT]|[dD][oO][uU][bB][lL][eE]|[cC][hH][aA][rR]|[vV][oO][Ii][dD]
integer [-\+]?[0-9]+
keyword [mM][aA][iI][nN]|[iI][fF]|[eE][lL]