Документация узлов синтаксического дерева Ruby (MRI) - PullRequest
1 голос
/ 30 сентября 2010

Значение большинства узлов из дерева синтаксиса mri может быть легко определено.Однако список довольно длинный (источник: 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

Поскольку манипулирование AST в Python является встроенной библиотекой, его документация намного лучше .Есть ли место, где все узлы синтаксического дерева дерева разбора задокументированы?

1 Ответ

1 голос
/ 30 сентября 2010

Ruby AST не существует, поэтому для него нет документации. Каждая реализация имеет свой собственный AST, который может или не может быть задокументирован.

Кроме того, вы говорите не о абстрактном синтаксическом дереве, а о дереве синтаксического анализа (также называемом конкретным синтаксическим деревом), которое по определению тесно связано с конкретным синтаксическим анализатором, использованным для его построения. Разные парсеры могут создавать очень разные деревья разбора для одного и того же кода и одного и того же синтаксиса.

То, что вы показываете там, выглядит как дерево разбора из MRI или YARV, оба из которых, как известно, плохо документированы.

...