Project

General

Profile

« Previous | Next » 

Revision b8b503d6

Added by yui-knk (Kaneko Yuichiro) almost 5 years ago

Add symbol to the result of RubyVM::AbstractSyntaxTree#children.

Add symbol to the result to make pattern match easily.

For example:

(1) NODE_MASGN * NODE_SPECIAL_NO_NAME_REST

$ ./miniruby -e 'p RubyVM::AbstractSyntaxTree.parse("a, * = b").children[-1].children'
[#<RubyVM::AbstractSyntaxTree::Node:VCALL@1:7-1:8>, #<RubyVM::AbstractSyntaxTree::Node:ARRAY@1:0-1:1>, :NODE_SPECIAL_NO_NAME_REST]

(2) NODE_POSTARG * NODE_SPECIAL_NO_NAME_REST

$ ./miniruby -e 'p RubyVM::AbstractSyntaxTree.parse("a, *, _ = b").children[-1].children[-1].children'
[:NODE_SPECIAL_NO_NAME_REST, #<RubyVM::AbstractSyntaxTree::Node:ARRAY@1:6-1:7>]

(3) NODE_LASGN * NODE_SPECIAL_REQUIRED_KEYWORD

$ ./miniruby -e 'p RubyVM::AbstractSyntaxTree.parse("def a(k:) end").children[-1].children[-1].children[1].children[7].children[0].children'
[:k, :NODE_SPECIAL_REQUIRED_KEYWORD]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67627 b2dd03c8-39d4-4d8f-98ff-823fe69b080e