我正在显微镜下阅读Pat Shaughnessy的Ruby,并试图补充关于Ruby如何执行程序的最新知识。完全披露,我还没有完成这本书,但我试着理解我的做法。在高层次上,这就是我所理解的。
Ruby Code -> Lexical Analysis -> Tokens
Tokens -> Parser -> AST Nodes
AST Node -> Compiler -> YARV Instructions (bytecode)
YARV Instructions -> YARV Interpreter -> ???
??? -> ??? -> Machine Language我的问题是输出(?)YARV的翻译?这些指令住在哪里?那么,将其转化为机器语言所需的步骤又是什么呢?
如果有人能帮我指出正确的方向,或者如果我错过了什么,我会很感激的!
我试着在网上阅读了很多文章,但它们似乎并没有真正扩展到在编译YARV指令之后发生的事情。我知道产生YARV指令的语法指令生活在主要的repo中,但是接下来会发生什么?
发布于 2022-10-30 10:30:22
我的问题是输出(?)YARV的翻译?
没有输出。解释器不生成输出。它解释代码(另一个词是“执行”)。
更准确地说,解释器的输出是由解释器运行的程序的输出。因此,如果您编写的程序应该将"Hello,World“打印到控制台,那么运行该程序的解释器的输出将是将"Hello,World”打印到控制台。
这些指令住在哪里?
在内存中。
还有什么必要的步骤才能将其转化为机器语言呢?
根本就没有。翻译解释。它不会生成代码。将代码从一种语言转换到另一种语言的东西被称为“编译器”。
https://stackoverflow.com/questions/74248587
复制相似问题