编译原理-第二章-高级语言及语法描述

本文介绍了高级语言的语法和语义定义,涵盖了语法规则、词法规则、上下文无关文法等内容。并探讨了静态类型语言与动态类型语言的区别,以及如何通过文法和语言进行相互转换。

第二章-高级语言及语法描述

一、内容

    定义程序语言首先要确定其语法语义。

    语法分为两部分,一部分是语法规则,一部分是词法规则。

    字母表是对组成语言的基础字符集的规定,词法规则规定单词符号,而由单词符号组成的表达式则称为语法单位或语法范畴。

    单词符号是语言中具有独立意义的最基础结构。 

    语法,即一组能生成形式上正确程序的规则。词法规则:有限状态自动机 正则表达式 。语法规则:上下文无关文法。

    

    语义,定义一个程序意义的规则。语义规则:描述语法单位含义和功能。描述:属性文法和基于属性文法的语言制导翻译方法。



        符号串的正闭包

        A是符号串集合,则A+称为符号串集合A的正闭包   

        A+ = A+=A1∪A2∪A3 …∪An…

        符号串集合的的星闭包(与高中数学中全集的概念近似)

        A* =A0∪A1∪A2∪A3 …∪An…=A0∪A+
 
 

        根据是否需要在编译过程中确定类型来分:静态,动态。

        动态类型语言
        在运行时,确定类型的语言。即编译时与类型无关。
        一般在变量使用之前不需要声明变量类型,而变量的类型通常是由被赋的值的类型决定。 如php、Python和Ruby。

        静态类型语言

        与动态类型语言正好相反,在编译时,便需要确定类型的语言。即写程序时需要明确声明变量类型。如C/C++、Java、C#等。

        程序设计语言支持特定的数据类型与操作。

        程序设计语言支持不同的语句与控制结构。

符号串集合V自身的n次(连接)积记为:
  Vn = V V…V   (n个V)
 规定 V0 = {}.
V的闭包:
  令: V*  = V0V1V2…
   称 V*是V的闭包。
V的正则包(正闭包,正则闭包):
记V+ = VV*, 称 V+是V的正则包,即V+ =V1V2V3…。



二、习题

6. (1)、L(G6)是数字构成的字符串。

   (2)、N->ND->NdD->NDDD->DDDD->0DDD->01DD->012D->0127

          N->ND->DD->3D->34

          N->ND->NDD->DDD->5DD->56D->568

7.L(G7):

    S->BO|O

    O->1|3|5|7|9

    D->2|4|6|8|O

    B->BA|O

    A->0|D

8.

9.

    句子iiiei有两个语法树

    S->iSeS->iiSeS->iiieS->iiiei

    S->iS->iiSeS->iiieS->iiiei

10.S->TS|T

    T->(S)|( )

11.(1)S->A|C

        A->abA|ab

        C->cC|c|∑

    (2)S->A|C

        A->bcA|bc

        C->aC|a|∑

    (3)S->A

        A->ab|abA|∑

     (4)S->A

         A->10|10A|∑

三、感受

      很明显这是极为抽象的一个内容,讲解了高级语言是如何被定义和生成的。语言定义分为语法语义,语法包含语法规则和词法规则。语法能规定生成一组形式上正确的语言。语义则是规定语法单位的含义功能,并使语言产生具体意义。

      文法是描述语言的语法结构的形式规则。而上下文无关文法,所定义的语法范畴是完全独立于这种范畴可能出现的环境的。

      上下文无关文法包括四部分:一组终结符号,一组非终结符号,一个开始符号,一组产生式。

        语法树:有图的形式来表示一个句型的推导。语法树并不能反应产生后代的先后。也就说语法树后代产生顺序是任意的,但对应的文法是确定的。语法树->文法是多对一的关系。

      通过本章习题学到的是:文法和语言的转换,出题思路不是文法转语言就是语言转文法。且二义性问题是无法判定的,语法的二义性是要通过语句的语法树数目来确定的。也可以通过一个语句能有两个不同的最左或最右推导来确定具有二义性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值