第21题: [单项选择]以下关于高级程序设计语言翻译的叙述中,正确的是______。 A. 可以先进行语法分析,再进行词法分析 B. 在语法分析阶段可以发现程序中的所有错误 C. 语义分析阶段的工作与目标机器的体系结构密切相关 D. 目标代码生成阶段的工作与目标机器的体系结构密切相关 参考答案:D 答案解析:[解析] 对于高级程序设计语言,编译程序会把编写的源程序翻译成与之等价的目标程序。编译程序的工作过程分为:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。语法分析要在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。可见,要先进行词法分析,然后进行语法分析,故选项A错误。在语法分析阶段能发现语法错误,但不能发现语义错误,因此选项B错误。语义分析阶段主要检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用,可见,语义分析阶段的工作与目标机器的体系结构关联不大,选项C错误。目标代码生成阶段的任务是把中间代码变化成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码,这个阶段的工作与具体的机器密切相关。