我是靠谱客的博主 霸气网络,最近开发中收集的这篇文章主要介绍编译原理 —— FIRST集FIRST 集计算文法符号 X X X 的 FIRST 集合计算串 X 1 X ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

FIRST 集

  • FIRST(X):可以从符号或符号串X推导出的所有串首终结符构成的集合
  • 如果 X = > ∗ ε X=>^*ε X=>ε ,那么 ε ε ε 也在 FIRST(X)

计算文法符号 X X X 的 FIRST 集合

对于一个产生式 X → Y 1 Y 2 . … Y n X→Y_1Y_2.…Y_n XY1Y2.Yn

(1)如果 X X X是一个终结符,那么FIRST ( X ) = { X } (X)={X} (X)={X}

(2)如果 X X X是一个非终结符,且 X → Y 1 Y 2 . … Y n X→Y_1Y_2.…Y_n XY1Y2.Yn

  • 如果 Y 1 Y_1 Y1 是一个终结符,那么FIRST ( X ) = { Y 1 } (X)={Y_1} (X)={Y1}
  • 如果 Y 1 Y_1 Y1 是非终结符,那么
    1. FIRST ( X ) (X) (X)加入 FIRST ( Y 1 ) (Y_1) (Y1)中所有的非 ε ε ε 符号
    2. 如果 ε ε εFIRST ( Y 1 ) (Y_1) (Y1)中,再加入FIRST ( Y 2 ) (Y_2) (Y2)中的所有非 ε ε ε 符号;如果 ε ε εFIRST ( Y 1 ) (Y_1) (Y1)FIRST ( Y 2 ) (Y_2) (Y2)中,再加入 FIRST ( Y 3 ) (Y_3) (Y3)中的所有非 ε ε ε 符号,以此类推…
    3. 最后,如果对所有的 X X X ε ε ε 都在FIRST ( X ) (X) (X)中,那么将 ε ε ε 加入到 FIRST ( X 1 X 2 . … X n ) (X_1X_2.…X_n) (X1X2.Xn)

(3)如果 X → ε X→ε Xε,那么将 ε ε ε 加入FIRST ( X ) (X) (X)

(4)若存在其它 X X X 的候选式,则重复应用上述过程

示例:

  1. 式子②④⑤的候选式都是以终结符开头(即 Y 1 Y_1 Y1是终结符),故他们的FIRST集中分别包含了+、*、(
  2. 式子②④的候选式还可以推导出 ε ε ε ,故他们的FIRST集中包含了 ε ε ε
  3. 式子③的候选式以非终结符开头(即 Y 1 Y_1 Y1是非终结符),故式子③的FIRST集加入了 FIRST ( F ) (F) (F)中所有的非 ε 符号,同理可求式子①的FIRST集
  4. 若将 E → T E ′ E→TE' ETE 改写成 E → E ′ T E→E'T EET (下面简称为式子⑥)
    1. 式子⑥的FIRST集加入了 FIRST ( E ′ ) (E') (E)中所有的非 ε 符号
    2. ε 在 FIRST ( E ′ ) (E') (E)中,再加入了 FIRST ( T ) (T) (T)中所有的非 ε 符号
    3. FIRST ( T ) (T) (T)中没有 ε ,结束。
    4. 故此时 FIRST ( E ) = { + , ( , i d } (E)={+,(,id} (E)={+(id}

计算串 X 1 X 2 . … X n X_1X_2.…X_n X1X2.Xn 的FIRST集合

(1)向 FIRST ( X 1 X 2 . … X n ) (X_1X_2.…X_n) (X1X2.Xn)加入 FIRST ( X 1 ) (X_1) (X1)中所有的非 ε ε ε 符号

(2)如果 ε ε εFIRST ( X 1 ) (X_1) (X1)中,再加入FIRST ( X 2 ) (X_2) (X2)中的所有非 ε ε ε 符号;如果 ε ε εFIRST ( X 1 ) (X_1) (X1)FIRST ( X 2 ) (X_2) (X2)中,再加入 FIRST ( X 3 ) (X_3) (X3)中的所有非 ε ε ε 符号,以此类推…

(3)最后,如果对所有的 X X X ε ε ε 都在FIRST(X)中,那么将 ε ε ε 加入到 FIRST ( X 1 X 2 . … X n ) (X_1X_2.…X_n) (X1X2.Xn)


参考地址:

https://www.icourse163.org/learn/HIT-1002123007?tid=1003246005#/learn/announce

最后

以上就是霸气网络为你收集整理的编译原理 —— FIRST集FIRST 集计算文法符号 X X X 的 FIRST 集合计算串 X 1 X 的全部内容,希望文章能够帮你解决编译原理 —— FIRST集FIRST 集计算文法符号 X X X 的 FIRST 集合计算串 X 1 X 所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部