下载此文档

实验二语法分析器源代码.doc


文档分类:IT计算机 | 页数:约24页 举报非法文档有奖
1/24
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/24 下载此文档
文档列表 文档介绍
语法分析实验报告
一、实验目的:
  1. 了解单词(内部编码)符号串中的短语句型结构形成规律。
   2。 理解和掌握语法分析过程中语法分析思想(LL,LR)的智能算法化方法。
二、实验内容:
构造自己设计的小语言的语法分析器:
  1. 小语言的语法描述(语法规则)的设计即文法的设计;
    2。 把文法形式符号中所隐含的信息内容挖掘出来并用LL或LR的资料形式(分析表)表示出来;
3。 语法分析的数据输入形式和输出形式的确定;
4。 语法分析程序各个模块的设计与调试。
主要设备和材料:电脑、winxp操作系统、VC语言系统
三、实验步骤:
1、语法规则
①  〈程序〉 ::= {<变量定义语句> | 〈赋值语句〉  |  〈条件语句〉 | 〈循环语句〉 }
② <变量定义语句> ::= var 变量{,变量};
③  <赋值语句〉 ::= 变量 := 〈表达式>;
④  <表达式>  ::= 标识符{运算符 标识符 };
⑤ 〈标识符〉 ::= 变量 |常量
⑥  <运算符 > ::= + | — | * | /  | 〉= | <=
⑦ 〈条件语句>  ::= 〈if语句〉[<else语句〉]
⑧ <if语句〉  ::=  if(表达式) then[begin] {赋值语句 |条件语句 | 循环语句}[end]
⑨  〈else语句>  ::= [begin]  {赋值语句 | 条件语句 | 循环语句} [end] 
⑩ <循环语句> ::= while(表达式) [begin] {赋值语句 | 条件语句 | 循环语句} [end]
 <输出语句〉  ::= prn 表达式
——注1:若if语句、else语句、循环语句中出现begin,后面的end必须出现,即begin与end同对出现
—-注2:if、while后的”(",”)”表示终结符,而不是定义成分优先的说明符号
2、分析表:
: =
变量
常量
 ,

运算符
 (
  )
变 量
定 义
-〉②
—〉② 
->②
->②
赋 值
语 句
-〉③
—>③
->③
-〉③
 —〉③
条 件语 句
—〉⑦
—>⑦ 
—>⑦
—>⑦
—〉⑦
->⑦
->⑦
循 环语 句
—〉⑩ 
—〉⑩
-〉⑩
-〉⑩
->⑩
-〉⑩ 
—〉⑩
输 出语 句
-〉
->
—>
分析表(续):
while
var
begin
end
if
then
prn
变 量 定 义
-〉②
 

赋 值 语 句
条 件 语 句
->⑦
->⑦
->⑦
->⑦
循 环 语 句
—>⑩
—〉⑩
-〉⑩
输 出 语 句
—>
调试和测试
四、实验总结:
本实验在词法分析的基础上,对提取出的标识符进行语法判断。对已有的语法规则运用LL(1)文法判别并进行构造分析表时,遇到的最大困难是:当发生规约冲突时,该如何处理。如对于产生式s——>aAb,当对a进行规约时,满足语法规则的
β(用户输入串中当前要进行规约的标识符)只有有限种,,如何在这无限种情况中,确定冲突的具体信息,以便用户查找。在反复的尝试和验证中,我们发现发生冲突的用户输入串满足一定的规律,且按这种规律可以把这无限种情况化归为有限类,于是我们找出其中规律并进行划分,然后再对这些有限类冲突进行处理。
五、实验心得:
通过这次实验有以下几点收获:
1. LR(1)的构造使得对理论的知识理解的更加透彻。其中LR(1)分析表构造了很多遍,一直无法得到正确结果,这是恒心的考验.
2。 在写程序中用类数组来存放单词属性使得对单词各项值的调用更加方便,特别是对出错信息的检测有很大的作用.
3。 本实验是在词法基础上的更进一步,在词法程序上添加语法程序,,方便分析,使程序模块化,易于读懂。
六、附录:
ﻩ#include 〈iostream>
ﻩ#include 〈fstream〉
ﻩ#include 〈string>
ﻩ#include 〈m

实验二语法分析器源代码 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数24
  • 收藏数0 收藏
  • 顶次数0
  • 上传人sanshenglu2
  • 文件大小253 KB
  • 时间2021-07-29
最近更新