编译程序在语法分析阶段能检查出(41)错误。

admin2021-01-13  32

问题 编译程序在语法分析阶段能检查出(41)错误。

选项 A、表达式中的括号不匹配
B、以零作除数
C、数组下标越界
D、无穷递归

答案A

解析 本题考查的是编译程序的基本工作原理和基本概念。编译程序的功能是把某高级语言编写的源程序翻译成与之对应的目标程序(汇编语言程序或机器语言程序)。编译程序的工作过程可以分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等6个阶段。其中,词法分析阶段的任务是对源程序从前到后(从左到右)逐个字符地扫描,从中识别出一个个“单词”符号。在词法分析的基础上,语法分析阶段根据语言的语法规则将单词符号序列分解成各类语法单位,如“表达式”、“语句”、“程序”等。语法规则就是各类语法单位的构成规则。通过语法分析确定整个输入串是否构成一个语法上正确的程序。如果源程序中没有语法错误,语法分析后就能正确地构造出其语法树;否则就指出语法错误,并给出相应的诊断信息。语义分析阶段主要检查源程序是否包含语义错误,并收集类型信息供后面的代码生成阶段使用。只有语法和语义都正确的源程序才能被翻译成正确的目标代码。程序员编写的源程序中往往会有一些错误,这些错误大致被分为静态错误和动态错误两类。所谓动态错误,是指源程序中的逻辑错误,它们发生在程序运行的时候,比如算法逻辑上的错误。动态错误也被称为动态语义错误,如变量取值为0时被用作除数,引用数组元素时下标出界等。静态错误又可以分为语法错误和静态语义错误。词法和语法错误是指有关语言结构上的错误,如单词拼写错误就是一种词法错误,表达式中缺少操作数、括号不匹配是不符合语法规则要求的语法错误等。静态的语义错误是指分析源程序时可以发现的语言意义上的错误,如乘法运算的两个操作数中一个是整型变量名,而另一个是数组等。表达式中的括号不匹配属于语言结构上的错误,所以可在语法分析阶段检查出该错误。
转载请注明原文地址:https://jikaoti.com/ti/ukE7FFFM
0

最新回复(0)