山东科技大学编译原理课程设计

发布时间 : 星期三 文章山东科技大学编译原理课程设计更新完毕开始阅读

山东科技大学学生课程设计

语法分析之 LL1分析法实现 ........................................................................................ 19 一、设计目的 ............................................................................................................ 19 二、设计要求 ............................................................................................................ 19 三、设计说明 ............................................................................................................ 20 1. 需求分析: ....................................................................................................... 20 2. 概要设计 ........................................................................................................... 21 3. 详细设计 ........................................................................................................... 22 四、运行结果及分析 ................................................................................................ 23 1.测试数据 ............................................................................................................. 23 2.测试输出的结果 ................................................................................................. 23 3.设计和思考 ......................................................................................................... 23 五、总结 .................................................................................................................... 24

2

山东科技大学学生课程设计

词法分析之基于Lex实现词法分析

一、设计目的

通过编写并上机调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将其分解成各类单词的词法分析方法。

二、设计要求

编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。 并依次输出各个单词的内部编码及单词符号自身值。

(遇到错误时可显示“Error”,然后跳过错误部分继续显示)

三、设计说明 1. 需求分析

Lex输入文件由3个部分组成:定义集(definition),规则集(rule)和辅助程序集(auxiliary routine)或用户程序集(user routine)。这三个部分由位于新一行第一列的双百分号分开,因此,Lex输入文件的格式如下

{definitions} %%

{rules} %%

{auxiliary routines} 范围:

识别保留字:if、int、for、while、do、return等保留字类别码为1。

3

a) 输入及其范围

山东科技大学学生课程设计

其他的都识别为标识符;单词类别码为2。 常数为无符号整形数;单词类别码为3。

运算符包括:+、-、*、/、=、>、<、>=、<=、!= ;类别码为4。 分隔符包括:,、;、{、}、(、); 类别码为5。 错误字符 类别码为 6。

b) 输出形式

([数字],“单词“)数字代表所识别的单词所属的类型。

c) 程序功能

读取文件中的源程序,然后对源程序分析,输出分析结果。 d) 测试数据

将测试数据写在文本文件中,测试为程序的输入数据。

2. 概要设计

a) 数据类型的定义

//定义集,包括头文件和变量定义 %{

#include #include #include #include

int lineno=1;//定义行号 %}

//定义正则表达式

letter [A-Za-z] //字母 digit [0-9] //数字

4

山东科技大学学生课程设计

id ({letter}|[_])({letter}|{digit}|[_])* //开头为字母的标识符

error_id ({digit})+({letter})+ //开头为数字的错误标识符 num {digit}+ //数字集合 whitespace [ \\t]+ //空格 enter [\\n]+ //回车

//定义识别规则 %%

b) 主程序流程

5

联系合同范文客服:xxxxx#qq.com(#替换为@)