编译原理词法分析和语法分析 本资源摘要信息主要介绍了编译原理中的词法分析和语法分析过程,并提供了相关的源代码和实验设计。 一、实验目的 设计并调试一个词法分析程序,以加深对词法分析原理的理解。通过该实验,学生可以了解词法分析的基本思想和算法,并掌握词法分析程序的设计和实现。 二、实验要求 2.1 待分析的简单的词法 * 关键字:begin, if, then, while, do, end * 运算符和界符:=, +, -, *, /, <, <=, <> , >, >= , ; , ( , ) , # * 其他单词是标识符(ID)和整型常数(NUM),通过以下正规式定义: ID = letter (letter | digit)* NUM = digit digit* * 空格有空白、制表符和换行符组成。 2.2 各种单词符号对应的种别码 单词符号种别码单词符号种别码 bgin 1 If 2 Then 3 while 4 do 5 end 6 letter 10 digit 11 + 13 - 14 * 15 / 16 # 0 2.3 词法分析程序的功能 输入:所给文法的源程序字符串。 输出:二元组(syn, token 或 sum)构成的序列。 其中:syn 为单词种别码;token 为存放的单词自身字符串;sum 为整型常数。 例如,对源程序 begin x:=9: if x>9 then x:=2*x+1/3; end #的源文件,经过词法分析后输出如下序列: (1, begin) (10, x) (18, :=) (11, 9) (26, ;) (2, if)…… 三、词法分析程序的算法思想 算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。 3.1 主程序示意图 主程序示意图如图 3-1 所示。其中初始包括以下两个方面: ⑴ 关键字表的初值。关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。 3.2 扫描子程序的算法思想 扫描子程序主要部分流程如图 3-2 所示。首先设置 3 个变量:① token 用来存放构成单词符号的字符串;② sum 用来整型单词;③ syn 用来存放单词符号的种别码。 四、词法分析程序的 C 语言程序源代码 以下是词法分析程序的 C 语言程序源代码: ```c #include <stdio.h> #include <string.h> char prog[80], token[8], ch; int syn, p, m, n, sum; char *rwtab[6]={"begin","if","then","while","do","end"}; scaner() { // 扫描子程序的实现 } main() { p = 0; printf("\n please input a string(end with '#'):\n"); do { scanf("%c", &ch); prog[p++] = ch; } while (ch != '#'); p = 0; do { scaner(); switch (syn) { case 11: printf("( %-10d%5d )\n", sum, syn); break; case -1: printf("you have input a wrong string\n"); break; } } while (1); return 0; } ```
剩余21页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 高校毕业生就业信息-JAVA-基于springboot的高校毕业生就业信息管理系统(毕业论文)
- node-red-contrib-opcua-test.json
- 高校社团管理-JAVA-基于springBoot的高校社团管理系统的设计与实现(毕业论文)
- 基于pytorch实现的ghostnetv1、v2、v3对10种鸟类图像识别【完整代码+数据集】
- 医疗设备管理-JAVA-基于springboot的医疗设备管理系统设计与实现(毕业论文)
- 基于AT89C52单片机的6位电子密码锁设计-14.zip
- 解决用STM32CubeMX配置FreeRTOS时头文件丢失问题
- 古城景区-JAVA-基于Spring Boot的古城景区管理系统的设计与实现(毕业论文)
- 2024全国大学生软件测试大赛Web赛项-省赛真题
- 商用密码,我国商用密码行业发展介绍
- 交通旅游订票-JAVA-基于spring boot的交通旅游订票系统设计与实现(毕业论文)
- 商用密码法律法规及标准体系解读V1.8-240827
- 流浪动物救助-JAVA-基于spring boot的流浪动物救助系统的设计与实现(毕业论文)
- Hadoop与Spark集群搭建及中文字频统计与Titanic数据分类实战
- 中国飞行器设计大赛圆筒权重文件
- 学生成绩管理-JAVA-基于spring boot的软件学院学生成绩管理系统的设计与实现(毕业论文)