第四章3-2-计算predict集

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
则lalg自动机到3型文法的转换?给定自动机ass00f构造等价的3型文法gvf构造等价的3型文法gvnnvttpz使得lalg只有一个初始状态pz使得lalg只有一个初始状态?构造过程
三个集合的定义
First(β) β = { a ∈VT | β⇒* a......} ∪ (if β⇒*λ then {λ} else ∅ ) λ λ Follow(A) = { a ∈VT | S⇒+ ....Aa..... } ⇒ ∪ (if S⇒*......A then {#} else ∅ ) ⇒ # Predict(A→β) β = First(β) , λ∉First(β) β 当λ∉ β = First(β)-{ λ} ∪ Follow(A) ,当λ∈First(β) β β
计算First(X)集 计算First(X)集
对每一文法符号X计算 对每一文法符号 计算First(X) 计算 若X ∈VT,First(X)={X} 若 X ∈ VN 则 First(X)={a| X→a…∈PSet,a ∈VT} → ∈ 且有产生式X→λ 若X ∈VN,且有产生式 →λ 则{λ} ∈ First(X) 且有产生式 →λ,则 λ 有产生式X→ 若X ∈VN,有产生式 →Y1Y2…Yn ,且 有产生式 Y1,Y2,…,Yi ∈VN 当Y1,Y2,…,Yi-1⇒* λ, 则First(Y1)- {λ} , First(Y2)- {λ},… First(Yi-1)λ λ {λ}, First(Yi)都包含在 都包含在First(X)中。 λ 都包含在 中 并入First(X) 中。 当Yi ⇒* λ(i=1,2,…n), 将{λ}并入 λ 并入
计算First(α 计算First(α)集
若符号串α 若符号串α=X1X2…Xn, 当X1,X2,…Xi-1⇒*ε,Xi不能 ⇒* ε,则 ε First(α)=∪1i-1(First(Xj)-{ε}) ∪ First(Xi) α ∪ ε 若所有X 都能⇒ ε 若所有 i都能⇒*ε,则 First(α)= ∪1nFirst(Xj) α
= { id , ( }
Predict( E’ →+TE’ ) = first(+TE’) = { + } ={),#} = { id , ( }
Predict( T’ →*FT’ ) = first(*FT’) = { * } ={+,),#} = { id } ={(}
3型(正则)文法与自动机 正则)
3型文法与产生式的形式为: 型文法与产生式的形式为: A → ωB 或 A → ω 的文法等价。其中ω∈ ω∈V 的文法等价。其中ω∈VT+。 定理: 定理:3型文法与自动机等价
3型文法到自动机的转换
设给定3型文法G=(V Z), 设给定3型文法G=(VN, VT, P, Z),构造一 个自动机A=(S, A=(S,Σ ,F) 使得L(A)=L(G) L(A)=L(G)。 个自动机A=(S,Σ,δ,s0,F),使得L(A)=L(G)。 构造过程: 构造过程: (1)令 {K}, (1)令S = VN∪{K},Σ=VT,s0= Z , F={K}. (2)对 中产生式形如: (2)对G中产生式形如: Y∈ X → aY 则定义 δ(X,a)= Y∈P K∈ X → a 则定义 δ(X,a)= K∈P 其中K是新符号。 其中K是新符号。 则L(A)= L(G)
计算Follow集 计算Follow集
1: 对所有 ∈VN,令Follow(A):={ };对开始符 对所有A∈ ; S,令Follow(S):={# }; 令 # ; 2: 若有产生式 若有产生式A→xBy, , 如果λ∈ λ∈First(y) 则: 如果λ∈ Follow(B):=(First(y)-{λ}) ∪ Follow(A) -λ 否则 Follow(B):= First(y) 3: 重复 和3,直至对所有 ∈VN,Follow(A)收 重复2和 ,直至对所有A∈ 收 敛为止。 敛为止。
计算Predict集 计算Predict集
Predict(A→β) β = First(β) ,当First(β)不含λ 不含λ β β 不含 = First(β)-{ λ} ∪ Follow(A) ,当First(β)含λ β β含
E → T E’ E’ → + T E’ | λ T → F T’ T’ → * F T’ | λ F → id | ( E )
Predict( E→TE’ ) = first(TE’) → Predict( E’ → λ ) = follow(E’) Predict( T →FT’ ) = first(FT’) Predict( T’ → λ ) = follow(T’) Predict( F →id ) = first(id) Predict( F →(E) ) = first((E))
文法G[E]: 文法G[E]: E → T |E + T
(1) (2)
T → F |T * F
F → ( E ) |i(3)是G的一个句子, 的一个句子,
(1)画出该句子的语法分析树 (2)给出该句子的最左推导和最右推导 (3)找出该句子的所有短语,简单短语,句柄 找出该句子的所有短语,简单短语, 文法G[S]: 文法G[S]: S→AB | bC A →ε | b B → ε | aD C → AD | b D → aS | c 计算非终极符的First Follow集 First、 计算非终极符的First、Follow集、产生式的 Predict集合 Predict集合
自动机到3 自动机到3型文法的转换
给定自动机A=(S,Σ ,F) 给定自动机A=(S,Σ,δ,s0,F),构造等价的 A=(S, 型文法G=(V Z),使得L(A)=L(G) 3型文法G=(VN, VT, P, Z),使得L(A)=L(G) 只有一个初始状态) (只有一个初始状态) 构造过程: 构造过程: 设F’= {Y| Y∈F且Y没有输出边} = Y∈ 没有输出边} S\ ,V (1) 令VN= S\F’,VT= Σ, Z= s0 如有δ (2) 如有δ(X,a)=Y : 如果Y F,则定义 则定义X 如果Y∈F,则定义X→a 如果Y ,则定义X 如果Y∉F’,则定义X→aY 则L(A)= L(G)
相关文档
最新文档