Module: Ripper::RubyBuilder::Lexer

Included in:
Ripper::RubyBuilder
Defined in:
lib/ripper/ruby_builder/events/lexer.rb

Instance Method Summary collapse

Instance Method Details

#on___end__(*args) ⇒ Object



154
155
156
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 154

def on___end__(*args)
  push(super)
end

#on_backtick(*args) ⇒ Object



50
51
52
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 50

def on_backtick(*args)
  push(super)
end

#on_comma(*args) ⇒ Object



46
47
48
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 46

def on_comma(*args)
  push(super)
end

#on_comment(*args) ⇒ Object



26
27
28
29
30
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 26

def on_comment(*args)
  token = push(super)
  on_heredoc_literal if end_heredoc?(token)
  token
end

#on_embdoc(doc) ⇒ Object



138
139
140
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 138

def on_embdoc(doc)
  push([:@comment, doc, position])
end

#on_embdoc_beg(doc) ⇒ Object



142
143
144
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 142

def on_embdoc_beg(doc)
  push([:@comment, doc, position])
end

#on_embdoc_end(doc) ⇒ Object



146
147
148
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 146

def on_embdoc_end(doc)
  push([:@comment, doc, position])
end

#on_embexpr_beg(*args) ⇒ Object



94
95
96
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 94

def on_embexpr_beg(*args)
  push(super)
end

#on_embexpr_end(*args) ⇒ Object



98
99
100
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 98

def on_embexpr_end(*args)
  push(super)
end

#on_embvar(*args) ⇒ Object



150
151
152
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 150

def on_embvar(*args)
  push(super)
end

#on_ignored_nl(*args) ⇒ Object



14
15
16
17
18
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 14

def on_ignored_nl(*args)
  token = push(super)
  on_heredoc_literal if end_heredoc?(token)
  token
end

#on_lbrace(*args) ⇒ Object



126
127
128
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 126

def on_lbrace(*args)
  push(super)
end

#on_lbracket(*args) ⇒ Object



118
119
120
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 118

def on_lbracket(*args)
  push(super)
end

#on_lparen(*args) ⇒ Object



110
111
112
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 110

def on_lparen(*args)
  push(super)
end

#on_nl(*args) ⇒ Object



20
21
22
23
24
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 20

def on_nl(*args)
  token = push(super)
  on_heredoc_literal if end_heredoc?(token)
  token
end

#on_op(*args) ⇒ Object



134
135
136
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 134

def on_op(*args)
  push(super)
end

#on_param_error(param) ⇒ Object

Raises:



10
11
12
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 10

def on_param_error(param)
  raise ParseError.new("#{filename}:#{position.row + 1}: syntax error, invalid parameter type: #{param.to_ruby}")
end

#on_parse_error(msg) ⇒ Object

unimplemented = :tlambda, :tlambeg

Raises:



6
7
8
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 6

def on_parse_error(msg)
  raise ParseError.new("#{filename}:#{position.row + 1}: #{msg}")
end

#on_period(*args) ⇒ Object



42
43
44
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 42

def on_period(*args)
  push(super)
end

#on_qwords_beg(*args) ⇒ Object



72
73
74
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 72

def on_qwords_beg(*args)
  push(super)
end

#on_rbrace(*args) ⇒ Object



130
131
132
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 130

def on_rbrace(*args)
  push(super)
end

#on_rbracket(*args) ⇒ Object



122
123
124
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 122

def on_rbracket(*args)
  push(super)
end

#on_regexp_beg(*args) ⇒ Object



102
103
104
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 102

def on_regexp_beg(*args)
  push(super)
end

#on_regexp_end(*args) ⇒ Object



106
107
108
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 106

def on_regexp_end(*args)
  push(super)
end

#on_rparen(*args) ⇒ Object



114
115
116
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 114

def on_rparen(*args)
  push(super)
end

#on_semicolon(*args) ⇒ Object



38
39
40
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 38

def on_semicolon(*args)
  push(super)
end

#on_sp(*args) ⇒ Object



32
33
34
35
36
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 32

def on_sp(*args)
  token = push(super)
  on_heredoc_literal if end_heredoc?(token) # ripper counts \ + nl ("\\\n") as whitespace
  token
end

#on_symbeg(*args) ⇒ Object



54
55
56
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 54

def on_symbeg(*args)
  push(super)
end

#on_tstring_beg(*args) ⇒ Object



58
59
60
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 58

def on_tstring_beg(*args)
  push(super)
end

#on_tstring_content(token) ⇒ Object



62
63
64
65
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 62

def on_tstring_content(token)
  push(super)
  nil
end

#on_tstring_end(token) ⇒ Object



67
68
69
70
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 67

def on_tstring_end(token)
  push(super)
  on_words_end(token) if closes_words?(token) # simulating on_words_end event
end

#on_words_beg(*args) ⇒ Object



76
77
78
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 76

def on_words_beg(*args)
  push(super)
end

#on_words_sep(token) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/ripper/ruby_builder/events/lexer.rb', line 80

def on_words_sep(token)
  token.each_char do |token|
    case token
    when "\n"
      push([:@nl, token, position])
    when /\s+/
      push([:@sp, token, position])
    else
      push([:@words_end, token, position])
      on_words_end(token) if closes_words?(token) # simulating on_words_end event
    end
  end
end