2019-09-25作业

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

   在这章内容中,我们学习了程序的文法和语言,通过学习,我肯也能够理解到,机器程序语言和我们的自然语言,即英语中文一样,也是有着自己的文法和语法的,而且相比一般的自然语言有着更加严格的规范,自然语言一般来说,可以衍生许多的不规范的语法,而且还可以读的通顺,但是程序的文法有着严格的规范,因为可能一个语句的文法错误,就会导致整个程序无法运行甚至运行出错。

  1.文法:这是成语语言的表达规则,规定了程序句子的结构,也是一种语言的描述,也称作文法。

  2.字母表:这是元素的非空有穷合集,由于字母表中的元素也称为符号,因此也称作字符集。

  3.符号串:是由字母表中的符号组成的任何有穷序列称为符号串。

  4.字符串运算:1)头尾,例如z=xy,那么z为字符串的头,y为字符串的尾。2)符号串的连接:设x=ST,y=abc,则xy=STabc。4)符号串集合。

  5.规则:也称为重写规则、产生式、生成式。

  6.文法的类型:乔姆斯基把文法分成4种:0型,1型,2型,3型。

  还有句型的推导工具:语法树,也称作推导树。以及句型的分析方法:1)自上而下的分析方法。2)自底而上的分析方法。

2. 尝试写出PL/0 语言的文法。(或者你认为比较好的语言规则)

整数n

标识符i

表达式e

条件语句

赋值语句

复合语句

函数

程序

...

解:

〈表达式〉::=[+|-]〈项〉{〈加法运算符〉〈项〉}

〈项〉::=〈因子〉{〈乘法运算符〉〈因子〉}

〈因子〉::=〈标识符〉|〈无符号整数〉|‘(’〈表达式〉‘)’

〈加法运算符〉::=+|-

〈乘法运算符〉::=*|/

〈关系运算符〉::==|#|<|<=|>|>=

〈条件语句〉::=IF〈条件〉THEN〈语句〉

〈过程调用语句〉::=CALL〈标识符〉

〈当型循环语句〉::=WHILE〈条件〉DO〈语句〉

〈读语句〉::=READ‘(’〈标识符〉{,〈标识符〉}‘)’

〈写语句〉::=WRITE‘(’〈表达式〉{,〈表达式〉}‘)’

〈字母〉::=a|b|…|X|Y|Z

〈数字〉::=0|1|…|8|9

posted @ 2019-09-27 20:36  土块  阅读(131)  评论(0编辑  收藏  举报