我知道解释器会逐行将您的源代码翻译成机器代码,并在遇到错误时停止。
我想知道,当你给它循环时,解释器做什么。
E、 g.我有以下(MATLAB)代码:
for i = 1:10000 pi*pi end
使用编译器时,机器代码会更短,仅由一组语句组成,其中包括一个有效期为10000次迭代的go to control语句。
如果这不合理,我很抱歉,我对编程的基本细节不是很了解,但我想快速理解。
这是错误的。有许多不同类型的解释器,但很少逐行执行代码,而那些执行的解释器(大部分是shell)根本不生成机器代码。
其工作原理是一次解析一条语句。也就是说,解析器读取令牌,直到语句完成。对于到达语句终止符之前的简单语句,例如,行尾或分号。对于其他语句(例如if语句、For循环或while循环),直到找到相应的终止符(endif、fi等)。无论哪种方式,解析器都会返回语句的某种表示形式(通常是某种类型的AST),然后执行。任何时候都不会生成机器代码。
if false 仍将中止脚本)。
if false