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