基于 Flex 构造和手工构造的词法分析器

小飞猪

发布日期: 2020-11-17 15:23:13 浏览量: 81
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

构造词法分析器(基于 Flex 构造和手工构造)

作为编译原理的第一次上机实验的作业,Flex和手工构造词法分析器均为原创,且在CG平台上提交为满分。

词法分析器是编译中至关重要的一个组件,本篇博文主要实现两种不同的词法分析器,第一种是 基于 Flex 构造词法分析器 ,这种方式只需要使用 Flex 语法编写 Flex 文件,再将其编译为 C 文件,就可以进行词法分析的工作了,另一种就是 手工构造词法分析器 ,主要是先根据 C 语言的词法来设计 C 语言常见单词的正规文法或正规式,然后得到 NFA ,再确定化得到 DFA,之后根据 DFA 的转换矩阵或转换图,最后用 C++ 语言实现词法分析器。

基于Flex构造

  • 新建文本文档->重命名为dd.l->保存(dd可以改)

  • 输入代码

  • 新建一个文件夹->重命名为1->放入flex.exe,将dd.l也放进来,在文件夹中将dd.l拖到.exe上,即可自动生成lex.yy.c。之后通过运行 lex.yy.c 即可实现输入程序代码的词法分析工作

手工制造

对于输入的代码,ctrl+z表示输入停止。

我们的主要思想是,将输入的代码放到一个字符数组中去,然后先进行一遍预处理,处理掉注释和不合法的情况,并标记出每个字符的所在行。然后对字符数组进行操作,从头开始遍历,首先对检测是否为关键字,是否为标识符,再检测他是什么类型的即可。

两份代码的源码和实验报告的心得都在里面,希望大家多多支持。

上传的附件 cloud_download 1110.cpp ( 19.25kb, 1次下载 ) cloud_download lex.yy.c ( 54.77kb, 1次下载 ) cloud_download 新建文本文档.l ( 2.03kb, 1次下载 ) cloud_download 富婆速来滴滴.docx ( 113.29kb, 1次下载 )
error_outline 下载需要5点积分

发送私信

1
文章数
0
评论数
最近文章
eject