编译原理问题(一)

编译原理问题(一)

单词识别

  • 单词识别:识别整数和浮点数
    在这里插入图片描述

现有一文法如下
( 1 ) E → E + E ( 2 ) E → E ∗ E ( 3 ) E → ( E ) ( 4 ) E → i (1)E \rightarrow E + E \\ (2)E \rightarrow E * E \\ (3)E \rightarrow ( E ) \\ (4)E \rightarrow i (1)EE+E(2)EEE(3)E(E)(4)Ei

消除二义性:(添加优先级)
( 1 ) E → E + T   ∣ T ( 2 ) T → T ∗ F   ∣ F ( 3 ) F → ( E )   ∣ i (1) E \rightarrow E+T\ | \quad T \\ (2) T \rightarrow T*F \ | \quad F \\ (3) F \rightarrow (E) \ | \quad i (1)EE+T T(2)TTF F(3)F(E) i

消除左递归:
方法:有 P → P α ∣ β P \rightarrow Pα|β PPαβ的产生式将其替换为形式等价的产生式组:
( 1 ) P → β P ′ ( 2 ) P ′ → α P ′ | ε (1)P\rightarrow βP' \\ (2) P' \rightarrow αP' |\varepsilon (1)PβP(2)PαPε
一般而言,若产生式形式为:
A → A α 1 ∣ A α 2 ∣ … ∣ A α n ∣ β 1 ∣ β 2 ∣ … ∣ β m A→Aα_1|Aα_2|…|Aα_n|β_1|β_2|…|β_m AAα1Aα2Aαnβ1β2βm
将其替换为:
( 1 ) A → β 1 B ∣ β 2 B ∣ … ∣ β m B ( 2 ) B → α 1 B ∣ α 2 B ∣ … ∣ α n B ∣ ε (1)A \rightarrow β_1 B|β_2 B |…|β_m B \\ (2)B \rightarrow α_1 B|α_2 B |…|α_n B|ε (1)Aβ1Bβ2BβmB2)Bα1Bα2BαnBε
将上式消除左递归如下:
( 1 ) E → T E ′ ( 2 ) E ′ → + T E ′ ∣   ε ( 3 ) T → F T ′ ( 4 ) T ′ → ∗ F T ′   ∣   ε ( 5 ) F → ( E )   ∣   i (1)E \rightarrow TE' \\ (2)E' \rightarrow +TE' | \ \varepsilon \\ (3)T \rightarrow FT' \\ (4)T' \rightarrow *FT' \ | \ \varepsilon \\ (5)F \rightarrow (E) \ | \ i (1)ETE(2)E+TE ε(3)TFT(4)TFT  ε(5)F(E)  i

消除回溯:
A → δ α 1 ∣ δ α 2 ∣ … ∣ δ α n A→δα1|δα2|…|δαn Aδα1δα2δαn 转换成:
( 1 ) A → δ A ′ ( 2 ) A ′ → α 1 ∣ α 2 ∣ … ∣ α n (1)A\rightarrowδA' \\ (2) A' \rightarrowα1|α2|…|αn (1)AδA(2)Aα1α2αn

上式的文法产生式:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值