码迷,mamicode.com
首页 > 其他好文 > 详细

编译原理 #05# Nonrecursive Predictive Parsing

时间:2020-07-02 20:10:09      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:构造   tab   fir   ict   描述   body   order   位置   产生   

// 实验存档

问题描述

有如下LL(1)文法

(1)E->TG

(2)G->+TG|-TG

(3)G->ε

(4)T->FS

(5)S->*FS|/FS

(6)S->ε

(7)F->(E)

(8)F->i

E为开始符号,实现一个非递归的预测分析器。

 

解决思路

1、根据以上文法,可知:

非终结符有E,G,T,S,F(共5个)

终结符有+,-,*,/,(,),i(加上$共8个)

用$表示输入终止。

 

2、构造一个预测分析表M:

  + - * / ( ) i $
E                
G                
T                
S                
F                

 

3、对每个产生式求FIRST,并填入预测分析表M的相应位置。

例如,对于G->+TG|-TG,应该将其拆分为G->+TG和G->-TG,

因为FIRST(+TG)={+},故将G->+TG填入M[G, +],同理将G->-TG填入M[G, -],

而对于G->ε,因为FOLLOW(G)={$},故将其填入M[G, $]。

若对于同一个产生式,求出FOLLOW集合,或者FIRST集合含有多个元素,则将同一个产生式填入表M的多处,

例如,对于E->TG,FIRST(TG)={(, i},则将该产生式填入M[E, (]和M[E, i]。

 

4、填完后是这个样子的:

  + - * / ( ) i $
E          E->TG    E->TG  
G  G->+TG  G->-TG            G->ε
T          T->FS    T->FS  
S     S->*FS  S->/FS        S->ε
F          F->(E)    F->i  

编译原理 #05# Nonrecursive Predictive Parsing

标签:构造   tab   fir   ict   描述   body   order   位置   产生   

原文地址:https://www.cnblogs.com/xkxf/p/10808851.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!