word文档下载后可任意复制编辑课程实验报告课程名称:编译原理专业班级:学号:姓名:指导教师:报告日期:.importjava.awt.importjava.awt.event.importjavax.swing.importjavax.swing.table.DefaultTableModelim
语法分析Tag内容描述:
1、实验5 语法分析程序的设计(2) 一、实验目的 通过设计、编制、调试一个典型的语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析,进一步掌握常用的语法分析中算法优先分析方法。
二、实验内容 设计一个文法的算法优先分析程序,判断特定表达式的正确性。
三、实验要求 1、给出文法如下: GE E-T|E+T; T-F|T*F; F-i|(E); 可以构造算符优先表如下: + 。
2、 目 录实验一 词法分析31 实验概述32 系统分析43 系统设计53.1词法分析DFA53.2系统流程图64 系统实现74.1 Head.h文件74.2 Main.c文件95 系统评价195.1关键字分析195.2标识符分析205.3常量分析205.4界符分析205.5运算符分析215.6其他字符分析215.7错误记录225.8完整词法分析输出22实验二 语法分析241 问题描述242 算法和数据结构设计243 C语言程序实现254 程序测试415 实验总结及心得体会44实验一 词法分析1 实验概述此次实验要实现词法分析器,要求输入单词序列,输出是别的单词的二元组序列。
选择计算机高级程序语言比如C语言,运用恰当的词法分析技术线路,设计和实现其对应的词法分析器。
建议编程语言,选择计算机程序设计课程所采。
3、e implements ActionListener /* * */private static final long serialVersionUID = 1L;JTextField tf1;JTextField tf2;JLabel l;JButton b0;JPanel p1, p2, p3;JTextArea t1, t2, t3;JButton b1, b2, b3;JLabel l0, l1, l2, l3, l4;JTable table;Statement sta;Connection conn;ResultSet rs;DefaultTableModel dtm;String Vn = null;Vector P = null;int firstComplete = null;/ 存储已判断过first的数据char first = null;/ 存储最后first结果int f。
4、语(即定语)和副词性附加语(即状语和补语)。
这六种成分分为三个级别:主语、谓语(或述语)是主要成分,宾语、补足语是连带成分,形容词附加语和副词性附加语是附加成分;3作为句子成分的只能是词;4分析时,先找出全句的中心词作为主语和谓语,让其他成分分别依附于它们;5分析步骤是,先分清句子的主要成分,再决定有无连带成分,最后指出附加成分。
标记:一般用来分隔主语部分和谓语部分,用标注主语,用标注谓语,用标注宾语,用()标注定语,用 标注状语,用标注补语。
作用:因其清晰明了得显示了句子的主干,可以一下子把握住一个句子的脉络,适合于中小学语文教学,对于推动汉语教学语法的发展作出了很大贡献。
还可以分化一些歧义句式。
比如:我们五个人一组。
(1)我们五个人一组。
(2)我们五个人一组。
总结:中心词分析法可以分化一些。
5、igit * 单词符号及其种别码: 单词符号 种别码 单词符号 种别码 begin 1 : 17 if 2 := 18 then 3 21 do 5 23 letter(letter| digit)* 10 = 24 digit digit * 11 = 25 - 13 ; 26 + 14 ) 27 * 15 ( 28 / 16 # 0 2、待分析的简单语言的语法 用扩充的 BNF表示如下: ( 1) : =beginend ( 2) : =; ( 3) : = ( 4) : =ID: = ( 5) : =+|- ( 6) : =*|/ ( 7) : =ID| NUM|() 3、实验要求说明 输入单词串,以“ #”结束,如果是文法正确的句子,则输出成功信息,打印“ success”,否则输出“ error”。
三、完整源程序代码 #include #include #include using namespace std; char prog80;/缓冲区 int p=0;/缓冲区 prog的指针 char token8;/单词 int m=0。
6、本原理概述 3 2.1 基本知识 . 3 2.2 LL(1)文法的概念 . 3 2.3 预测分析程序 4 第 3 章 软件设计与实现 . 5 3.1 界面设计 . 5 3.2 核心算法的实现 . 7 3.2.1 FIRST 集合求解算法实现 7 3.2.2 FOLLOW 集合求解算法实现 8 3.2.3 SELECT 集合求解算法实现 . 9 3.2.4 LL(1)文法的判定实现 9 3.2.5 语法正确性判断实现 . 10 3.2.6 预测分析表构造和分析过程实现 10 3.3 相关类的介绍 11 第 4 章 系统的运行与测试 12 4.1 界面的运行效果 . 12 4.2 系统的测试 . 14 结 论 17 参考文献 . 18 蓝天工作室 -为您提供最优秀的计算机毕业设计论文解决方案 客服 QQ:599057179 第 I 页 摘 要 自顶而下语法分析是编译原理课程中的一个核心 理论 , 由于理论的抽象性,常规的教学手段很 难 收到理想的教学 效果 , 而教学辅助软件能以更形象化的方式把内容表达出来,因此 教学辅助软件的开发 十分必要。
本论 文 以 介。
7、递归子程序法LL分析法,自顶向下分析算法的基本思想为:,+,自底向上分析算法的基本思想为:,主要问题: 句柄的识别问题,主要方法:算符优先分析法LR分析法,4.2 自顶向下分析,4.2.1 自顶向下分析的一般过程,可以通过一例子来说明语法分析过程,给定符号串S,若预测是某一语法成分,则可根据该 语法成分的文法,设法为S构造一棵语法树, 若成功,则S最终被识别为某一语法成分,即SL(GZ),其中GZ为某语法成分的文法 若不成功, 则 SL(GZ),例:,S = cad GZ:Z=cAdA=ab|a 求解 SL(GZ) ?,分析过程是设法建立一 棵语法树,使语法树的末端结 点与给定符号串相匹配。
,2. 用Z的右部符号串去匹配输入串,完成一步推导ZcAd 检查, c-c匹配A是非终结符,将匹配任务交给A,3. 选用A的右部符号串匹配输入串A有两个右部,选第一个,完成进一步推导Aab 检查,a-a匹配,b-d不匹配(失败) 但是还不能冒然宣布SL(GZ),4. 回溯 即砍掉A的子树改选A的第二右部,Aa 检查 a-a匹配d-d匹配,建立语法树,。
8、构造文法每个非终结符的 FIRST 和FOLLOW 集合,然后根据 FIRST 和 FOLLOW 集合构造 LL(1)分析表,最后利用分析表,根据 LL(1)语法分析构造一个分析器。
LL(1)的语法分析程序包含了三个部分,总控程序,预测分析表函数,先进先出的语法分析栈,本程序也是采用了同样的方法进行语法分析,该程序是采用了 C+语言来编写,其逻辑结构图如下:LL(1)预测分析程序的总控程序在任何时候都是按 STACK 栈顶符号 X 和当前的输入符号 a 做哪种过程的。
对于任何(X ,a) ,总控程序每次都执行下述三种可能的动作之一:()若 X = a =#,则宣布分析成功,停止分析过程。
()若 X = a #,则把 X 从 STACK 栈顶弹出,让 a 指向下一个输入符号。
()若 X 是一个非终结符,则查看预测分析表 M。
若 MA,a中存放着关于 X 的一个产生式,那么,首先把 X 弹出 STACK 栈顶,然后,把产生式的右部符号串按反序一一弹出 STACK 栈(若右部符号为 ,则不推什么东西进 STACK 栈) 。
若 MA,a 中存放着“出错标志”,则调用出。
9、define SIGN_RESERVE_ERR 5 #define NO_PARA_ERR 6 /*types 是支持类型的集合 */ typedef enum integer types; /*记录变量信息的结构体 */ typedef struct char vname17; char vproc17; bool vkind; types vtype; int vlev; int vadr; varRecord; /*记录过程信息的结构体 */ typedef struct char pname17; types ptype; int plev; int varNum; int fadr; int ladr; int parameter; bool parameterIsDefined; proRecord; /*文法产生式如下 * A:程序 A-B B:分程序 B-begin C;M end C:说明与句表 C-DC C-;DC| D:说明语句 D-E|J E:变量说明 。
10、n“,“while“,“do“,“endfunc“; char tokenMAXN,sMAXN; char ch; bool is_letter(char c) return c=a if(sp+1=) syn=24; tokenlen+=sp+1; p+; else syn=23; else if(ch=) len=0,tokenlen+=ch; if(sp+1=) syn=25; tokenlen+=sp+1; p+; else syn=18; else if(ch=!) len=0,tokenlen+=ch; word文档 可自由复制编辑 if(sp+1=) syn=22; tokenlen+=sp+1; p+; else syn=-1; else if(ch=+) if(check_behind_。
11、重要主题,包括词法分析、语法分析、语法制导定义和语法制导翻译、运行时刻环境、目标代码生成、代码优化技术、并行性检测以及过程间分析技。
编译原理蕴涵着计算机学科中解决问题的思路、形式化问题和解决问题的方法,对应用软件和系统软件的设计与开发有一定的启发和指导作用,编译程序构造的原理和技术在软件工程、语言转换等许多领域中有着广泛应用。
语法分析是编译程序的核心部分。
语法分析的作用是识别由词法分析给出的单词符号序列是否是给定文法的正确句子,目前语法分析常用的方法有自顶向下分析和自顶向上分析两大类。
自顶向上分析包括确定分析和不确定分析,自顶向上分析又包括算符优先分析和LR分析。
鉴于此,运用这些分析方法构造一个简单的分析程序是很有实践意义的。
李亚龙LR1语法分析构造器的设计2目录编译原理课程设计任务书3第1章概述511背景512目的513软件定义514开发环境5第2章需求分析621问题陈述622需完成的功能6第3章逻辑设计731模块设计7311LR(1)项目集规范族的构造算法8312LR(1)分析表的构造算法832流程图9第4章总体设计1541构造项目集规范族模块1542构造预测分析表模块1543分析。
12、架,本实验实现扫描处理和语法分析程序(图中粗黑部分)。
21、扫描程序SCANNER部分211系统设计思想设计思想根据DFA图用SWITCHCASE结构实现状态转换。
惯用词法打开源代码文件SOURCETXT扫描处理(词法分析)语法分析程序语义分析程序源代码优化程序代码生成器目标代码优化程序目标代码记号语法树注释树中间代码目标代码记号表错误处理器文字表WORD文档可自由复制编辑语言的关键字ELSEIFINTRETURNVOIDWHILE专用符号/,/其他标记是ID和NUM,通过下列正则表达式定义IDLETTERLETTERNUMDIGITDIGITLETTERA|Z|A|ZDIGIT0|9大写和小写字母是有区别的空格由空白、换行符和制表符组成。
空格通常被忽略,除了它必须分开ID、NUM关键字。
注释用通常的C语言符号/围起来。
注释可以放在任何空白出现的位置即注释不能放在标记内上,且可以超过一行。
注释不能嵌套说明当输入的字符使DFA到达接受状态的时候,则可以确定一个单词了。
初始状态设置为STARTINASSIGNNUMINIDZHUINCOMMENTDONE,OT。
13、实现7321FIRST集合求解算法实现7322FOLLOW集合求解算法实现8323SELECT集合求解算法实现9324LL1文法的判定实现9325语法正确性判断实现10326预测分析表构造和分析过程实现1033相关类的介绍11第4章系统的运行与测试1241界面的运行效果1242系统的测试14结论17参考文献18蓝天工作室为您提供最优秀的计算机毕业设计论文解决方案客服QQ599057179第I页摘要自顶而下语法分析是编译原理课程中的一个核心理论,由于理论的抽象性,常规的教学手段很难收到理想的教学效果,而教学辅助软件能以更形象化的方式把内容表达出来,因此教学辅助软件的开发十分必要。
本论文以介绍该教学辅助软件的开发为核心,首先介绍开发背景、开发目标、开发平台及软件的基本功能;然后简单介绍软件开发中用到的基础理论,其中包括LL(1)文法等概念;接下来详细阐述软件的具体开发过程,其中,FIRST集合、FOLLOW集合算法的实现是核心,这个实现的过程中用到了队列,在进行语法分析时用到了栈;最后对软件进行简单的测试,检查是否达到了预期目的。
关键词自顶向下语法分析,FIRST集合,FOLLOW集合,预。
14、开发工作打下一定的专业基础。
二、设计课题课题一应用编译原理的方法实现带括号的四则混合运算给定条件1、词法符号定义如下INTCDFLOATCDD|D|DFLOATCDD|D|D|DE|E|DOPADDOPSUBOPMULOPDIV/LPARENRPARENLINENASSIGN2、表达式文法定义如下01SE02ET03EEOPADDT04EEOPSUBT05TP06TTOPMULP07TTOPDIVP08PINTC09PFLOATC10PLPARENERPAREN基本要求1、以ASSIGN作为文法结束符号;2、应用词法分析技术识别单词;3、应用SLR1分析技术判别表达式的合法性;4、应用尾动作文法技术计算表达式的类型与值;5、要求表达式的类型与值严格一致。
2课题二MICRO语言词法语法分析给定条件1、词法符号定义如下IDLL|DINTCDREALCDDPLUSMULTLPARENRPARENCOLONASSIGNSEMI;LINENSTOPFEOFEOF2、表达式文法定义如下01PROG。
15、计环境1425需求分析1526概要设计1627详细设计1628编程调试2429测试24210结束语252课程设计一词法分析器设计一、设计题目手工设计C语言的词法分析器(可以是C语言的子集)。
二、设计内容处理C语言源程序,过滤掉无用符号,判断源程序中单词的合法性,并分解出正确的单词,以二元组形式存放在文件中。
三、设计目的了解高级语言单词的分类,了解状态图以及如何表示并识别单词规则,掌握状态图到识别程序的编程。
四、设计环境该课程设计包括的硬件和软件条件如下41硬件(1)INTELCOREDUOCPUP8700(2)内存4G42软件(1)WINDOW732位操作系统(2)MICROSOFTVISUALSTUDIOC开发平台43编程语言C语言五、需求分析51源程序的预处理源程序中,存在许多编辑用的符号,他们对程序逻辑功能无任何影响。
例如回车,换行,多余空白符,注释行等。
在词法分析之前,首先要先剔除掉这些符号,使得词法分析更为简单。
52单词符号的识别并判断单词的合法性将每个单词符号进行不同类别的划分。
单词符号可以划分成5中。
1标识符用户自己定义的名字,常量名,变量名和过程名。
2常数各种类型的常数。
16、认真填写)学号03023192姓名韩罡导师姓名职称张连堂教授袁彩虹助教开题时间2006年12月1日课题题目自顶向下语法分析教学辅助软件的开发课题来源导师指定自定其他来源课题的目的、意义以及和本课题有关的国内外现状分析1、目的开发一个自顶向下语法分析教学辅助软件。
2、意义自顶而下的语法分析是编译原理课程中的一个核心理论,由于理论的抽象性,常规的教学手段很收到理想的教学效果,而教学辅助软件能以更形象化的方式把内容表达出来。
因此,自顶向下语法分析教学辅助软件的开发有利于提高教学质量,帮助学生自学。
3、现状随着大学教育的改革,更多课程采用了先进教学手段,教学软件的开发在学校教育领域成为了一种潮流和趋势。
研究目标、研究内容和准备解决的问题自顶而下的语法分析是编译原理课程中一个十分重要的部分,同时它也是考试的重点和难点。
因此,本着辅助教学的目的,软件总体上要有友好的界面,良好的交互性,较强的实用性。
内容方面,LL(1)文法是一种能够进行确定、无回溯自顶而下语法分析的描述工具,软件要能够把整个LL(1)的分析过程清晰、准确、直观的展示出来。
给定一个文法,首先应实现FIRST集合和FOLLOW集。
17、21.总体设计.22.子程序设计.2三程序中的结构说明.31.重要函数介绍.32.函数代码.3四程序测试.13五、实验总结.151一语法分析方法有文法GS:(0)S#S#(1)SV(2)VT|ViT(3)TF|T+F(4)F)V*|(分析的句子为(+(i(1.判断为算符优先文法:文法没有A-BC且BC均为非终结。