山东科技大学学生课程设计
语法分析之 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
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
相关推荐: