SlideShare a Scribd company logo
1 of 28
第4章
 自顶向下
的语法分析

        1
§4.3

LL(1) 文法


           2
产生式的可选集— select 集
        给定文法 G ,对于产生式 A→α , α∈ V* ,
    如果它的编号为 i ,则它的可选集 SELECT (
    A→α )定义如下(也可以用 SELECT ( i )表
    示) :

   ( 1 )若 α ≠ ε ,且 α ≠>* ε ,则
            SELECT ( i )= FIRST ( α );
   ( 2 )若 α ≠ ε ,但 α =>*ε ,则
     SELECT ( i )= FIRST ( α )∪ FOLLOW (
    A );
   ( 3 )若 α = ε ,则 SELECT ( i )=        3


    FOLLOW ( A )。
   例 1 :文法 G[S] :
         S →AB | bC
         A →b | ε
         B →aD | ε
         C →AD | b
         D →aS | c
    求各产生式的可选集。


                      4
   例 2 :文法 G[S] :
         S →aBC
         B →bC | dB | ε
         C →c | a
    求各产生式的 select 集。


                          5
LL(1) 文法

       一个上下文无关文法称为是
LL ( 1 )文法,当且仅当同一非终结符
的各个产生式的可选集互不相交。
    LL ( 1 )含义:
第一个 L :自顶向下分析是从左向右扫描输入
 串;
第二个 L :使用最左推导方法分析句子;
数字 1 :  分析时只需查看一个输入符号便
 可决定如何推导(选择哪一个产生式进行推
                      6
 导)。
   例 1 :给定文法 G [ E ]:
         E→ TE′
         E′ → ATE′ | ε
         T→ FT′
         T′ →MFT′ | ε
         F→ ( E )| i
         A→ +|-
         M→ * |/
      判断该文法是否为 LL ( 1 )文法。
                             7
说明:
     若文法中含公共左因子有直接或
 间接左递归,或含有则该文法肯定不是
 LL ( 1 )文法。
          此时,可以设法消除文法中
 的左递归,提取公共左因子来对文法进
 行等价变换,这样就可能使其变为
 LL ( 1 )文法。
                         8
4.4 LL(1) 分析
      法


               9
4.4.1 LL(1) 分析器的逻辑结构
   LL ( 1 )分析法也称为预测分析法,采用
这种方法的分析器由三个部分组成,一张 LL(1) 分
析表(预测分析表)、一个控制程序和一个分析
栈。




                         10
4.4.2 LL(1) 分析表的结构及构造方法

构造 LL ( 1 )分析表:
        假定初始分析表 L [ A , a ]
 是空白的,分析表元素 L [ A , a ]可按
 下述规则确定:
(1) 对于文法中的每个产生式 A→α ,若
  a∈ SELECT ( A→α ),则把 A→α 置于
  L [ A , a ]中,其中 a 为终结符或#;
(2) 凡未定义的表元素 L [ A , a ]均标上出错标
  志。为了使表简化,表中出错处用空白表示。 11
产生式      FIRST      FOLLOW          SELECT
E→TE′     {(, i }     {),#}          {(, i }
E′→ATE′   {+,-        {),#}          {+,-}
E′→ε       {}}
             ε                       {),#}
T→FT′     {(, i }   {+,-, ) , # }    {(, i )
T′→MFT′   { * ,/    {+,-, ) , # }    { * ,/}
T′→ε       {}}
             ε                      {+,-, ) ,
F→ ( E     {()       {+,-, * ,          #}
                                       {(}
)
F→i        {i}        /, ) , # }       {i}
A→ +       {+}         {(, i )         {+}
A→ -       {-}                         {-}
M→*        {*}        {(, i }          {*}
M→ /       {/}                         {/}

                                          12
(      )       i       +       -          *        /        #
E    E→TE′          E→TE′
E′           E′→ε           E′→ATE′ E′→ATE′                       E′→ε

T    T→FT′          T→FT′
T′           T′→ε            T′→ε    T′→ε     T′→MFT′   T′→MFT′   T′→ε

F    F→(E)           F→i
A                           A→ +     A→ -
M                                              M→*       M→/




                                                                  13
LL ( 1 )分析表的构造算法
其中: n 是最大产生式编号;
     i : A→α 表示第 i 个产生式是
 A→α 。
   i: = 1 ;
   do
   for i : A→α do
   for 每个 a∈ SELECT ( i ) do
   把 A→α 填入 L ( A , a )中;
   i: = i + 1 ;
   while (i≤n) ;                14
   向其余空白 L ( A , a )中填入“出错码”;
4.4.3 LL(1) 分析器的工作流程
 LL(1) 分析器对每个输入串的分析在控制程序的
  控制下进行,其大致步骤如下:
1 、初始化,即首先将栈底符号#和文法的开始符
  号推入分析栈,此时分析栈和输入串有如下格
  局:
           分析栈
  输入 TOKEN 串
        #S       a1a2…an #
2 、 ( 反复执行 ) 设在分析的某一时刻,分析栈和
  余留的输入串处于如下的格局 ( 其
  中, Xi∈ VN∪ VT) :          15


        分析栈
(1) 若 Xm = ai ,则表明栈顶符号与当前正扫视的
  输入符号 ai 相匹配,此时,应将 Xm 从栈中移出
  ,输入串指针下移一个位置,指向下一个输入
  符号 ai + 1 ,准备对下一个字符的分析;特别是
  ,若 Xm = ai =#,则表明输入串已完全得到匹
  配,它是文法的合法句子,分析成功,停止分
  析器的工作。
(2) 若 Xm∈ VN ,查符号表,若 L[Xm , ai] 为产生式
  Xm→Y1Y2…Yk ,则 Xm 从栈顶移出,并将 Y1Y2…
  Yk 反序依次推入栈中,得到如下格局:
           分析栈
    输入 TOKEN 串
                                    16
#X1X2…Xm-1YkYk-1…Y1   aiai+1…an #
   将′#′和文法开始符号依次入栈;
   把字符串的第一个符号送给 a ;
   do
   弹出分析栈栈顶符号送给 X ;
   if X = a then
   将 X 从栈中弹出;
   把字符串下一个符号送给 a ;
   else if X∈ VN then
   if L[X , a] 为 X→Y1Y2…Yk then
   将 X 从栈中弹出;
   将 Yk…Y2Y1 依次入栈;
   else error ;
   while(X≠′ #′ ) ;
                                   17
   if X = a =′#′ then 正确接收,分析
    结束;
步骤    分析栈         余留输入串 所用产生式
 1    #E             i+i*i#  E→TE′
 2    #E′ T          i+i*i#  T→FT′
 3    #E′ T′ F       i+i*i#   F→i
 4    #E′ T′ i       i+i*i#
 5    #E′ T′          +i*i#   T′→ε
 6    #E′             +i*i# E′→ATE′
 7    #E′ TA          +i*i#  A→ +
 8    #E′ T+          +i*i#
 9    #E′ T            i*i#  T→FT′
 10   #E′ T′ F         i*i#   F→i
 11   #E′ T′ i         i*i#
 12   #E′ T′            *i# T′→MFT′
 13   #E′ T′ FM         *i#   M→*
 14   #E′ T′ F*         *i#
 15   #E′ T′ F           i#   F→i
 16   #E′ T′ i           i#
 17   #E′ T′              #   T′→ε
 18   #E′                 #   E′→ε    18
 19   #                   # 分析成功
4.5 递归下降法
   递归下降法的基本思想:为每个非终结符
    编制一个子程序,子程序的名字表示一个
    产生式左部的非终结符,程序体则是按该
    产生式右部的符号串顺序编写的。每匹配
    一个终结符,则再读入下一个符号,对于
    产生式右部的每个非终结符,则调用相应
    子程序。当一个非终结符对应多个候选式
    时,子程序体按可选集决定选用哪个候选
    式。                19
   例,给定文法 G [ S ]:
       S→AaB | Bb
       A→aD | D
       B→d | e | ε
       D→fD | g
    写出其递归下降分析程序。


                      20
产生式    FIRST 集   FOLLOW   SELECT 集
S→AaB   { a, f     {#}
                     集     { a, f
S→Bb    { dg, e
        , }                { dg, e
                            , }
A→aD    , b}
        {a        { a}      , b}
                            {a
A→D     { f, g             { f, g
B→d     {}}d                {}}
                              d
B→e      { e}     { b ,#    { e}
B→ε      { ε}        }     { b ,#
D→fD     { f}      { a}     {}}
                              f
D→g     { g}                { g}

                                  21
每个非终结符号对应产生式的各
个候选式的交集如下所示:

  SELECT ( S→AaB )∩ SELECT ( S→Bb )
=Φ
  SELECT ( A→aD )∩ SELECT ( A→D )
=Φ
  SELECT ( B→d )∩ SELECT ( B→e )=
Φ
  SELECT ( B→d )∩ SELECT ( B→ε )=
Φ
                                   22
  SELECT ( B→e )∩ SELECT ( B→ε )= Φ
递归下降语法分析程序:
scan 表示调用词法分析程序读入下一个单
  词至变量 token ;
error 表示报错;
match(a) 表示若当前输入单词为 a ,则调
  用 scan ,否则调用 error ;


                            23
函数 S :
                     if token in { a , f , g }
                     then
   主函数:             {
scan ;                   call A ;
call S ;                 match ( a );
                         call B ;
if token =′#′ then
                     }
    accept
                     else if token in { d , e ,
else error ;         b}
                     then
                     {
                         call B ;
                         match ( b );             24

                     }
   函数 A :
if token =′ a′               函数 B :
then                         if token =′ d′
                             then match ( d );
{                            else if token =′ e′
    match ( a );             then match ( e );
    call D ;                 else if token in { b ,#
}                            }
else if token in { f , g }   then return ;
then call D ;                else error ;
else error ;

                                                       25
   函数 D :
if token =′ f′
then
{
    match ( f );
    call D ;
}
else if token =′ g′
then match ( g );
else error ;

                      26
本章小结


       27
基本知识点:
      自顶向下语法分析的基本思想
 和面临的问题;避免回溯对文法的要求
 ;提取左公共因子,消除左递归的方法
 ;表驱动预测分析方法。
重点及难点:
   FIRST 集、 FOLLOW 集、 SELECT
 集的求法; LL(1) 文法的判断; LL(1)
 分析表的构造。


                           28

More Related Content

What's hot

第2章符 号 运 算
第2章符 号 运 算第2章符 号 运 算
第2章符 号 运 算eterou
 
第3章算法与控制语句
第3章算法与控制语句第3章算法与控制语句
第3章算法与控制语句summerfeng
 
計概筆記1
計概筆記1計概筆記1
計概筆記1shademoon
 
第三章 栈和队列(新)
第三章 栈和队列(新)第三章 栈和队列(新)
第三章 栈和队列(新)Wang Yizhe
 
C程式-函式與巨集
C程式-函式與巨集C程式-函式與巨集
C程式-函式與巨集艾鍗科技
 
Python 入門
Python 入門 Python 入門
Python 入門 Andy Yao
 
C程式-陣列與指標
C程式-陣列與指標C程式-陣列與指標
C程式-陣列與指標艾鍗科技
 
05 计算机的运算方法02
05 计算机的运算方法0205 计算机的运算方法02
05 计算机的运算方法02Huaijin Chen
 
Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍dennis zhuang
 
Ptyhon 教學 001 程式流程控制(if-elif-else)
Ptyhon 教學 001 程式流程控制(if-elif-else)Ptyhon 教學 001 程式流程控制(if-elif-else)
Ptyhon 教學 001 程式流程控制(if-elif-else)信宏 陳
 
北京亿阳信通笔试题Java+Oracle
北京亿阳信通笔试题Java+Oracle北京亿阳信通笔试题Java+Oracle
北京亿阳信通笔试题Java+Oracleyiditushe
 
C語言 第一章 C語言簡介
C語言 第一章 C語言簡介C語言 第一章 C語言簡介
C語言 第一章 C語言簡介shademoon
 
Intro to C++ Basic
Intro to C++ BasicIntro to C++ Basic
Intro to C++ BasicShih Chi Lin
 
实验一 Mathematica软件简介
实验一   Mathematica软件简介实验一   Mathematica软件简介
实验一 Mathematica软件简介guestfe33f0e
 
C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式shademoon
 
C語言 第五章 程式流程控制
C語言 第五章 程式流程控制C語言 第五章 程式流程控制
C語言 第五章 程式流程控制shademoon
 

What's hot (20)

Python程式設計 - 串列資料應用
Python程式設計 - 串列資料應用 Python程式設計 - 串列資料應用
Python程式設計 - 串列資料應用
 
Python變數與資料運算
Python變數與資料運算Python變數與資料運算
Python變數與資料運算
 
第2章符 号 运 算
第2章符 号 运 算第2章符 号 运 算
第2章符 号 运 算
 
第3章算法与控制语句
第3章算法与控制语句第3章算法与控制语句
第3章算法与控制语句
 
計概筆記1
計概筆記1計概筆記1
計概筆記1
 
第三章 栈和队列(新)
第三章 栈和队列(新)第三章 栈和队列(新)
第三章 栈和队列(新)
 
Python程式設計 - 分支作業
Python程式設計 - 分支作業Python程式設計 - 分支作業
Python程式設計 - 分支作業
 
Python基本資料運算
Python基本資料運算Python基本資料運算
Python基本資料運算
 
C程式-函式與巨集
C程式-函式與巨集C程式-函式與巨集
C程式-函式與巨集
 
Python 入門
Python 入門 Python 入門
Python 入門
 
C程式-陣列與指標
C程式-陣列與指標C程式-陣列與指標
C程式-陣列與指標
 
05 计算机的运算方法02
05 计算机的运算方法0205 计算机的运算方法02
05 计算机的运算方法02
 
Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍Ihome inaction 篇外篇之fp介绍
Ihome inaction 篇外篇之fp介绍
 
Ptyhon 教學 001 程式流程控制(if-elif-else)
Ptyhon 教學 001 程式流程控制(if-elif-else)Ptyhon 教學 001 程式流程控制(if-elif-else)
Ptyhon 教學 001 程式流程控制(if-elif-else)
 
北京亿阳信通笔试题Java+Oracle
北京亿阳信通笔试题Java+Oracle北京亿阳信通笔试题Java+Oracle
北京亿阳信通笔试题Java+Oracle
 
C語言 第一章 C語言簡介
C語言 第一章 C語言簡介C語言 第一章 C語言簡介
C語言 第一章 C語言簡介
 
Intro to C++ Basic
Intro to C++ BasicIntro to C++ Basic
Intro to C++ Basic
 
实验一 Mathematica软件简介
实验一   Mathematica软件简介实验一   Mathematica软件简介
实验一 Mathematica软件简介
 
C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式C語言 第三章 03 運算子、運算元與運算式
C語言 第三章 03 運算子、運算元與運算式
 
C語言 第五章 程式流程控制
C語言 第五章 程式流程控制C語言 第五章 程式流程控制
C語言 第五章 程式流程控制
 

Viewers also liked

Abiquo 2.0 from 1000 feet
Abiquo 2.0 from 1000 feetAbiquo 2.0 from 1000 feet
Abiquo 2.0 from 1000 feetabiquo labs
 
Blog pp cultural diversity
Blog pp cultural diversityBlog pp cultural diversity
Blog pp cultural diversityPaulineHeadley
 
アートに携わる人のための、作品制作とプロモーションのテクニック 先生:矢崎海先生
アートに携わる人のための、作品制作とプロモーションのテクニック 先生:矢崎海先生アートに携わる人のための、作品制作とプロモーションのテクニック 先生:矢崎海先生
アートに携わる人のための、作品制作とプロモーションのテクニック 先生:矢崎海先生schoowebcampus
 
March Newsletter
March NewsletterMarch Newsletter
March Newslettermjcunny
 
5 things i gained by losing my breasts
5 things i gained by losing my breasts 5 things i gained by losing my breasts
5 things i gained by losing my breasts Rene Syler
 
法政大学--「キャリアデザインの理論」そのウラ・オモテ(1限目:心理とキャリアデザイン) 先生:田澤 実
法政大学--「キャリアデザインの理論」そのウラ・オモテ(1限目:心理とキャリアデザイン) 先生:田澤 実法政大学--「キャリアデザインの理論」そのウラ・オモテ(1限目:心理とキャリアデザイン) 先生:田澤 実
法政大学--「キャリアデザインの理論」そのウラ・オモテ(1限目:心理とキャリアデザイン) 先生:田澤 実schoowebcampus
 
Demystifying Wordpress Part 2
Demystifying Wordpress Part 2Demystifying Wordpress Part 2
Demystifying Wordpress Part 2weareonfire
 
用药安全
用药安全用药安全
用药安全alise521
 
Thor Int Broch
Thor Int BrochThor Int Broch
Thor Int Brochandrewdack
 
Catalogo di barneschi vivai
Catalogo di barneschi vivaiCatalogo di barneschi vivai
Catalogo di barneschi vivaiBarneschiVivai
 
Secadoras de grano (Spanish)
Secadoras de grano (Spanish)Secadoras de grano (Spanish)
Secadoras de grano (Spanish)Silos Cordoba
 
Prezentare Your Promo Innovaty
Prezentare Your Promo InnovatyPrezentare Your Promo Innovaty
Prezentare Your Promo InnovatyAndreea Vladau
 
Revista Catalunya 141 Juliol 2012
Revista Catalunya 141 Juliol 2012Revista Catalunya 141 Juliol 2012
Revista Catalunya 141 Juliol 2012Revista Catalunya
 
Biodiesel Production from Jatropha Curcas Oil Using Potassium Carbonate as an...
Biodiesel Production from Jatropha Curcas Oil Using Potassium Carbonate as an...Biodiesel Production from Jatropha Curcas Oil Using Potassium Carbonate as an...
Biodiesel Production from Jatropha Curcas Oil Using Potassium Carbonate as an...ZX7
 
Co-Creative時代の企画・ディレクション 先生:阿部淳也
Co-Creative時代の企画・ディレクション 先生:阿部淳也Co-Creative時代の企画・ディレクション 先生:阿部淳也
Co-Creative時代の企画・ディレクション 先生:阿部淳也schoowebcampus
 

Viewers also liked (20)

Abiquo 2.0 from 1000 feet
Abiquo 2.0 from 1000 feetAbiquo 2.0 from 1000 feet
Abiquo 2.0 from 1000 feet
 
Blog pp cultural diversity
Blog pp cultural diversityBlog pp cultural diversity
Blog pp cultural diversity
 
アートに携わる人のための、作品制作とプロモーションのテクニック 先生:矢崎海先生
アートに携わる人のための、作品制作とプロモーションのテクニック 先生:矢崎海先生アートに携わる人のための、作品制作とプロモーションのテクニック 先生:矢崎海先生
アートに携わる人のための、作品制作とプロモーションのテクニック 先生:矢崎海先生
 
March Newsletter
March NewsletterMarch Newsletter
March Newsletter
 
The bahamas
The bahamasThe bahamas
The bahamas
 
5 things i gained by losing my breasts
5 things i gained by losing my breasts 5 things i gained by losing my breasts
5 things i gained by losing my breasts
 
法政大学--「キャリアデザインの理論」そのウラ・オモテ(1限目:心理とキャリアデザイン) 先生:田澤 実
法政大学--「キャリアデザインの理論」そのウラ・オモテ(1限目:心理とキャリアデザイン) 先生:田澤 実法政大学--「キャリアデザインの理論」そのウラ・オモテ(1限目:心理とキャリアデザイン) 先生:田澤 実
法政大学--「キャリアデザインの理論」そのウラ・オモテ(1限目:心理とキャリアデザイン) 先生:田澤 実
 
Presentation 2
Presentation 2Presentation 2
Presentation 2
 
Demystifying Wordpress Part 2
Demystifying Wordpress Part 2Demystifying Wordpress Part 2
Demystifying Wordpress Part 2
 
用药安全
用药安全用药安全
用药安全
 
Thor Int Broch
Thor Int BrochThor Int Broch
Thor Int Broch
 
Catalogo di barneschi vivai
Catalogo di barneschi vivaiCatalogo di barneschi vivai
Catalogo di barneschi vivai
 
Secadoras de grano (Spanish)
Secadoras de grano (Spanish)Secadoras de grano (Spanish)
Secadoras de grano (Spanish)
 
Vincze lászló
Vincze lászlóVincze lászló
Vincze lászló
 
Prezentare Your Promo Innovaty
Prezentare Your Promo InnovatyPrezentare Your Promo Innovaty
Prezentare Your Promo Innovaty
 
Revista Catalunya 141 Juliol 2012
Revista Catalunya 141 Juliol 2012Revista Catalunya 141 Juliol 2012
Revista Catalunya 141 Juliol 2012
 
Parlamentul Canadei
Parlamentul CanadeiParlamentul Canadei
Parlamentul Canadei
 
Biodiesel Production from Jatropha Curcas Oil Using Potassium Carbonate as an...
Biodiesel Production from Jatropha Curcas Oil Using Potassium Carbonate as an...Biodiesel Production from Jatropha Curcas Oil Using Potassium Carbonate as an...
Biodiesel Production from Jatropha Curcas Oil Using Potassium Carbonate as an...
 
Co-Creative時代の企画・ディレクション 先生:阿部淳也
Co-Creative時代の企画・ディレクション 先生:阿部淳也Co-Creative時代の企画・ディレクション 先生:阿部淳也
Co-Creative時代の企画・ディレクション 先生:阿部淳也
 
B.area 51
B.area 51B.area 51
B.area 51
 

Similar to 第4章 自顶向下的语法分析

第5章 自底向上的语法分析
第5章 自底向上的语法分析第5章 自底向上的语法分析
第5章 自底向上的语法分析tjpucompiler
 
Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18Derek Lee
 
锁具装箱
锁具装箱锁具装箱
锁具装箱visayafan
 
第2章 文法和语言
第2章 文法和语言第2章 文法和语言
第2章 文法和语言tjpucompiler
 
第3章 词法分析
第3章 词法分析第3章 词法分析
第3章 词法分析tjpucompiler
 
ncuma_SymPy符號運算套件.pptx
ncuma_SymPy符號運算套件.pptxncuma_SymPy符號運算套件.pptx
ncuma_SymPy符號運算套件.pptxNCU MCL
 
实验一 Mathematica软件简介
实验一   Mathematica软件简介实验一   Mathematica软件简介
实验一 Mathematica软件简介Xin Zheng
 
人机对弈编程概述
人机对弈编程概述人机对弈编程概述
人机对弈编程概述勇浩 赖
 

Similar to 第4章 自顶向下的语法分析 (11)

第5章 自底向上的语法分析
第5章 自底向上的语法分析第5章 自底向上的语法分析
第5章 自底向上的语法分析
 
Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18Python入門:5大概念初心者必備 2021/11/18
Python入門:5大概念初心者必備 2021/11/18
 
Pairing for beginneer
Pairing for beginneerPairing for beginneer
Pairing for beginneer
 
锁具装箱
锁具装箱锁具装箱
锁具装箱
 
第2章 文法和语言
第2章 文法和语言第2章 文法和语言
第2章 文法和语言
 
第3章 词法分析
第3章 词法分析第3章 词法分析
第3章 词法分析
 
ncuma_SymPy符號運算套件.pptx
ncuma_SymPy符號運算套件.pptxncuma_SymPy符號運算套件.pptx
ncuma_SymPy符號運算套件.pptx
 
实验一 Mathematica软件简介
实验一   Mathematica软件简介实验一   Mathematica软件简介
实验一 Mathematica软件简介
 
人机对弈编程概述
人机对弈编程概述人机对弈编程概述
人机对弈编程概述
 
Scala+RDD
Scala+RDDScala+RDD
Scala+RDD
 
03 110mathb
03 110mathb03 110mathb
03 110mathb
 

More from tjpucompiler

第6章 自底向上的lr分析法
第6章 自底向上的lr分析法第6章 自底向上的lr分析法
第6章 自底向上的lr分析法tjpucompiler
 
第11章 目标代码生成
第11章 目标代码生成第11章 目标代码生成
第11章 目标代码生成tjpucompiler
 
第10章 代码优化
第10章 代码优化第10章 代码优化
第10章 代码优化tjpucompiler
 
第8章 运行时的存储管理
第8章 运行时的存储管理第8章 运行时的存储管理
第8章 运行时的存储管理tjpucompiler
 
第6章 自底向上的lr分析法
第6章 自底向上的lr分析法第6章 自底向上的lr分析法
第6章 自底向上的lr分析法tjpucompiler
 

More from tjpucompiler (7)

第6章 自底向上的lr分析法
第6章 自底向上的lr分析法第6章 自底向上的lr分析法
第6章 自底向上的lr分析法
 
第11章 目标代码生成
第11章 目标代码生成第11章 目标代码生成
第11章 目标代码生成
 
第10章 代码优化
第10章 代码优化第10章 代码优化
第10章 代码优化
 
第9章 符号表
第9章 符号表第9章 符号表
第9章 符号表
 
第8章 运行时的存储管理
第8章 运行时的存储管理第8章 运行时的存储管理
第8章 运行时的存储管理
 
第6章 自底向上的lr分析法
第6章 自底向上的lr分析法第6章 自底向上的lr分析法
第6章 自底向上的lr分析法
 
第1章 概论
第1章 概论第1章 概论
第1章 概论
 

Recently uploaded

30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...ggbob1
 
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...黑客 接单【TG/微信qoqoqdqd】
 
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制gravestomas0
 
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdfshanshanhui1
 
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務sardinesaying
 
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??testhelper Sobrenome
 
GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...
GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...
GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...黑客 接单【TG/微信qoqoqdqd】
 
🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...
🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...
🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...黑客 接单【TG/微信qoqoqdqd】
 
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...黑客 接单【TG/微信qoqoqdqd】
 
Grade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxGrade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxPriscilleXu
 
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...ggbob1
 
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...黑客 接单【TG/微信qoqoqdqd】
 
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制bairnshajjes
 
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptxJAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptxCHANSUITNEEMoe
 

Recently uploaded (14)

30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
 
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
 
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
 
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
 
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務
 
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
 
GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...
GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...
GPA低怎么办? | 身份黑后回复方案 | 出入境激活 身份恢复美本GPA太低了怎么办黑客服务,黑客修改大学成绩,黑客改成绩单,黑客入侵教务系统,找黑客修...
 
🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...
🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...
🎉一键更改成绩单,轻松点亮你的未来! 💡[书]想知道自己成绩怎么样?别担心!我们来帮您解答疑惑。 在这里,只需轻轻一点按钮,就能立即查看到分数、排名和其他...
 
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
 
Grade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxGrade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptx
 
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
 
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
 
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
 
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptxJAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
JAWAPAN BUKU AKTIVITI BAHASA CINA TAHUN 3.pptx
 

第4章 自顶向下的语法分析

  • 3. 产生式的可选集— select 集 给定文法 G ,对于产生式 A→α , α∈ V* , 如果它的编号为 i ,则它的可选集 SELECT ( A→α )定义如下(也可以用 SELECT ( i )表 示) :  ( 1 )若 α ≠ ε ,且 α ≠>* ε ,则 SELECT ( i )= FIRST ( α );  ( 2 )若 α ≠ ε ,但 α =>*ε ,则 SELECT ( i )= FIRST ( α )∪ FOLLOW ( A );  ( 3 )若 α = ε ,则 SELECT ( i )= 3 FOLLOW ( A )。
  • 4. 例 1 :文法 G[S] : S →AB | bC A →b | ε B →aD | ε C →AD | b D →aS | c 求各产生式的可选集。 4
  • 5. 例 2 :文法 G[S] : S →aBC B →bC | dB | ε C →c | a 求各产生式的 select 集。 5
  • 6. LL(1) 文法 一个上下文无关文法称为是 LL ( 1 )文法,当且仅当同一非终结符 的各个产生式的可选集互不相交。 LL ( 1 )含义: 第一个 L :自顶向下分析是从左向右扫描输入 串; 第二个 L :使用最左推导方法分析句子; 数字 1 : 分析时只需查看一个输入符号便 可决定如何推导(选择哪一个产生式进行推 6 导)。
  • 7. 例 1 :给定文法 G [ E ]: E→ TE′ E′ → ATE′ | ε T→ FT′ T′ →MFT′ | ε F→ ( E )| i A→ +|- M→ * |/ 判断该文法是否为 LL ( 1 )文法。 7
  • 8. 说明: 若文法中含公共左因子有直接或 间接左递归,或含有则该文法肯定不是 LL ( 1 )文法。 此时,可以设法消除文法中 的左递归,提取公共左因子来对文法进 行等价变换,这样就可能使其变为 LL ( 1 )文法。 8
  • 10. 4.4.1 LL(1) 分析器的逻辑结构 LL ( 1 )分析法也称为预测分析法,采用 这种方法的分析器由三个部分组成,一张 LL(1) 分 析表(预测分析表)、一个控制程序和一个分析 栈。 10
  • 11. 4.4.2 LL(1) 分析表的结构及构造方法 构造 LL ( 1 )分析表: 假定初始分析表 L [ A , a ] 是空白的,分析表元素 L [ A , a ]可按 下述规则确定: (1) 对于文法中的每个产生式 A→α ,若 a∈ SELECT ( A→α ),则把 A→α 置于 L [ A , a ]中,其中 a 为终结符或#; (2) 凡未定义的表元素 L [ A , a ]均标上出错标 志。为了使表简化,表中出错处用空白表示。 11
  • 12. 产生式 FIRST FOLLOW SELECT E→TE′ {(, i } {),#} {(, i } E′→ATE′ {+,- {),#} {+,-} E′→ε {}} ε {),#} T→FT′ {(, i } {+,-, ) , # } {(, i ) T′→MFT′ { * ,/ {+,-, ) , # } { * ,/} T′→ε {}} ε {+,-, ) , F→ ( E {() {+,-, * , #} {(} ) F→i {i} /, ) , # } {i} A→ + {+} {(, i ) {+} A→ - {-} {-} M→* {*} {(, i } {*} M→ / {/} {/} 12
  • 13. ( ) i + - * / # E E→TE′ E→TE′ E′ E′→ε E′→ATE′ E′→ATE′ E′→ε T T→FT′ T→FT′ T′ T′→ε T′→ε T′→ε T′→MFT′ T′→MFT′ T′→ε F F→(E) F→i A A→ + A→ - M M→* M→/ 13
  • 14. LL ( 1 )分析表的构造算法 其中: n 是最大产生式编号; i : A→α 表示第 i 个产生式是 A→α 。  i: = 1 ;  do  for i : A→α do  for 每个 a∈ SELECT ( i ) do  把 A→α 填入 L ( A , a )中;  i: = i + 1 ;  while (i≤n) ; 14  向其余空白 L ( A , a )中填入“出错码”;
  • 15. 4.4.3 LL(1) 分析器的工作流程  LL(1) 分析器对每个输入串的分析在控制程序的 控制下进行,其大致步骤如下: 1 、初始化,即首先将栈底符号#和文法的开始符 号推入分析栈,此时分析栈和输入串有如下格 局: 分析栈 输入 TOKEN 串 #S a1a2…an # 2 、 ( 反复执行 ) 设在分析的某一时刻,分析栈和 余留的输入串处于如下的格局 ( 其 中, Xi∈ VN∪ VT) : 15 分析栈
  • 16. (1) 若 Xm = ai ,则表明栈顶符号与当前正扫视的 输入符号 ai 相匹配,此时,应将 Xm 从栈中移出 ,输入串指针下移一个位置,指向下一个输入 符号 ai + 1 ,准备对下一个字符的分析;特别是 ,若 Xm = ai =#,则表明输入串已完全得到匹 配,它是文法的合法句子,分析成功,停止分 析器的工作。 (2) 若 Xm∈ VN ,查符号表,若 L[Xm , ai] 为产生式 Xm→Y1Y2…Yk ,则 Xm 从栈顶移出,并将 Y1Y2… Yk 反序依次推入栈中,得到如下格局: 分析栈 输入 TOKEN 串 16 #X1X2…Xm-1YkYk-1…Y1 aiai+1…an #
  • 17. 将′#′和文法开始符号依次入栈;  把字符串的第一个符号送给 a ;  do  弹出分析栈栈顶符号送给 X ;  if X = a then  将 X 从栈中弹出;  把字符串下一个符号送给 a ;  else if X∈ VN then  if L[X , a] 为 X→Y1Y2…Yk then  将 X 从栈中弹出;  将 Yk…Y2Y1 依次入栈;  else error ;  while(X≠′ #′ ) ; 17  if X = a =′#′ then 正确接收,分析 结束;
  • 18. 步骤 分析栈 余留输入串 所用产生式 1 #E i+i*i# E→TE′ 2 #E′ T i+i*i# T→FT′ 3 #E′ T′ F i+i*i# F→i 4 #E′ T′ i i+i*i# 5 #E′ T′ +i*i# T′→ε 6 #E′ +i*i# E′→ATE′ 7 #E′ TA +i*i# A→ + 8 #E′ T+ +i*i# 9 #E′ T i*i# T→FT′ 10 #E′ T′ F i*i# F→i 11 #E′ T′ i i*i# 12 #E′ T′ *i# T′→MFT′ 13 #E′ T′ FM *i# M→* 14 #E′ T′ F* *i# 15 #E′ T′ F i# F→i 16 #E′ T′ i i# 17 #E′ T′ # T′→ε 18 #E′ # E′→ε 18 19 # # 分析成功
  • 19. 4.5 递归下降法  递归下降法的基本思想:为每个非终结符 编制一个子程序,子程序的名字表示一个 产生式左部的非终结符,程序体则是按该 产生式右部的符号串顺序编写的。每匹配 一个终结符,则再读入下一个符号,对于 产生式右部的每个非终结符,则调用相应 子程序。当一个非终结符对应多个候选式 时,子程序体按可选集决定选用哪个候选 式。 19
  • 20. 例,给定文法 G [ S ]: S→AaB | Bb A→aD | D B→d | e | ε D→fD | g 写出其递归下降分析程序。 20
  • 21. 产生式 FIRST 集 FOLLOW SELECT 集 S→AaB { a, f {#} 集 { a, f S→Bb { dg, e , } { dg, e , } A→aD , b} {a { a} , b} {a A→D { f, g { f, g B→d {}}d {}} d B→e { e} { b ,# { e} B→ε { ε} } { b ,# D→fD { f} { a} {}} f D→g { g} { g} 21
  • 22. 每个非终结符号对应产生式的各 个候选式的交集如下所示: SELECT ( S→AaB )∩ SELECT ( S→Bb ) =Φ SELECT ( A→aD )∩ SELECT ( A→D ) =Φ SELECT ( B→d )∩ SELECT ( B→e )= Φ SELECT ( B→d )∩ SELECT ( B→ε )= Φ 22 SELECT ( B→e )∩ SELECT ( B→ε )= Φ
  • 23. 递归下降语法分析程序: scan 表示调用词法分析程序读入下一个单 词至变量 token ; error 表示报错; match(a) 表示若当前输入单词为 a ,则调 用 scan ,否则调用 error ; 23
  • 24. 函数 S : if token in { a , f , g } then  主函数: { scan ; call A ; call S ; match ( a ); call B ; if token =′#′ then } accept else if token in { d , e , else error ; b} then { call B ; match ( b ); 24 }
  • 25. 函数 A : if token =′ a′ 函数 B : then if token =′ d′ then match ( d ); { else if token =′ e′ match ( a ); then match ( e ); call D ; else if token in { b ,# } } else if token in { f , g } then return ; then call D ; else error ; else error ; 25
  • 26. 函数 D : if token =′ f′ then { match ( f ); call D ; } else if token =′ g′ then match ( g ); else error ; 26
  • 28. 基本知识点: 自顶向下语法分析的基本思想 和面临的问题;避免回溯对文法的要求 ;提取左公共因子,消除左递归的方法 ;表驱动预测分析方法。 重点及难点: FIRST 集、 FOLLOW 集、 SELECT 集的求法; LL(1) 文法的判断; LL(1) 分析表的构造。 28