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

编译程序的工作过程一般可以划分为五个阶段:词法分析、语法分析、语义分析、中间代码的产生、优化、目标代码的生成。

1.语法三个基本概念:

    (1)字母表:有限字符集(类比组成单词的字母、组成词语的汉字)。

    (2)单词符号:是语言中具有独立意义的最基本结构(类比单词、词语)。

    (3)语法单位:由单词符号构成的更大的结构(类比句子、段落,程序语言中则是表达式、语句等)。

2.语法、语义、文法含义:

    (1)语法:一组规则,用这组规则可以产生形式上正确的程序。

    (2)语义:语义是指这样的一组规则,使用它可以定义一个程序的意义。

    (3)文法:文法是描述语言的语法结构的形式规则(即语法规则)。

以上copy的定义,能看懂但看起来费劲对吧,举个例子,我们定义一种简单的语言,它由4个字符(△○=1-)组成,4个字符合起来就是字母表;然后定义”含义为“女”、“○”为“男”、“=”为“看到”、“1△”“1○”分别为“女孩”“男孩”,这些就是一个或多个字符组成的单词符号;如果我说“○=1△”是一个完整的句子,可以表达完整的意思,那么它含义是什么,“男孩看到女”?

不通顺,因为还有语法规则(文法)没加进去——句子由主谓宾组成,“1○”“1△”做谓语时可省略“1”,“男孩看到女孩”应该对了吧,不,正确答案是男孩遇到女孩,“boy meets girl”,这就是的语义,语句的内在含义。

上述文法形式是这样的:

<句子>→<主语><谓语><宾语>

<主语>→<名词>

<谓语>→<动词>

<宾语>→<名词>

<名词>→1○

<名词>→1△

<动词>→=

表示左由右定义,可以推导:

<句子>→<主语><谓语><宾语>→<名词><动词><名词>→<1○><=><1△>

这一句子无视上下文,其文法即上下文无关文法,归纳起来,一个上下文无关文法G包括四个组成部分:一组终结符号VT,一组非终结符VN,一个开始符号S,以及一组产生式P。

形式上定义一个上下文无关文法G是一个四元式(VT,VN,S,P)。

关于产生式的推导,学完高数的应该没问题。

乔姆斯基把文法分为四种类型:0型,1型,2型,3型。

0型文法:

    G=(VT ,VN ,S ,P) 是一个0型文法,如果它的每个产生式是这样的结构 α→β
    α∈(VN∪VT)* 且至少有一个非终结符,而β∈(VN∪VT)* 。
    0型文法也称短语文法
    0型文法的描述能力相当于图灵机
    该文法所描述的语言称为0型语言,或者称递归可枚举语言

1型文法:

    产生式的形式为α→β
    其中|β|>=|α|, Sε 除外,但S不得出现于任何产生式的右部
    1型文法又称为上下文无关文法
    另一种定义形式:α1Aα2→α1βα2
    该文法所描述的语言又称上下文有关语言

2型文法:

    该文法的产生式满足:A→α
    A为非终结符,α为终结符和非终结符组成的符号串,可以是空串
    该文法又称为上下文无关文法
    该文法所描述的语言又称为上下文无关语言

3型文法:

    该文法的产生式满足:
    AαB 或 ABα
    A为非终结符, α为终结符组成的符号串,可以是空串
    该文法又称为右线性文法,或左线性文法,通称正规文法
    该文法所描述的语言又称为正规语言(用来描述词法规则)

学习小结:

刚开始学习,语法分析、文法翻译和语义分析都在后面,现在只能说是基本了解语法,尝试推导文法。

猜你喜欢

转载自blog.csdn.net/demagogic/article/details/79862340
今日推荐