ÿØÿà JFIF ÿÛ „ ( %!1!%)+//.383,7(-.+
-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ ¥2" ÿÄ ÿÄ J ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ ÿÄ * !1AQa‘"2q3±ð#b¡ÿÚ ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁTÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßwpŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................
ÿØÿà JFIF ÿÛ „
(
%!1!%)+//.383,7(-.+
-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ ¥2" ÿÄ
ÿÄ J ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ
ÿÄ * !1AQa‘"2q3±ð#b¡ÿÚ
? ¼QxJQaÍuò¸Zö
Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁTÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßwpŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................
????????????????????????????????????
????????????????????????????????????
ÿØÿà JFIF ÿÛ „ ( %!1!%)+//.383,7(-.+
-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ ¥2" ÿÄ ÿÄ J ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ ÿÄ * !1AQa‘"2q3±ð#b¡ÿÚ ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁTÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßwpŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................
ÿØÿà JFIF ÿÛ „
(
%!1!%)+//.383,7(-.+
-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ ¥2" ÿÄ
ÿÄ J ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ
ÿÄ * !1AQa‘"2q3±ð#b¡ÿÚ
? ¼QxJQaÍuò¸Zö
Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁTÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßwpŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
?>
.........................................
.............................................................................
????????????????????????????????????
????????????????????????????????????
U:RDoc::NormalClass[iI"Ripper:ET@I"Object;To:RDoc::Markup::Document:@parts[
o;;[%o:RDoc::Markup::Paragraph;[I"$Ripper is a Ruby script parser.;To:RDoc::Markup::BlankLine o; ;[I"EYou can get information from the parser with event-based style. ;TI"QInformation such as abstract syntax trees or simple lexical analysis of the ;TI"Ruby program.;T@S:RDoc::Markup::Heading:
leveli: textI"
Usage;T@o; ;[I"PRipper provides an easy interface for parsing your program into a symbolic ;TI"'expression tree (or S-expression).;T@o; ;[I"JUnderstanding the output of the parser may come as a challenge, it's ;TI"@recommended you use PP to format the output for legibility.;T@o:RDoc::Markup::Verbatim;[I"require 'ripper'
;TI"require 'pp'
;TI"
;TI"@pp Ripper.sexp('def hello(world) "Hello, #{world}!"; end')
;TI" #=> [:program,
;TI" [[:def,
;TI"* [:@ident, "hello", [1, 4]],
;TI" [:paren,
;TI"X [:params, [[:@ident, "world", [1, 10]]], nil, nil, nil, nil, nil, nil]],
;TI" [:bodystmt,
;TI"" [[:string_literal,
;TI"# [:string_content,
;TI"; [:@tstring_content, "Hello, ", [1, 18]],
;TI"P [:string_embexpr, [[:var_ref, [:@ident, "world", [1, 27]]]]],
;TI"8 [:@tstring_content, "!", [1, 33]]]]],
;TI" nil,
;TI" nil,
;TI" nil]]]]
;T:@format0o; ;[I"MYou can see in the example above, the expression starts with +:program+.;T@o; ;[I"SFrom here, a method definition at +:def+, followed by the method's identifier ;TI"O:@ident. After the method's identifier comes the parentheses ;TI"8+:paren+ and the method parameters under +:params+.;T@o; ;[I"RNext is the method body, starting at +:bodystmt+ (+stmt+ meaning statement), ;TI"6which contains the full definition of the method.;T@o; ;[I"GIn our case, we're simply returning a String, so next we have the ;TI""+:string_literal+ expression.;T@o; ;[
I"SWithin our +:string_literal+ you'll notice two @tstring_content, ;TI"Sthis is the literal part for Hello, and !. Between ;TI"Nthe two @tstring_content statements is a +:string_embexpr+, ;TI"Swhere _embexpr_ is an embedded expression. Our expression consists of a local ;TI"Rvariable, or +var_ref+, with the identifier (@ident) of +world+.;T@S;;i;
I"Resources;T@o:RDoc::Markup::List:
@type:BULLET:@items[o:RDoc::Markup::ListItem:@label0;[o; ;[I"i{Ruby Inside}[http://www.rubyinside.com/using-ripper-to-see-how-ruby-is-parsing-your-code-5270.html];T@S;;i;
I"Requirements;T@o;;;;[o;;0;[o; ;[I"%ruby 1.9 (support CVS HEAD only);To;;0;[o; ;[I"2bison 1.28 or later (Other yaccs do not work);T@S;;i;
I"License;T@o; ;[I"Ruby License.;T@o;;;;[o;;0;[o; ;[I"Minero Aoki;To;;0;[o; ;[I"aamine@loveruby.net;To;;0;[o; ;[I"http://i.loveruby.net;T:
@fileI"ext/ripper/lib/ripper.rb;T:0@omit_headings_from_table_of_contents_below0o;;[ ;I""ext/ripper/lib/ripper/core.rb;T;0o;;[ ;I"$ext/ripper/lib/ripper/filter.rb;T;0o;;[ ;I"#ext/ripper/lib/ripper/lexer.rb;T;0o;;[ ;I""ext/ripper/lib/ripper/sexp.rb;T;0;0;0[ [U:RDoc::Constant[i I"PARSER_EVENTS;TI"Ripper::PARSER_EVENTS;T:public0o;;[o; ;[I"/This array contains name of parser events.;T;@{;0@{@cRDoc::NormalClass0U;[i I"SCANNER_EVENTS;TI"Ripper::SCANNER_EVENTS;T;0o;;[o; ;[I"0This array contains name of scanner events.;T;@{;0@{@@0U;[i I"EVENTS;TI"Ripper::EVENTS;T;0o;;[o; ;[I"3This array contains name of all ripper events.;T;@{;0@{@@0[ [[I"
class;T[[;[[I"lex;TI"#ext/ripper/lib/ripper/lexer.rb;T[I"
parse;TI""ext/ripper/lib/ripper/core.rb;T[I" sexp;TI""ext/ripper/lib/ripper/sexp.rb;T[I"
sexp_raw;T@[I"
slice;T@[I"
tokenize;T@[:protected[ [:private[ [I"
instance;T[[;[ [;[ [;[[I"compile_error;T@[I" warn;T@[I"warning;T@[ [U:RDoc::Context::Section[i 0o;;[ ;0;0[@x@{@~@|@I"lib/prism/lex_compat.rb;TI"(lib/rdoc/parser/ripper_state_lex.rb;TI"lib/rdoc/parser/ruby.rb;TI"$lib/syntax_suggest/code_line.rb;TI""lib/syntax_suggest/lex_all.rb;TI"$lib/syntax_suggest/lex_value.rb;T@cRDoc::TopLevel