发布网友 发布时间:2022-04-23 17:10
共2个回答
热心网友 时间:2023-10-10 08:04
注意理解词法分析、语法分析、语义分析以及中间代码生成的重点。
词法分析阶级是编译过程的第一个阶级。这个阶级的任务是从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别一个个单词(也称为单词符号或符号)。这里所谓的单词是指逻辑上紧密相连的一组字符,这些字符具有集体含义。比如标识是由字母开头,后跟字母、数字字符序列组成的一种单词,。保留字是一种单词,此外还有算符,界符等等。
语法分析是编译过程的第二个阶段。语法分析的任务是在词法分析的基础上将单词序列分解成各类语法短语。如“程序”,“语句”,“表达式”等等。一般这种语法短语也称为语法单位,可表示成语法树。语法分析所依据的是语言的语法规则,即描述程序结构的规则。通过语法分析确定整个输入串是否构成一个语法上正确的程序。
自顶向下的分析算法通过在最左推导中描述出各个步骤来分析记号串输入。之所以称这样的算法为自顶向下是由于分析树隐含的编号是一个前序编,而且其顺序是由根到叶子。自顶向下的分析程序有两类:回溯分析程序和预测分析程序。预测分析程序试图利用一个或多个先行记号来预测出输入串中的下一个构造,而回溯分析程序则试着分析其他可能的输入,当一种可能失败时就要求输入中备份任意数量的字符。虽然回溯分析程序比预测强大许多,但它们都非常慢,一般都在指数的数量级上,所以对于实际的编译器并不适合。递归下降程序分析和LL(1)分析一般地都要求计算先行集合,它们分别称作First集合和Follow集合。由于无需显示地构造出这些集合就可以构造出简单的自顶向下的分析程序,所以在基本算法的介绍之后我们再讨论它们。之后我偿还要谈到一个由递归下降分析构造的分析程序。
热心网友 时间:2023-10-10 08:04
自顶向下模块程序设计是结构化程序设计方法的主要原则,它需要逐步求精,模块化,*使用goto语句等,具体说来,就是要:
一、程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。
二、对复杂问题,应设计一些子目标作为过渡,逐步细化。
三、*使用goto语句
结构化程序设计方法的起源来自对GOTO语句的认识和争论。肯定的结论是,在块和进程的非正常出口处往往需要用GOTO语句,使用GOTO语句会使程序执行效率较高;在合成程序目标时,GOTO语句往往是有用的,如返回语句用GOTO。否定的结论是,GOTO语句是有害的,是造成程序混乱的祸根,程序的质量与GOTO语句的数量呈反比,应该在所有高级程序设计语言中取消GOTO语句。取消GOTO语句后,程序易于理解、易于排错、容易维护,容易进行正确性证明。