作业4—文法和语言总结与梳理

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

(1)     几个基本概念和定义

字母表是一个非空有穷集合,字母表中的元素称为符号,所以字母表又称为符号集

字母表中的符号组成的任何有穷序列称为符号串;存在空符号串,不包含任何符号,记为ε

         还有一些关于符号串的运算:连接,方幂,集合…..

(2)   文法

文法,是指如何由一堆符号组成一个有含义的句子的规则和协议。

         一个句子组成满足一个个规则(产生式)时,可用“→”表示“由...组成”或者“定义为”,来分解这个句子

    一个上下文无关文法G包括四个部分:终结符号,非终结符号,开始符号,产生式。

 

(3)   文法和语言的推导

假设G是一个文法,S是开始符号,如果S经过零步或者若干步推出α,那么称α是一个句型。只包含终结符号的句型是一个句子。文法G产生的所有句子构成一门语言,记为L(G)。

         推导的过程有最左推导和最右推导,最右推导又称为规范推导

 

(4)     语法分析树

用一种树形的图示来表示这个句型的推导过程,这棵树就被称为“语法分析树”,简称“语法树”。

对于一个文法,如果它的某些句子对应两棵不同的语法树,这个文法就属于“二义性文法”。

还可以通过对语法树的分析来得到一个句型推导过程的所有短语,直接短语以及句柄。

 

2. 尝试写出PL/0 语言的文法。

整数n

n->0|1|2|3|……|8|9

标识符i

i->a|b|c|……|y|z|A|B|C|……|Y|Z

表达式e

e->[+|-]<项>{<加减运算符><项>}

条件语句

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

赋值语句

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

复合语句

<复合语句>->begin <语句>{;<语句>} end

函数

<函数>→<主函数><其他函数>|<主函数>

程序

<程序>-><分程序>.

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

...

原文地址:https://www.cnblogs.com/a1120139442/p/11593301.html