summaryrefslogtreecommitdiff
path: root/ast.c
Commit message (Collapse)AuthorAgeFilesLines
* Avoid usage of the dummy empty BEGIN nodektsj2019-04-201-1/+3
| | | | | | Use NODE_SPECIAL_NO_NAME_REST instead. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67629 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Add symbol to the result of `RubyVM::AbstractSyntaxTree#children`.yui-knk2019-04-201-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Introduce pattern matching [EXPERIMENTAL]ktsj2019-04-171-0/+20
| | | | | | [ruby-core:87945] [Feature #14912] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* [DOC] fix markups [ci skip]nobu2019-03-221-5/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67337 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ast.c: fix missing head part in dynamic literalnobu2019-01-141-1/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66819 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ast.c: argument must be a stringnobu2019-01-061-1/+1
| | | | | | [ruby-core:90904] [Bug #15511] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66736 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Method reference operatornobu2018-12-311-0/+3
| | | | | | | | Introduce the new operator for method reference, `.:`. [Feature #12125] [Feature #13581] [EXPERIMENTAL] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66667 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Compact AST::Node#inspectnobu2018-12-241-3/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Refine RubyVM::AbstractSyntaxTree::Node#typenobu2018-12-031-7/+7
| | | | | | | * ast.c (rb_ast_node_type): simplified to return a Symbol without "NODE_" prefix. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66142 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Add docs to RubyVM::AbstractSyntaxTree.ofyui-knk2018-11-111-0/+17
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65666 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Make some functions to be staticyui-knk2018-11-111-7/+7
| | | | | | These functions are used only in ast.c. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* AST.of -e scriptnobu2018-11-101-0/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Parse the source in SCRIPT_LINES__ as arraynobu2018-11-101-1/+25
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Check the argument before creating a parsernobu2018-11-101-29/+22
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65652 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Parse the source in SCRIPT_LINES__ if possiblenobu2018-11-101-2/+21
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Get rid of setting SCRIPT_LINES__ by AST.parsenobu2018-11-091-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65647 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Hoisted out rb_ast_parse_str and rb_ast_parse_filenobu2018-11-091-1/+16
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65646 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Rename `AST` module to `AbstractSyntaxTree`yui-knk2018-11-091-12/+12
| | | | | | Follow the same naming convention of `InstructionSequence` class. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Implement `RubyVM::AST.of` [Feature #14836]yui-knk2018-11-051-0/+55
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ast.c: Fix the documents of `RubyVM::AST.parse` and `RubyVM::AST.parse_file`yui-knk2018-10-201-2/+2
| | | | | | | * ast.c: r63602 fixed to raise `SyntaxError` when `RubyVM::AST.parse` or `RubyVM::AST.parse_file` fail to parse input. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65194 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Improve docs for RubyVM::AST and RubyVM::AST::Nodestomar2018-10-031-12/+14
| | | | | | | | * ast.c: [DOC] fix error in code example for RubyVM::AST::Node#type (r63604 changed the return value of RubyVM::AST::Node#children); enable link to RubyVM::AST.parse method; other minor improvements. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64910 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ast.c (rb_ast_node_type): return frozen stringsnobu2018-08-171-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ast.c: allocator of Nodenobu2018-08-031-2/+1
| | | | | | | * ast.c (Init_ast): undefine allocator of Node, as a method call on an uninitialized Node causes segfault. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64168 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Add docs to RubyVM::ASTtenderlove2018-07-251-0/+82
| | | | | | Co-Authored-By: Robert Mosolgo <rdmosolgo@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64054 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ast.c: Fix defsyui-knk2018-06-281-2/+2
| | | | | | * ast.c (node_children): Add mid to children git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63782 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ast.c: fix callsnobu2018-06-081-3/+3
| | | | | | * ast.c (node_children): fix the member for method IDs as nd_mid. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63611 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ast.c: refine AST#childrennobu2018-06-071-32/+75
| | | | | | | * ast.c (node_children): refined RubyVM::AST#children to include symbols (variables, methods, classes, etc). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63604 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ast.c: adjust indentnobu2018-06-071-1/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63603 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ast.c: Fix to raise `SyntaxError`yui-knk2018-06-071-4/+10
| | | | | | | | * ast.c: Fix to raise `SyntaxError` when `RubyVM::AST.parse` or `RubyVM::AST.parse_file` fail to parse input. * test/ruby/test_ast.rb: Add test cases for invalid syntax. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63602 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ast.c: Change tabs to spacesyui-knk2018-06-061-124/+124
| | | | | | | | | | | | | * ast.c: I created a new C source code file with tabs and spaces mixed format by mistake. Currently we move to spaces only. Surely we agreed not to batch update. But ast.c is a new source code. So please forgive me to change the format before many changes are committed this file. I'm sorry about my mistake. ref [Bug #14246] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Undef RubyVM::AST::Node.newyui-knk2018-05-311-0/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63535 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Define AST module under RubyVM [experimental]yui-knk2018-05-311-0/+495
* ext/-test-/ast/ast.c: Rename to ast.c and define AST module under RubyVM. * common.mk: compile ast.c. * ext/-test-/ast/extconf.rb: Don't need this file anymore. * inits.c (rb_call_inits): Call Init_ast to setup AST module. * test/-ext-/ast/test_ast.rb: Follow up the namespace change. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e