第四次作业

1. 梳理第二章的内容,写一篇理解与总结。

 本章重点介绍了语言的语法结构的形式描述、语法树以及文法的二义性

符号串

(1)字母表. 符号的非空有限集合。典型的符号是字母、数字、各种标点和运算符等。

(2)符号串.定义在某一字母表上,由该字母表中的符号组成的有限符号序列。

文法:文法是对语言结构的定义与描述。即从形式上用于描述和规定语言结构的称为"文法"

句子:仅含有终结符号的句型是文法的一个句子。语法树从左至右终结符序列,是句型的一个特例。Z =+> x。对于文法G=(VT,VN,S,φ),如果,则称α是当前文法的一个句型

语法树:语法树是句子结构的图形表示,它代表了句子的推导结果,有利于理解句子语法结构的层次。简单说,语法树就是按照某一规则进行推导时所形成的树。分析树的特点:每一个结点都有标记。根结点由文法的开始符号标记; 每个内部结点由非终结符号标记,它的子结点由这个非终结符号的这次推导所用产生式的右部各符号从左到右依次标记;叶结点由非终结符号或终结符号标记,它们从左到右排列起来,构成句型

文法的类型文法分成4种类型,即0型或、1型文法或称上下文有关的、2型文法或称上下文无关的和3型文法或称正规文法。这几类文法的差别在于对产生式施加不同的限制。

令G是一个文法,S是文法的开始符号,abo的是文法G的一个句型。如果有S-*→aAo且(A-+→b测标b是句型abo相对于非终结符A的短语。特别地,如果有(A→β是句型abo相对于规则A→b的直接短语(也称简单短语)。一个右句型的直接短语称为该句型的句柄。句柄的概念只适合于右句型

句柄:分析树中最左边的那棵只有父子两代的子树的所有叶结点自左至右排列起来,就是该句型的句柄。

  文法:语言中的每个句子可以用严格定义的规则来构造。通俗的讲就是:根据一些指定的规则,来确定编程语言的语法,从而实现编译器的功能。

二、尝试写出PL/0 语言的文法。(或者你认为比较好的语言规则)〈程序〉→〈分程序〉.

〈分程序〉→ [<常量说明部分>][<变量说明部分>][<过程说明部分>]〈语句〉

<常量说明部分> → CONST<常量定义>{ ,<常量定义>};

<常量定义> → <标识符>=<无符号整数>

<变量说明部分> → VAR<标识符>{ ,<标识符>};

<过程说明部分> → <过程首部><分程序>;{<过程说明部分>}

<过程首部> → procedure<标识符>;

 <语句> → <赋值语句>|<条件语句>|<当型循环语句>|<过程调用语句>|<读语句>|   <写语句>|<复合语句>|<空>

<赋值语句> → <标识符>:=<表达式>

<条件语句> → if<条件>then<语句>

<加减运符> → +|-

<乘除运算符> → *|/

<关系运算符> → =|#|<|<=|>|>=

<项> → <因子>{<乘除运算符><因子>}

<因子> → <标识符>|<无符号整数>|(<表达式>)

<过程调用语句> → call<标识符>

<当型循环语句> → while<条件>do<语句>

原文地址:https://www.cnblogs.com/Gidupar/p/11599846.html