【编译原理】作业五

编译原理 第五次作业

151220129 计科 吴政亿 18805156360@163.com

4.7.1

  1. 规范LR项集族
I0:
    [S' -> ·S  , $] 
    [S' -> ·SS+, $], [S' -> ·SS+, a]
    [S' -> ·SS*, $], [S' -> ·SS*, a]
    [S' -> ·a  , $], [S' -> ·a  , a]
I1:
    [S' -> a·  , $], [S' -> a·  , a]
I2:
    [S' -> S·  , $] 
    [S' -> S·S+, $], [S' -> S·S+, a]
    [S' -> S·S*, $], [S' -> S·S*, a]
    [S' -> ·SS+, a], [S' -> ·SS+, *], [S' -> ·SS+, +]
    [S' -> ·SS*, a], [S' -> ·SS*, *], [S' -> ·SS*, +]
    [S' -> ·a  , a], [S' -> ·a  , *], [S' -> ·a  , +]
I3:
    [S' -> a·  , a], [S' -> a·  , *], [S' -> a·  , +]
I4:
    [S' -> SS·+, $], [S' -> SS·+, a]
    [S' -> SS·*, $], [S' -> SS·*, a]
    [S' -> S·S+, a], [S' -> S·S+, *], [S' -> S·S+, +]
    [S' -> S·S*, a], [S' -> S·S*, *], [S' -> S·S*, +]
    [S' -> ·SS+, a], [S' -> ·SS+, *], [S' -> ·SS+, +]
    [S' -> ·SS*, a], [S' -> ·SS*, *], [S' -> ·SS*, +]
    [S' -> ·a  , a], [S' -> ·a  , *], [S' -> ·a  , +]
I5:
    [S' -> SS+·, $], [S' -> SS+·, a]
I6:
    [S' -> SS*·, $], [S' -> SS*·, a]
I7:
    [S' -> SS·+, a], [S' -> SS·+, *], [S' -> SS·+, +]
    [S' -> SS·*, a], [S' -> SS·*, *], [S' -> SS·*, +]
    [S' -> S·S+, a], [S' -> S·S+, *], [S' -> S·S+, +]
    [S' -> S·S*, a], [S' -> S·S*, *], [S' -> S·S*, +]
    [S' -> ·SS+, a], [S' -> ·SS+, *], [S' -> ·SS+, +]
    [S' -> ·SS*, a], [S' -> ·SS*, *], [S' -> ·SS*, +]
    [S' -> ·a  , a], [S' -> ·a  , *], [S' -> ·a  , +]
I8:
    [S' -> SS+·, a], [S' -> SS+·, *], [S' -> SS+·, +]
I9:
    [S' -> SS*·, a], [S' -> SS*·, *], [S' -> SS*·, +]
  1. LALR项集族:
I0:
    [S' -> ·S  , $] 
    [S' -> ·SS+, $], [S' -> ·SS+, a]
    [S' -> ·SS*, $], [S' -> ·SS*, a]
    [S' -> ·a  , $], [S' -> ·a  , a]
I1:
    [S' -> S·  , $] 
    [S' -> S·S+, $], [S' -> S·S+, a]
    [S' -> S·S*, $], [S' -> S·S*, a]
    [S' -> ·SS+, a], [S' -> ·SS+, *], [S' -> ·SS+, +]
    [S' -> ·SS*, a], [S' -> ·SS*, *], [S' -> ·SS*, +]
    [S' -> ·a  , a], [S' -> ·a  , *], [S' -> ·a  , +]
I2:
    [S' -> SS·+, a], [S' -> SS·+, *], [S' -> SS·+, +], [S' -> SS·+, $]
    [S' -> SS·*, a], [S' -> SS·*, *], [S' -> SS·*, *], [S' -> SS·*, $]
    [S' -> S·S+, a], [S' -> S·S+, *], [S' -> S·S+, +]
    [S' -> S·S*, a], [S' -> S·S*, *], [S' -> S·S*, +]
    [S' -> ·SS+, a], [S' -> ·SS+, *], [S' -> ·SS+, +]
    [S' -> ·SS*, a], [S' -> ·SS*, *], [S' -> ·SS*, +]
    [S' -> ·a  , a], [S' -> ·a  , *], [S' -> ·a  , +]
I3:
    [S' -> a·  , a], [S' -> a·  , *], [S' -> a·  , +], [S' -> a·  , $]
I4:
    [S' -> SS+·, a], [S' -> SS+·, *], [S' -> SS+·, +], [S' -> SS+·, $]
I5:
    [S' -> SS*·, a], [S' -> SS*·, *], [S' -> SS*·, +], [S' -> SS*·, $]

5.1.2

产生式语法规则
L>En L − > E n L.val=E.val L . v a l = E . v a l
E>TE E − > T E ′ E.inh=T.val E ′ . i n h = T . v a l
E.val=E.syn E . v a l = E ′ . s y n
E>+TE1 E ′ − > + T E 1 ′ E1.inh=E.inh+T.val E 1 ′ . i n h = E ′ . i n h + T . v a l
E.syn=E1.syn E ′ . s y n = E 1 ′ . s y n
E>ϵ E ′ − > ϵ E.syn=E.inh E ′ . s y n = E ′ . i n h
T>FT T − > F T ′ T.inh=F.val T ′ . i n h = F . v a l
T.val=T.syn T . v a l = T ′ . s y n
T>FT1 T ′ − > ∗ F T 1 ′ T1.inh=T.inhF.val, T 1 ′ . i n h = T ′ . i n h ∗ F . v a l ,
T.syn=T1.syn T ′ . s y n = T 1 ′ . s y n
T>ϵ T ′ − > ϵ T.syn=T.inh T ′ . s y n = T ′ . i n h
F>(E) F − > ( E ) F.val=E.val F . v a l = E . v a l
F>digit F − > d i g i t F.val=digit.lexval F . v a l = d i g i t . l e x v a l

5.2.2