1 / 13

主要内容

主要内容. 识别规约活前缀的 LRSM 的构造. 派生定理. 开始符产生式的右部是归约活前缀。 如果  A  是归约活前缀,且 A→  是产生式, 则  也是归约活前缀。 任何归约活前缀,都可按上述方式被派生。 设文法开始符的产生式是 : S →  1 | 2 | … | n RPS G ={  1 , … , n }  { |ARPS G ,A → P }. 例有文法 G[s]: S → aAc [1] A → Abb [2] A → b [3]. 可归前缀集: aAc

inoke
Download Presentation

主要内容

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 主要内容 • 识别规约活前缀的LRSM的构造

  2. 派生定理 • 开始符产生式的右部是归约活前缀。 • 如果A是归约活前缀,且A→是产生式, 则也是归约活前缀。 • 任何归约活前缀,都可按上述方式被派生。 • 设文法开始符的产生式是: S →1|2|…|n RPSG={1,…,n}{|ARPSG,A→P}

  3. 例有文法G[s]: S → aAc[1] A → Abb[2] A → b[3] 可归前缀集: aAc aAbb ab

  4. LR(0)项目:若A→是产生式, 则称A→为LR(0)项目(简称项目),也 写作[p]形式。 • 项目集的投影:假设IS是LR(0)项目集,则 称下面IS(X)为IS关于X的投影集: IS(X) = { A→X | A→X IS, X (VTVN ) }. • 项目集的闭包:假设IS是LR(0)项目集,则 称下面CLOSURE(IS)为IS的闭包集: CLOSURE(IS)= IS  {A→ | Y→ACLOSURE(IS) A→是产生式 }

  5. 两个重要的性质 • 归约活前缀的性质:若A是归约活前 缀,A→是产生式,则也是归约活 前缀。 • 活前缀状态机性质:若有 Prefix(ISi ),且A→ISi ,则 是归约活前缀。

  6. 若有 Prefix(ISi ),Y→AISi ,则 根据性质2—(活前缀状态机的性质), A是归约活前缀。再根据派生原理,若 A→是A的产生式,则也是归约活前缀。 • 构造LRSM的思想: 如果在状态项目集ISi 中有项目A→B, 且B→是B的产生式,则在ISi 中增加项目 B→;对于ISi 这个过程继续到不可再扩 充为止。

  7. 构造LR(0)活前缀状态机LRSM的算法要点: • 构造初始状态IS0:IS0=CLOSURE({Z→S}),并给IS0标上NO。 • 从已构造的LRSM部分图选择被标为NO的任一状态IS,并做 [1] 对每个符号XVTVN,做下面动作: 1) 令ISj = CLOSURE( IS(X)),若非空。 2) 若在LRSM部分图中已有ISk与ISj有相同项目 集,则令m=k;否则构造ISj的状态点ISj, 并给ISj标上NO,同时令m=j。 3) 在IS和ISm之间画有向X边:IS ISm 。 [2] 给IS标上OK。 • 重复上一步骤,直至没有被标记为NO的状态结点为止。 x

  8. 例:构造LR(0)状态机 S  E # E  E + T E  T T  id T ( E )

  9. 0 2 5 9 3 1 6 7 8 4 T T ( ( id id E id ( E + + # T ) S→ E # E→ E+T E→ T T→ id T→ ( E ) T→( E) E→ E+T E→ T T→ id T→ ( E ) E→E+  T T→ id T→ (E) S→E # E→E +T T→(E ) E→E +T E→T  E→E+T  T→(E)  T→id  S→E # GE的LRSM

  10. LRSM给出了所有的可归活前缀 • LRSM中的每个状态将对应一个饱和项目集: (1)其中一部分是由先驱状态分出来 (称为基本项目); (2)一部分则是由基本项目扩展出来的 (称为扩展项目或派生项目)。派生部 分项目的特点是其中的“”出现在产 生式右部的最左侧。

  11. 形如A→•[P]的项目称为归约型项目 • 形如A→•[P]的项目称为移入型项目 • 移入-归约冲突 • 归约-归约冲突 • LRSM不能直接用于LR分析 • LRSM提供的信息: (1)合法性检查信息 [A→a] (2)移入/归约信息 [A→a]; [A→] (3)移入/归约后的转向状态信息

  12. 设当前格局是: 移入动作:设Sit的ai输入边所指向的状态为S* 归约动作:设按A→Xk+1Xk+2…Xt进行归约,则首先归约为A Sik的A输出边所指向的状态设为S*,则格局变为:

  13. 文法定义如下: Z → S S → (S) S |  构造该文法的LR(0)状态机,要求不含有空输出边。

More Related