编译原理2

97 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第16天,点击查看活动详情

程序语言的定义

语义:所谓一个语言的语义是指这样的一组规则,使用它可以定义一个程序的意义

一个程序语言的基本功能是描述数据和对数据的运算

程序语言的每个组成部分都有(抽象的)逻辑和计算机实现两方面的意义

程序语言语法描述:

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

上下文无关文法:一组终结符号;一组非终结符号;一个开始符号;一组产生式。

形式上说,一个上下文无关文法G是一个四元式(VT,VN,S,ℋ),其中:

VT是一个非空有限集,它的每个元素称为终结符号;

VN是一个非空有限集,它的每个元素称为非终结符号,VT∩VN=φ;

S是一个非终结符号,称为开始符号(至少必须在某个产生式的左部出现一次);

ℋ是一个产生式集合(有限),每个产生式的形式是P->α,其中,P∈VN,α∈(VT∪VN)。

语法分析树与二义性

用一张图表示一个句型的推导,这种表示称为语法分析树,或简称语法树;有助于理解一个句子语法结构的层次;

如果一个文法存在某个句子对应两颗不同的语法树,则称这个文法是二义的。也就是说,若一个文法中存在某个句子,它有两个不同的最左(最右)推导,则这个文法是二义的。

对词法分析器的要求

语法分析器的功能是输入源程序,输出单词符号(关键字;标识符;常数;运算符;界符)

语法分析器所输出的单词符号常常表示成如下的二元式:(单词种别,单词符号的属性值)

如果一个种别只含一个单词符号,那么,对于这个单词符号,种别编码就完全代表它自身了。若一个种别含有多个单词符号,那么,对于它的每个单词符号,除了给出种别编码之外,还应给出有关单词符号的属性信息。