第四章 程序语言的性质 语言的形式化模型 BNF为描述程序设计语言的属性提供了一种很好的手段,但并不是充分的手段。BNF回答了程序看起来象什么,但没有回答程序是做什么的。 形式化模型采用精确的数学模型来刻画研究对象,为研究、分析和操纵研究对象提供严谨的数学工具和手段。 本章将介绍下列形式化模型: 形式文法:乔姆斯基文法分级 语言的语义:属性文法、指称语义 程序的验证 4.1 语言的形式化性质 乔姆斯基分级文法 语言的能力 乔姆斯基分级文法 文法 由非终结符、终结符、开始(非终结)符、及产生式构成 文法的类别 3型文法:正则文法,定义词法的模型 2型文法:BNF文法,上下文无关文法 1型文法:上下文有关文法 0型文法: 3型文法:正则文法 为词法分析器提供模型。 这类文法的大多数性质都是可判定的 如,能产生什么样的串、给定串是否属于文法规定的语言、语言中的串是否有限等 正则文法可以产生形如an的串,其中a为有限字符序列 正则文法只能计数有限数 常用于关键字或单词扫描 2型文法—上下文无关文法 产生式的形式为:X ? ?, 其中?可以是终结符和非终结符的任意序列 同样,这类文法的大多数性质都是可判定的 如,能产生什么样的串、给定串是否属于文法规定的语言、语言是否为空等 可用来计数和比较两个项,产生形如ancbn的串 可以用堆栈来实现 可用来自动产生程序的语法分析树 2型和3型文法的相关
原创力文档

文档评论(0)