您好、欢迎来到现金彩票网!
当前位置:2019欢乐棋牌 > 指称语义 >

3315 文法和推导

发布时间:2019-08-04 05:30 来源:未知 编辑:admin

  《编程语言原理(第10版)》第3章描述语法和语义,本章包括以下主题:首先定义语法和语义这两个术语;然后详细介绍描述语法最常用的方法-上下文无关文法(也称为巴科斯-诺尔范式,Backus-Naur Form),介绍的内容包括推导、语法分析树、歧义、运算符优先级和结合性,以及扩展的巴科斯-诺尔范式;随后介绍属性文法,它可用于描述程序设计语言的语法和静态语义;最后介绍描述语义的三种形式化方法-操作语义、公理语义和指称语义。本节为大家介绍文法和推导。

  文法是一种定义语言的生成工具。通过对规则的一系列应用,可以生成语言的句子,该句子的开头是文法的一个特定非终结符,称为起始符号。所应用的这一系列规则称为推导。在完整的程序设计语言文法中,起始符号表示一个完整的程序,通常名为程序。例3.1所示的简单文法说明了什么是推导。

  例3.1中文法描述的语言只有一种语句形式:赋值。程序包括特殊字begin,后跟由分号分隔的一系列语句,最后是特殊字end。表达式是单个变量,或者用+或-运算符分隔的两个变量。在这种语言中,变量名只有A、B和C。

  同所有推导一样,这个推导从起始符号(在这个例子中是程序)开始。符号=读作推出。推导序列中,每一个后面的字符串都是用非终结符的一个定义来替换前面字符串中的一个非终结符而推出的。推导过程中的每个字符串,包括程序,都称为句型。

  在上面的推导中,被替换的非终结符总是前面一个句型中最左边的非终结符。以这种替换顺序进行的推导称为最左推导。推导过程一直进行到句型不包含非终结符为止。这个只包含终结符(或词素)的句型是生成的句子。

  除了最左推导外,还有最右推导,以及既不是最左也不是最右的推导。推导顺序对文法生成的语言没有影响。

  选择不同的规则RHS来替换推导中的非终结符,可以生成语言的不同句子。穷举所有选择的组合,就可以生成完整的语言。这种语言与其他大多数语言一样,是无限的,因此无法在有限的时间内生成语言中的所有句子。

  例3.2的文法描述了赋值语句,它的右边是具有乘法、加法运算符以及圆括号的算术表达式。例如,语句

http://acetechpng.com/zhichenyuyi/469.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有