文法和语法总结与梳理

有些话、适合烂在心里 提交于 2019-11-30 13:11:49

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

第二章中:文法的形式定义 上下文无关文法、正规文法 推导、短语、分析树、二义性 有限自动机的形式定义 自动机、文法、表达式等价性 NFA的确定化和DFA的最小化。

文法的理解是:文法是对语言结构的定义与描述,即从形式上描述和规定语言结构,称之为语法

而语法也有它的规则:通过建立一组规则(产生式),来描述句子的语法结构。

在课堂上听老师讲课,较为熟悉的是文法四元组、推导、句型、短语之类。

在习题上,推导是比较熟悉的,给予一个特定的句型,通过推导来把这个句子弄出来,但是如果只是单单看书本上的概念和描述,就会非常抽象,因为定义的东西多,而且看得我乱七八糟,还是通过老师上课讲述和习题的练习才能理解。

不过到目前为止,上下文语法我是不太清晰。同时在推导中,还要特别注意的是最右推导也称之为规范推导,而最左推导只有一个定义也就是 最左推导。在做语法树、句型、短语、直接短语中,语法树就要求规范推导(最右推导),理解了什么是短语,什么是句柄跟直接短语后,就可以在语法树上直接看出答案来。

在文法二义性中,还是不太熟悉,不过在网上找到相关文法二义性的消除的习题讲解后,就理解这种习题该如何推导。

在语言构造文法中,对于文法的构造还是不熟练。

总的来说,第二章内容不算复杂,只要自己理解了,做起来就很容易,但容易部分知识的内容概括的太抽象,一堆的符号串跟字母串的描述看不太懂。

2、

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

整数n

标识符i

表达式e

条件语句

赋值语句

复合语句

函数

程序

...

 

参考于 http://www.doc88.com/p-9713794071234.html

由于不会,就上网查询

 <程序>-><分程序>

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

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

<常量定义>-><标示符>=<无符号整数>

<无符号整数>-><数字>{<数字>}

<变量说明部分>->VAR<标示符>{,{标示符}};

<标示符>-><字母>{<字母>|<数字>}

<过程说明部分>-><过程首部><分程度>;{<过程说明部分>}

<过程首部>->procedure<标示符>;

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

<赋值语句>-><标示符>:=<表达式>

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

<条件>-><表达式><关系运算符><表达式>|ood<表达式>

<表达式>->[+|-]<项>{<加减运算符><项>}

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

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

<加减运符>->+|-

<乘除运算符>->*|/

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

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

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

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

<读语句>->read(<标识符>{,<标识符>})

<写语句>->write(<标识符>{,<标识符>})

<字母>->a|b|c....x|y|z

<数字>->0|1|2....7|8|9

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!