LR(1)分析法 ---编译原理-----

       此文是我晚上完成的一个编译原理实验...LR(1)分析法实验,大家如果学过编译原理肯定对LR 分析法印象很深,它很麻烦不是我说直到我写完这个程序才真正理解了LR分析法 .下面分析以下LR分析法

        一  优点:   

                   (1)LR分析器能够构造来识别所有能用上下文无关文法写的程序设计语言的结构。

       (2)LR 分析方法是已知的最一般的无回溯移进-归约方法,它能够和其他移进-归约方法一样有效地实现。
       (3)LR 方法能分析的文法类是预测分析法能分析的文法类的真超集。
       (4)LR 分析器能及时察觉语法错误,快到自左向右扫描输入的最大可能.
二 组成
(1) 总控程序,也可以称为驱动程序。对所有的LR分析器总控程序都是相同的。
(2) 分析表或分析函数,不同的文法分析表将不同,同一个文法采用的LR分析器不同时,分析表将不同,分析表又可以分为动作表(ACTION)和状态转换(GOTO)表两个部分,它们都可用二维数组表示。
(3) 分析栈,包括文法符号栈和相应的状态栈,它们均是先进后出栈。
我写的参考代码
 /**************************************
*@Author:  oDon 200490513101  WJ-0411
*@Create:  2006-12-7
*@Copyrightyuanonline@hotmail.com
*@Corporation: xxxx.CO.TD
*@Description: LR(1) Syntax Analysister
*************************************/
/*-------------------LR(1) Syntax -------------------------------------
  (0)E -> E + T
  (1)E -> T
  (2)T -> T*F
  (3)T -> F
  (4)F -> E
  (5)F -> (i)
  
----------------------------LR(1) SYNTAX TABLE-------------------------------------------
Status       Action         GOTO     |
      i      +      *     (      )     #    E   T  F     |
-----------------------------------------------------------------------------------------
 0 |    S5     S4      | 1    2  3    |
 1 |        S6       acc     |       |
 2   |          R2 S7         R2  R2   |              |
 3   |      R4 R4      R4       R4      |                   |               | 8   2   3    |
 5 |     R6 R6         R6  R6     |       |
 6 |  S5      S4      |   9  3  |  
 7 |  S5     S4      |     10  | 
 8 |       S6      S11    |       |
 9 |  R1    S7                   R1       R1      |       |
 10  |  R3   R3       R3  R3      |       |
 11 |  R5   R5       R5  R5     |       |
---------------------------------------------------------------------------------------*/
#include "stdio.h"
#include "string.h"
//----------------------Global Declarition---------------------------------
#define SIZE 20
#define sSIZE 12         //There are sSIZE status
#define aSIZE 6          //There will ecounter aSIZE symb
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 42
    评论
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值