语法分析器得设计实验报告一、实验内容语法分析程序用 LL(1)语法分析方法
首先输入定义好得文法书写文件(所用得文法可以用 LL(1)分析),先求出所输入得文法得每个非终结符就是否能推出空,再分别计算非终结符号得 FIRST 集合,每个非终结符号得 FOLLOW 集合,以及每个规则得 SELECT 集合,并推断任意一个非终结符号得任意两个规则得 SELECT 集得交集就是不就是都为空,假如就是,则输入文法符合 LL(1)文法,可以进行分析
对于文法:G[E]:E>E+T|TT>T*F|FF>i|(E)分析句子 i+i*i 就是否符合文法
二、基本思想1、语法分析器实现语法分析就是编译过程得核心部分,它得主要任务就是根据程序得语法规则,从由词法分析输出得源程序符号串中识别出各类语法成分,同时进行词法检查,为语义分析与代码生成作准备
这里采纳自顶向下得 LL(1)分析方法
语法分析程序得流程图如图 54 所示
该程序可分为如下几步:(1)读入文法 (2)推断正误 (3)若无误,推断就是否为 LL(1)文法 (4)若就是,构造分析表;(5)由句型判别算法推断输入符号串就是为该文法得句型
三、核心思想该分析程序有 15 部分组成:(1)首先定义各种需要用到得常量与变量;(2)推断一个字符就是否在指定字符串中;(3)读入一个文法;(4)将单个符号或符号串并入另一符号串;(5)求所有能直接推出&得符号;开始读入文法有效
推断句型报错结束语法分析程序流程图就 是 LL(1) 文法
(6)求某一符号能否推出‘ & ’;(7)推断读入得文法就是否正确;(8)求单个符号得 FIRST;(9)求各产生式右部得 FIRST;(10)求各产生式左部得 FOLLOW;(11)推断读入文法就是否为一个 LL(1)文法;(12)构造分析表 M;(13)句型判别算法;(14)一个用户调用函数;(15)主函数