考虑以下陈述。
- I.符号表仅在词法分析和语法分析期间访问。
- 二、支持递归的编程语言编译器在运行时环境中必然需要堆存储来分配内存。
- 三、在语法分析期间检测到违反“任何变量必须在使用前声明”条件的错误。
以上哪些陈述是正确的?
(A)我只
(B)仅 I 和 III
(C)仅Ⅱ
(D) Ⅰ、Ⅱ、Ⅲ都没有答案: (D)
解释: I.错误。编译器的所有 6 个阶段都使用符号表:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成阶段。
二、错误的。堆分配用于为变量动态分配内存。堆分配可用于递归,但堆栈分配也支持递归。
三、错误的。语法分析只检查语法,但变量在使用前声明必须由语义分析完成。
选项(D)是正确的。
这个问题的测验