ll1文法分析程序c语言,基于LL(1)法的条件语句语法语义分析程序.doc

南华大学

计算机科学与技术学院

课程设计报告

( 2008~2009学年度 第一学期 )

课程名称编译原理

实验名称基于LL(1)法的条件语句语法语义分析程序

姓名学号

专业班级

地点教师

目 录

一.系统需求分析------------------------------------------------------------------------------------

二.概念模型设计------------------------------------------------------------------------------------

三.逻辑模型设计------------------------------------------------------------------------------------

四.物理模型设计------------------------------------------------------------------------------------

五.实验结果分析------------------------------------------------------------------------------------

六.心得体会--------------------------------------------------------------------------------------------

七.源代码------------------------------------------------------------------------------------------------

一.系统需求分析

通过设计,编制,调试一个语法及语义分析程序,加深对语法及语义分析原理的理解。

IF 〈布尔表达式〉 THEN 〈赋值语句〉 ELSE 〈赋值语句〉

其中

(1)、可以选择递归下降法、LL(1)、算符优先分析法、LR法完成以上任务,中间代码选用四元式。

(2)、 写出符合分析方法要求的文法,给出分析方法的思想,完成分析程序设计。

(3)、 编制好分析程序后,设计若干用例,上机测试并通过所设计的分析程序。

二.概念模型设计

首先设计一个IF-THEN-ELSE的LL(1)文法。推导出该文法的预测分析表,在此基础上编写能识别该IF-THEN-ELSE的语法分析程序。

程序要求有三部分组成,即词法分析、语法分析、以及语义分析。其中词法分析部分要求完成对输入程序的关键字、标识符、常数、运算符

Main函数流程图: 输出单词表

语法分析程序的详细数据流图:

词法分析

A 词法分析器的功能和输出形式

输入:所给文法的源程序字符串

输出:二元组(单词种别,单词符号的属性值)构成的序列

B. 待分析的简单语言的词法

因为是模拟简单编译器, 所以就以C语言的小型子集作为模拟编译器的词法.

模拟程序语言的单词符号可分为下列五种;

关键字: { (相当于Pascal语言中的begin) , if ,else , while , }(相当于Pascal语言中的end ) 所有的关键字都是小写字母 .

运算符: + , - , * , / , = , < , <= , == , > , >= ,<> , && ,|| , !

界 符: 逗号 ,分号 ,左圆括号 , 右圆括号 , #

常 数: 在这里只涉及到int型常量

其他单词是标识符(ID)()ID = letter(letter|digit)*

NUM = digit digit *

种别码单词符号种别码If0/17else1=18while2&&19{3||20}4!21;6rop22#8(23+14)24-15letter(letter|digit)**16digit digit *26

值得说明的是;

当种别码为22, 也就是六种运算符时, 会根据一个POS 的值(0-5)来定位到底是六种运算符中的哪一种.当pos=0 时 rop= ‘<=’ ;

当pos=1 时 rop= ‘< ’;

当pos=2 时 rop= ‘>=’ ;

当pos=3 时 rop= ‘> ’ ;

当pos=4 时 rop= ‘<>’ ;

当pos=5 时 rop

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值