1.梳理第二章的内容,写一篇理解与总结。
第二章首先介绍了文法的相关概念以及概念的推导过程,接着介绍了符号和符号串,其中字母表的定义为元素非空有穷集合,字符串为由字母表中的符号组成的任何有穷序列。接着介绍字符串的一些运算,例如:符号串的头尾,固有头和固有尾;符号串的连接;符号串的方幂;符号串集合。文法和语言的形式定义:文法G定义为四元组(VN,VT,P,S),其中VN为非终结符,VT为终结符,P为规则(a→ß)的集合。S为识别符或开始符,不是终结符,至少有一条出现在左边。
文法的类型有四种:0型文法、I型文法或上下文有关文法、2型文法或上下文无关文法、3型文法或正规文法,四种文法限制越来越严格,所以正规文法都是上下文无关的,每一种上下文无关文法都是上下文有关的。描述上下文无关文法的句型推导的直观工具,即语法树,文法G =(VN,VT,P,S),对于G的任何句型都能构造与之关联的语法树。文法的推导过程分为:最左推导和最右推导,最右推导也称为规范推导。
文法的二义:某个句子对应有两颗不同的语法树。
有关文法的实用限制:在实际使用中,限制文法中不能有有害规则和多余规则,有害规则,对描述语言没有必要的,容易引起文法的二义性,多余规则是指文法中那些连一个句子推导都用不到的规则,这一类规则在文法的推导中根本不可能用到它。
2. 尝试写出PL/0 语言的文法。(或者你认为比较好的语言规则)
整数:n→1|2|3|4|5|6|7|8|9|
标识符:i→<字母> <字母>|<数字>
表达式:e→ [+|-]<项>{<加减运算符><项>}
条件语句:<条件语句>→ if <条件> then<执行语句>
赋值语句:<赋值语句>→ <标识符>:=<表达式>
复合语句:<复合语句> → begin<语句>{;<语句>}end
函数:<函数>→<主函数><其他函数>|<主函数>
程序:不会做(查无资料)
...