语法分析器---预测分析程序

本文档详细介绍了如何设计和实现一个预测分析算法,旨在深入理解自上而下的语法分析方法,特别是自上而下分析条件。实验步骤包括文法的左递归转换、FIRST集和FOLLOW集的计算、预测分析表的构造以及总控程序的建立。此外,还要求编写源代码、调试问题和实验报告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验二  预测分析算法的设计与实现

(8学时)

一、实验目的

通过预测分析算法的设计与实现,加深对自上而下语法分析方法的理解,尤其是对自上而下分析条件的理解。

二、实验要求  

输入文法及待分析的输入串,输出其预测分析过程及结果。

三、实验步骤

1. 参考数据结构

(1)/*定义产生式的语法集结构*/

typedef struct{

    char formula[200];//产生式

}grammarElement;

grammarElement  gramOldSet[200];//原始文法的产生式集

  (2)/*变量定义*/

     char terSymbol[200];//终结符号

     char non_ter[200];//非终结符号

     char allSymbol[400];//所有符号

     char firstSET[100][100];//各产生式右部的FIRST集

     char followSET[100][100];//各产生式左部的FOLLOW集

     int M[200][200];//分析表

2. 判断文法的左递归性,将左递归文法转换成非左递归文法。(该步骤可以省略,直接输入非左递归文法)。

3.根据文法求FIRST集和FOLLOW集。

1/* First 集的算法*/

begin

if  X为终结符(XÎ)

        在所有产生式中查找X所在的产生式

        if  产生式右部第一个字符为终结符或空(X®a)或X®e)

         then ae加进FIRST(X)

        if 产生式右部第一个字符为非终结符 then

             if产生式右部的第一个符号等于当前字符 then

                跳到下一条产生式进行查找

              if 当前非终结符还没有求其FIRST then

                 查找它的FIRST集并标识此符号已求其FIRST

         求得结果并入到XFIRST

         if  当前产生式右部符号可推出空字且当前字符不是右部的最后一个字符

         then  获取右部符号下一个字

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值