In Files

    • ast.c

    Class/Module Index [+]

    Quicksearch
    No matching classes.

    RubyVM::AbstractSyntaxTree

    provides methods to parse Ruby code into abstract syntax trees. The nodes in the tree are instances of .

    Public Class Methods

    RubyVM::AbstractSyntaxTree.of(proc) → RubyVM::AbstractSyntaxTree::Node click to toggle source
    RubyVM::AbstractSyntaxTree.of(method) → RubyVM::AbstractSyntaxTree::Node

    Returns AST nodes of the given proc or method.

    RubyVM::AbstractSyntaxTree.of(proc {1 + 2})
    # => #<RubyVM::AbstractSyntaxTree::Node(NODE_SCOPE(0) 1:35, 1:42): >
    def hello
     puts "hello, world"
    end
    RubyVM::AbstractSyntaxTree.of(method(:hello))
    # => #<RubyVM::AbstractSyntaxTree::Node(NODE_SCOPE(0) 1:0, 3:3): >
    
     static VALUE
    rb_ast_s_of(VALUE module, VALUE body)
    {
     VALUE path, node, lines;
     int node_id;
     const rb_iseq_t *iseq = NULL;
     if (rb_obj_is_proc(body)) {
     iseq = vm_proc_iseq(body);
     if (!rb_obj_is_iseq((VALUE)iseq)) {
     iseq = NULL;
     }
     }
     else {
     iseq = rb_method_iseq(body);
     }
     if (!iseq) return Qnil;
     path = rb_iseq_path(iseq);
     node_id = iseq->body->location.node_id;
     if (!NIL_P(lines = script_lines(path))) {
     node = rb_ast_parse_array(lines);
     }
     else if (RSTRING_LEN(path) == 2 && memcmp(RSTRING_PTR(path), "-e", 2) == 0) {
     node = rb_ast_parse_str(rb_e_script);
     }
     else {
     node = rb_ast_parse_file(path);
     }
     return node_find(node, node_id);
    }
     
    RubyVM::AbstractSyntaxTree.parse(string) → RubyVM::AbstractSyntaxTree::Node click to toggle source

    Parses the given string into an abstract syntax tree, returning the root node of that tree.

    is raised if the given string is invalid syntax.

    RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
    # => #<RubyVM::AbstractSyntaxTree::Node(NODE_SCOPE(0) 1:0, 1:9): >
    
     static VALUE
    rb_ast_s_parse(VALUE module, VALUE str)
    {
     return rb_ast_parse_str(str);
    }
     
    RubyVM::AbstractSyntaxTree.parse_file(pathname) → RubyVM::AbstractSyntaxTree::Node click to toggle source

    Reads the file from pathname, then parses it like , returning the root node of the abstract syntax tree.

    is raised if pathname's contents are not valid Ruby syntax.

    RubyVM::AbstractSyntaxTree.parse_file("my-app/app.rb")
    # => #<RubyVM::AbstractSyntaxTree::Node(NODE_SCOPE(0) 1:0, 31:3): >
    
     static VALUE
    rb_ast_s_parse_file(VALUE module, VALUE path)
    {
     return rb_ast_parse_file(path);
    }
     

    This page was generated for Ruby

    is a service of and , purveyors of fine dance noise.

    Generated with Ruby-doc Rdoc Generator 0.44.0.