文档详情

编译原理实验一词法分析实验报告.pdf

发布:2025-01-04约9.43千字共7页下载文档
文本预览下载声明

臣心一片磁针石,不指南方不肯休。——文天祥

专题1_词法分析程序构造原理与实现

李若森计科1301

一、程序功能描述

[功能]:

完成下述正则文法所描述的C语言子集单词符号的词法分析程序。

[要求]:

(1)给出各单词符号的类别编码。

(2)能发现输入串的错误。

(3)将分析所得二元序列输出到中间文件中。

[文法]:

标识符→c|c余留标识符

余留标识符→d|c

无符号数→d余留无符号数|.小数部分|d

余留无符号数→d余留无符号数|.十进小数|(E|e)指数部分|.|d

十进小数→(E|e)指数部分|d十进小数|d

小数部分→d十进小数|d

指数部分→d余留指数|(+|-)整指数|d

整指数→d余留整指数|d

余留整指数→d余留整指数|d

算数运算符→+|-|*|/|++|--

关系运算符→||==|=|=|!=

逻辑运算符→

位操作运算符→|

赋值运算符→=|+=|-=|*=|/=|%=

特殊运算符→

分隔符→;

保留字:voidintfloatdoubleifelsefordowhile

[说明]:

(1)该语言对大小写不敏感

(2)c代表字母a-zA-Z,d代表数字0-9。

(3)“/*..*/”以及“//”为程序注释部分。

(4)文法中‘’为转义字符

臣心一片磁针石,不指南方不肯休。——文天祥

二、主要数据结构描述

pairint,string:

用pairint,string来存储单个二元组。其中第一个元素为类型号,第二个为

元素的值。当类型号小于40时代表程序分界符,第二个元素不存储有效信息,用

“-”代替;类型号为40时是标识符,第二个元素存储标识符字符串;类型号为41

时代表实数,第二个元素存储的是该实数的二进制值。

vector:

vector是C++中的动态数组,用来存储每一行的二元组。

三、程序结构描述

设计方法:

状态转换图:(DFAM)

*=/%!=

01

=

2

3=15

4

显示全部
相似文档