编译原理问题(一)

梦里梦外; 2023-08-17 16:04 221阅读 0赞

编译原理问题(一)

    • 单词识别

单词识别

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

#

现有一文法如下
( 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)E→E+E(2)E→E∗E(3)E→(E)(4)E→i

消除二义性:(添加优先级)
( 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)E→E+T ∣T(2)T→T∗F ∣F(3)F→(E) ∣i

消除左递归:
方法:有 P → P α ∣ β P \rightarrow Pα|β P→Pα∣β的产生式将其替换为形式等价的产生式组:
( 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 A→Aα1​∣Aα2​∣…∣Aα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→β1​B∣β2​B∣…∣βm​B(2)B→α1​B∣α2​B∣…∣αn​B∣ε
将上式消除左递归如下:
( 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)E→TE′(2)E′→+TE′∣ ε(3)T→FT′(4)T′→∗FT′ ∣ ε(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 条评论,221人围观)

还没有评论,来说两句吧...

相关阅读

    相关 编译原理

    第一章 编译系统概论 单元测验1 1、 问题:编译过程中,语法分析器的任务不包括( ) 选项: A:分析单词是怎样构成的 B:分析单词串是如何构成语句和说明的