前端之家收集整理的这篇文章主要介绍了
Ruby和Python如何实现他们的交互式控制台?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在为我的编程语言实现解释器时,我首先想到了一个简单的控制台窗口,它允许
用户输入一些
代码,然后作为
shell独立程序执行.
但是存在严重的问题:如果用户输入的每一行代码都作为独立程序处理,它必须通过标记器和解析器,然后由解释器执行 – 那么函数呢?
> Python / Ruby交互式控制台(IDLE,irb)如何“共享”代码?如何处理代码?
例:
>> def x:
>> print("Blah")
>>
>> x()@H_403_9@
函数存储在哪里,以便可以在任何时候再次调用它?
交互式控制台如何将所有输入的内容视为一个程序,而不是一遍又一遍地执行所有操作?
对于Python,在所有括号,括号等匹配之前,表达式不完整.这很容易检测到.在输入完全空行之前,
函数/类定义不完整.然后编译器编译输入的表达式或定义,并运行它.
与正常的函数,类,模块等非常相似,REPL有自己的局部范围.这个范围用于输入REPL的变量和定义.
原文链接:https://www.f2er.com/ruby/270618.html