class method
Ripper.sexp_raw
(::File | ::Ripper::_Gets | ::String src, ?::String filename, ?::Integer lineno, ?raise_errors: ::boolish) -> ::Array[untyped]
sexp_raw(src, filename = '-', lineno = 1, raise_errors: false)
ext/ripper/lib/ripper/sexp.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.0.0/ext/ripper/lib/ripper/sexp.rb, line 71
def Ripper.sexp_raw(src, filename = '-', lineno = 1, raise_errors: false)
builder = SexpBuilder.new(src, filename, lineno)
sexp = builder.parse
if builder.error?
if raise_errors
raise SyntaxError, builder.error
end
else
sexp
end
end
- EXPERIMENTAL
-
Parses
srcand create S-exp tree. This method is mainly for developer use. Thefilenameargument is mostly ignored. By default, this method does not handle syntax errors insrc, returningnilin such cases. Use theraise_errorskeyword to raise aSyntaxErrorfor an error insrc.require 'ripper' require 'pp' pp Ripper.sexp_raw("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]]]]