【问题标题】:Ruby (MRI) Syntax Tree nodes documentationRuby (MRI) 语法树节点文档
【发布时间】:2010-09-29 21:25:37
【问题描述】:

mri's syntax tree 中的大多数节点的含义可以很容易地推断出来。但是列表很长(来源:bin/parse_tree_abc):

:attrasgn, :attrset, :dasgn_curr, :iasgn, :lasgn, :masgn,
:and, :case, :else, :if, :iter, :or, :rescue, :until, :when, :while,
:call, :fcall, :super, :vcall, :yield,
:args, :argscat, :array, :begin, :block, :block_arg, :block_pass, :bool,
:cfunc, :colon2, :const, :cvar, :defined, :defn, :dregx, :dstr, :dvar,
:dxstr, :ensure, :false, :fbody, :gvar, :hash, :ivar, :lit, :long, :lvar,
:match2, :match3, :nil, :not, :nth_ref, :return, :scope, :self, :str,
:splat, :to_ary, :true, :unknown, :value, :void, :zarray, :zarray,
:zclass, :zsuper

由于 Python 的 AST 操作是一个内置库,它的 documentation is far better。是否有一个地方记录了解析树的语法树中的所有节点?

【问题讨论】:

    标签: ruby metaprogramming abstract-syntax-tree


    【解决方案1】:

    没有像 Ruby AST 这样的东西,因此没有它的文档。每个实现都有自己的 AST,可能会或可能不会记录在案。

    此外,您所说的不是抽象语法树,而是解析树(也称为具体语法树),根据定义,它与用于构造它的特定解析器密切相关。不同的解析器可能会为相同的代码和相同的语法构造非常不同的解析树。

    您在此处显示的内容看起来像是来自 MRI 或 YARV 的解析树,这两者的文档记录都非常糟糕。

    【讨论】:

    • 说得很好。它是 MRI 的语法树。但是这个术语虽然不正确,但更容易传达我的意思。甚至 Ilya Grigorik 的帖子和参考网站都将其称为 AST。但感谢您的欢迎更正。编辑:有趣的事实:谷歌搜索'ruby“具体语法树”'会产生这个页面作为第一个结果,而“JAVA - 布尔查询/表达式到具体语法树”作为第二个结果。是的,常见错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2015-09-27
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多