现在的位置: 首页 > 综合 > 正文

以考带学编译原理

2013年05月24日 ⁄ 综合 ⁄ 共 2307字 ⁄ 字号 评论关闭

        编译原理是通过一定的过程来转换的,我们将高级语言编写的代码翻译成对应的机器语言。

       我把编译过程按照理解的程度画了一个图,如下面所示,

      

     以考带学编译原理部分主要掌握的重点知识是:

      1、文法:

           1.1文法定义

           1.2文法分类

      2、正规式

           2.1正规式与正规文法之间的转换

      3、有限自动机

           3.1确定的有限自动机与不确定的有限自动机的定义。(DFA和NFA)

      4、语法分析

           4.1语法推导树

        文法定义描述语言的语法结构的形式规则称为文法。

         文法G的一个四元组,可表示为GVT,VN,S, P)。

         
VT
是一个非空有限集,每个元素称为终结符。(终结符不能单独出现在推导式左边,不能被分解,也不能被代替。一般用小写字母表示)

         
VN
是一个非空有限集,每个元素称为非终结符。(非终结符理解为可以拆分的元素,一个程序可以理解为一个非终结符。一般用大写字母表示)

          S是一个产生式集合(有限)。

          P是一个非终结符,称为开始符号;它至少要在一条产生式中作为左部出现。

       文法的描述:αβ

       例子

      a→b    (×)(这种写法是错误的,因为a是终结符,不能单独的出现在推导式左边

       S→aT    (√)(ST是非终结符a是终结符

        文法分类:

                                            

                0型文法:对任一产生式α→β,都有α∈(VNVT)*,且α至少包含一个非终结符,
β∈(VNVT)*

               1型文法:此文法对应于线性有界自动机。他是在0型文法的基础上每一个产生式α→β,都有|β|≥|α|。这里的|β|表示的是β的长度。

特例:α→ε也满足1型文法。
    
2型文法:对任一产生式α→β,都有α∈VN, β∈(VNVT)* 

         3型文法(1)右线性文法:任一产生式α→β的形式都为AaBAa,其中AVNBVN
aVT

                (2)左线性文法:任一产生式α→β的形式都为ABaAa,其中AVN
BVNaVT

          四种文法的关系图:

                                    

 

           
正规式:

                          

           
确定的有限自动机(DFA):

           一个确定的有穷自动机(DFA)M是一个五元组:M=(KΣfSZ其中
      1.K是一个有穷集,它的每个元素称为一个状态;

      2.Σ是一个有穷字母表,它的每个元素称为一个输入符号,所以也称Σ为输入符号表

      3.f是转换函数,是在K×ΣK上的映射,即,如
fki
a)=kj,(kiKkjK)就意味着,当前状态为ki,输入符为a时,将转换为下一个状态kj,我们把kj称作ki的一个后继状态;
      4. SK是唯一的一个初态;

           
5. Z是K的子集,是一个终态集;

           举例:

           DFA M=({S,A,B,C},{1,0},f,S,{C})其中f定义为:
            f
(S,1)=A
     f(B,1)=A
            f(S,0)=B
     f(B,0)=C
            f(A,1)=C
     f(C,1)=C
            f(A,0)=B
     f(C,0)=C

      其对应的状态图如图:

     

           
不确定的有限自动机(NFA):
  

                 

                
与确定的有限自动机比较,唯一的区别就是不确定的有限自动机的S是K的子集,可以有多个初态值。

      举例:

      NFA M=({S,A,B},{0,1},f,{S,A},{B})

      其中
      f(S,0)={A}
      f(B,0)={A}
      f(A,1)={B}
      f(B,1)={A}
      f(S,1)={S,B}

    
其对应的状态图如图


                 
语法推导树:

           语法树的特征:

      1、每个节点都有一个标记,此标记是V的一个符号;

      2、根的标记是S;

      3、若一节点n至少有一个它自己除外的子孙,并且有标记A,则A可定在VN中;

      4、如果节点n的直接子孙,从左到右的次序是节点n1,n2...nk其标记分别是:A1,A2...Ak,那么A→A1,A2...Ak一定是P中的一个产生式。

            
构造句型推导树

          例子:

     
文法G=({a,b},{S,A},S,P),其中:

          S→aAS|a

          A→SbA|SS|ba

       请构造句型aabAa的推导树。

       写开:

          S→aAS

          S→a

          A→SbA

          A→SS

          A→ba

         

   

      

      

                 

    

                

【上篇】
【下篇】

抱歉!评论已关闭.