在为我的编程语言实现解释器时,我首先想到了一个简单的控制台窗口,它允许用户输入一些代码,然后将其作为独立程序作为 shell 执行。
但存在严重的问题:如果用户输入的每一行代码都作为独立程序处理,则它必须经过分词器和解析器,然后由解释器执行 - 那么函数呢?
- Python/Ruby 交互式控制台(IDLE、irb)如何“共享”代码?输入的代码如何处理?
Example:
>> def x:
>> print("Blah")
>>
>> x()
该函数存储在哪里以便可以随时再次调用?
交互式控制台如何将输入的所有内容视为明显的一个程序,而不一遍又一遍地执行所有内容?
对于 Python,只有所有括号、方括号等都匹配时,表达式才完整。这很容易检测到。在输入完全空白的行之前,函数/类定义并不完整。然后编译器编译输入的表达式或定义并运行它。
与普通函数、类、模块等非常相似,REPL 具有自己的本地作用域。正是这个作用域用于输入 REPL 中的变量和定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)