class RedParse::Ripper
stolen shamelessly from ripper/sexp.rb (among others. the tables came from elsewhere)
Constants
- PARSER_EVENTS
- PARSER_EVENT_TABLE
- SCANNER_EVENTS
- SCANNER_EVENT_TABLE
Attributes
column[RW]
lineno[RW]
parser[RW]
Public Class Methods
instrumentSexpBuilder(k)
click to toggle source
# File lib/redparse/ripper.rb, line 40 def self.instrumentSexpBuilder k events=k.instance_methods.grep(/\Aon_/) events.map!{|e| <<-"endcode" } alias noinst_#{e} #{e} def #{e}(*a) @record<<a.dup.unshift(:#{e}) noinst_#{e}(*a) end endcode events<<<<-"endcode" alias noinst_parse parse def parse *a @record=[] result=[@record,(noinst_parse *a)] @record=nil return result end endcode k.module_eval events.join end
new(text,file="(eval)",line=1,options={})
click to toggle source
# File lib/redparse/ripper.rb, line 21 def initialize(text,file="(eval)",line=1,options={}) options[:rubyversion]||=1.9 @lineno=@column=0 #hack, for now. fix this later @parser=RedParse.new(text,file,line,options) end
sexp(src, filename = '-', lineno = 1)
click to toggle source
- EXPERIMENTAL
-
Parses
src
and create S-exp tree. This method is for mainly developper use.require 'ripper' require 'pp pp Ripper.sexp("def m(a) nil end") #=> [:program, [:stmts_add, [:stmts_new], [:def, [:@ident, "m", [1, 4]], [:paren, [:params, [[:@ident, "a", [1, 6]]], nil, nil, nil]], [:bodystmt, [:stmts_add, [:stmts_new], [:var_ref, [:@kw, "nil", [1, 9]]]], nil, nil, nil]]]]
# File lib/redparse/ripper_sexp.rb, line 89 def self.sexp(src, filename = '-', lineno = 1) SexpBuilderPP.new(src, filename, lineno).parse end
sexp_raw(src, filename = '-', lineno = 1)
click to toggle source
# File lib/redparse/ripper_sexp.rb, line 93 def self.sexp_raw(src, filename = '-', lineno = 1) SexpBuilder.new(src, filename, lineno).parse end
Public Instance Methods
parse(options={})
click to toggle source
# File lib/redparse/ripper.rb, line 31 def parse options={} @quirks=options[:quirks] tree=@parser tree=tree.parse if tree.respond_to? :parse on_program tree.rip(self) end
quirks?()
click to toggle source
# File lib/redparse/ripper.rb, line 38 def quirks?; @quirks end