2022年实验1-3-《编译原理》词法分析程序设计方案.docx
《2022年实验1-3-《编译原理》词法分析程序设计方案.docx》由会员分享,可在线阅读,更多相关《2022年实验1-3-《编译原理》词法分析程序设计方案.docx(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品学习资源试验 1-3 编译原理 S 语言词法分析程序设计方案一、试验目的明白词法分析程序的两种设计方法之一:依据状态转换图直接编程的方式; 二、试验内容1依据状态转换图直接编程编写一个词法分析程序, 它从左到右逐个字符的对源程序进行扫描,产生一个个的单词的二元式,形成二元式记号流文件输出;在此,词法分析程序作为单独的一遍,如以下图所示;源程序词法分析程序二元式文件详细任务有:1组织源程序的输入2拼出单词并查找其类别编号,形成二元式输出,得到单词流文件3删除注释、空格和无用符号4发觉并定位词法错误,需要输出错误的位置在源程序中的第几行;将错误信息输出到屏幕上;5对于一般标识符和常量,分别建立
2、标识符表和常量表使用线性表储备 ,当遇到一个标识符或常量时,查找标识符表或常量表,假设存在,就返回位置,否就返回 0 并且填写符号表或常量表;标识符表结构:变量名,类型整型、实型、字符型 ,安排的数据区地址注:词法分析阶段只填写变量名,其它部分在语法分析、语义分析、代码生成等阶段逐步填入;常量表结构:常量名,常量值三、试验要求1. 能对任何 S 语言源程序进行分析在运行词法分析程序时,应当用问答形式输入要被分析的S 源语言程序的文件名,然后对该程序完成词法分析任务;2. 能检查并处理某些词法分析错误词法分析程序能给出的错误信息包括:总的出错个数, 每个错误所在的行号, 错误的编号及错误信息;本
3、试验要求处理以下两种错误编号分别为1, 2: 1:非法字符:单词表中不存在的字符处理为非法字符,处理方式是删除该字符,给出错误信息,“某某字符非法” ;2:源程序文件终止而注释未终止;注释格式为:/* */四、保留字和特别符号表单词代码123456789单词intcharfloatvoidconstforifelsethen单 词 助 记符intcharfloatvoidconstforifelsethen内码值-单词代码101112131415161718单词whileswitchbreakbeginend标识符数字包欢迎下载精品学习资源括整数和实数单 词 助记whileswitchbrea
4、kbeginendidnum符内码值-在符号表在常数表中的位置中的位置单词代码192021222324252627单词+-*/%单 词 助记+-*/%符内码值-单词代码28282930单词.=;单 词 助符记rlop;内码值.=-单词代码373839404142434445单词/=+=-=*=%=|&.=单 词 助记/=+=-=*=%=orandnot=符内码值-单词的构词规章: 字母 =A-Za-z数字 =0-9标识符 =字母 |_字母 |数字 *数字 =数字 数字 *. 数字 +| 四、 S 语言表达式和语句说明1. 算术表达式 :+、-、*、/、%2关系运算符: 、=、9. Error
5、函数:输出错误信息到屏幕10. 除此之外,仍可以设置查符号表,填写符号表等函数,同学可自行设计;试验中,可以将某些类型的单词识别过程利用DFA 算法实现, DFA 算法参考如下:DFA S=S0,MOVE,F,ALPHABET, ALLS /*S 为状态, 初值为 DFA 的初态,MOVE为状态转换矩阵, F为终态集, ALPHABET为字母表,其中的字母次序与MOVE中列标题的字母次序一样;ALLS 为状态集 */CharWordbuffer10= “” / 单词缓冲区置空Nextchar=getchar ; /读字符i=0 ;while nextchar! =NULL /NULL代表此类单
6、词 ifnextchar ! ALPHABET ERROR “非法字符” , return“非法字符” ;欢迎下载精品学习资源S=MOVESnextchar/下一状态if S=NULL return“不接受”; /下一状态为空,不能识别,单词错误wordbufferi=nextchar; / 储存单词符号i+ ; nextchar=getchar;Wordbufferi= 0 ;If S Freturn wordbuffer ;/接受Elsereturn “不接受”;六、试验过程说明1. 每人单独完成;2. 完成后,由 老师验收,并给出成果;3. 试验完成后,写出试验报告要求交打印稿;报告内容
7、要求如下:完成人:班级、学号、一、试验名称:简化S 语言词法分析器二、试验目的:通过手工编写简化析器的工作原理;三、试验内容:C 语言词法分析器,熟识并深化懂得编译程序词法分1依据保留字和特别符号表能区分出源文件中的保留字、一般标识符和特别符号,并能进行简洁的错误处理;2. 设计词法分析器模块调用结构图和各模块流程图;3. 程序源代码;4. 程序的执行结果:输入文件,输出结果文件及屏幕信息;四、试验中显现的问题及解决方法;五、体会、看法或建议;七、测试源程序例如:voidaa floatrate,circle; rate=3; circle=3.14*rate*rate;输出结果:1输出结果文
8、件:void,- id, 0,-,-,- float,-id,1 2标识符的符号表:欢迎下载精品学习资源aa ratecircleNamevalue01233Nametypeaddress0123453常数表:试验地点:教 10 五楼电脑学院软一机房试验时间 :第 4 周周二 3 单元、周四 1 单元、第五周周二3 单元八、试验代码#include #include #include #include#define MAX 10/ 保留字符号长度#define MAXSIZE 45/保留字和特别符号表长度#define NUM 30/ 标识符和常数的个数FILE *in,*out;/指向文件的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理 2022 实验 编译 原理 词法 分析 程序设计 方案
限制150内