第四次作业--文法和语言总结与梳理(20190924)

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

语言:字母表上的特定符号串的集合,所有的语言运算都是集合运算。

文法可以用四元组G=(VN,VT,P,S)表示

 

 

 文法类型为0型文法、1型文法、2型文法、3型文法。

 

 

 语法树:又称为推导树,用来描述上下文无关的句型推导。

可以分为:子树、短语、句子、句柄、句型。

子树为语法树的一个分支

短语为子数的结点

句子:只含有终结符

句型:0次或多次推导式

容易混淆的知识点

一个语言可以有多个文法

一个二义性文法可以转化为无二义性文法,二义性语言不存在二义性文法

句子是句型,句型不是句子。

2型文法一定不是3型文法

3型文法一定是2型文法

在推导α=>β的过程中,需要遵循最左(右)推导,即都是对α中的最左(最右)非终结符进行替换。最右推导又称为规范推导。


 

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

整数n

N->B|N0|NB

B->1|2|...|9

标识符i

I->L|IL|ID

L->a|b|c|...|y|z

D->0|1|2|...|9

表达式e

基本表达式 → 标识符 | 常量 | 字符串 | (表达式)

条件语句

选择语句  → IF(表达式)语句 |  IF(表达式)语句   ELSE 语句

stmt->if E1 then if E2 then S1 else S2

赋值语句

文法:<赋值语句>::=<id>:=<表达式>

复合语句

文法:<复合语句>::=begin<语句>{;<语句>} end

函数

文法:<函数>::=function <id>() :

        <上述各种组合>


 

posted @ 2019-09-24 11:11  codekid  阅读(307)  评论(0)    收藏  举报