1.梳理第二章的内容,写一篇理解与总结。
理解:这一章我学习了文法和语言,了解到了文法与语言的形式定义,文法和语言的规则、分析、类型和推导,还学习了上下文无法文法以其语法树。
文法是语言的一种表现形式,文法是由非终结符(大写字母)和终结符(小写字母)以及“—>”组成的,通过这一章的学习我学会了构造文法来表达语言,即利用文法的规则和推导手段,将语言中的每个句子用严格定义的规则来构造,它的行为相当于一个过程:输入一个符号串判断是否属于某语言,如果是,则该过程经过有限次的计算然后停止回答“是”;如果不属于,则该过程要么停止回答“不是”,要么该过程永远的运行下去。而文法也有四个类型,0型文法、上下文有关文法、上下文无关文法和正规语言。
总结:这章的学习主要是学习如何推导文法跟语法树,通过构造文法来表达语言。这对我们的逻辑思维还是有一定要求,同时通过这些锻炼了我们的逻辑思维。
2. 尝试写出PL/0 语言的文法。(或者你认为比较好的语言规则)
整数n
标识符i
表达式e
条件语句
赋值语句
复合语句
函数
程序
...
整数n n->0|1|2|3|……|8|9
标识符i i->a|b|c|……|y|z|A|B|C|……|Y|Z (<字母>{<字母>|<数字>} )
表达式e ::= [+|-] <项> {<加减运算符><项>}
条件语句 ::= if <条件> then <语句>
赋值语句 ::= <id> :=<表达式>
复合语句 :: = begin<语句>{;<语句>} end
函数 ::= =<主函数>
程序 ::=<分程序>::=[<常量说明部分>][<变量说明部分>][<过程说明部分>]<语句>