文法和语言总结和梳理
梳理第二章的内容,写一篇理解与总结。
本章学习了文法和语言的相关知识,比如:文法的直观概念、符号和符号串,文法和语言的形式定义、文法的类型、语法树和句型的分析等。
字母表是元素的非空有穷集合,元素称为符号,字母表也称为符号集。
由字母表中的符号组成的任何有穷序列称为符号串。
文法的类型有四种:0型文法、I型文法或上下文有关文法、2型文法或上下文无关文法、3型文法或正规文法,四种文法限制越来越严格,所以正规文法都是上下文无关的,每一种上下文无关文法都是上下文有关的。描述上下文无关文法的句型推导的直观工具,即语法树,文法G =(VN,VT,P,S),对于G的任何句型都能构造与之关联的语法树。文法的推导过程分为:最左推导和最右推导,最右推导也称为规范推导。
文法的二义:某个句子对应有两颗不同的语法树。
有关文法的实用限制:在实际使用中,限制文法中不能有有害规则和多余规则,有害规则,对描述语言没有必要的,容易引起文法的二义性,多余规则是指文法中那些连一个句子推导都用不到的规则,这一类规则在文法的推导中根本不可能用到它。
参考于 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