- 梳理第二章的内容,写一篇理解与总结。
语法:所谓一个语言的语法是指这样的一组规则,用它可以形成和产生一个合式的程序。这些规则的一部分称为词法规则,另一部分称为语法规则(或产生规则)。
语义:对于一个语言来说,不仅要给出它的词法、语法规则,而且要定义它的单词符号和语法单位的意义。这就是语义问题。离开语义,语言只不过是一堆符号的集合。
文法G=(Vn,Vt,P,S),其中Vn为非终结符集;Vt为终结符集;P为产生式的集合,至少包含一个非终结符;S为识别符或开始符。
0 型文法(短语文法):0 型文法所有产生式的左部 α 和右部 β 都是符号串,对它们没作任何限制。即产生式的左部至少有一个非终结符右边随意。若对0 型文法的产生式作某些限制,则可以给出其他三种类型的文法。
1 型文法(上下文有关文法):1型文法所有产生式左部可以含有一个、两个或两个以上的字符,但其中必须至少有一个非终结符。产生式右部的符号串的长度必须大于等于左边符号串的长度。对于产生式 “S→ε”是1 型文法中的一个特例。
2 型文法(上下文无关文法 | 左线性文法):2 型文法的所有产生式左部是单个非终结符,右部是由终结符和非终结符组成的符号串。
3 型文法(右线性文法 | 正规文法):3 型文法所有的产生式右部是单个终结符或单一终结符后跟着单一非终结符。产生式右部符号串长度小于等于2。
2. 尝试写出PL/0 语言的文法。(或者你认为比较好的语言规则)
整数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
函数 ::= =<主函数>
程序 ::=<分程序>::=[<常量说明部分>][<变量说明部分>][<过程说明部分>]<语句>