可以很容易地推断出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。有没有一个地方可以记录解析树语法树中的所有节点?
发布于 2010-09-30 06:00:55
没有Ruby AST这样的东西,因此也没有相关的文档。每个实现都有自己的AST,可能有也可能没有记录。
此外,您讨论的不是抽象语法树,而是解析树(也称为具体语法树),根据定义,它与用于构造它的特定解析器紧密相关。不同的解析器可能会为相同的代码和相同的语法构造非常不同的解析树。
您在那里显示的内容看起来像来自MRI或YARV的解析树,这两种解析树都是出了名的糟糕的文档。
https://stackoverflow.com/questions/3825988
复制相似问题