Class: Predicator::Parser

Inherits:
Racc::Parser
  • Object
show all
Defined in:
lib/predicator/parser.rb

Constant Summary collapse

Racc_arg =
[
racc_action_table,
racc_action_check,
racc_action_default,
racc_action_pointer,
racc_goto_table,
racc_goto_check,
racc_goto_default,
racc_goto_pointer,
racc_nt_base,
racc_reduce_table,
racc_token_table,
racc_shift_n,
racc_reduce_n,
racc_use_result_var ]
Racc_token_to_s_table =
[
"$end",
"error",
"TRUE",
"FALSE",
"LPAREN",
"RPAREN",
"LBRACKET",
"RBRACKET",
"BANG",
"NOT",
"DOT",
"COMMA",
"AT",
"AND",
"OR",
"EQ",
"GT",
"LT",
"BETWEEN",
"IN",
"INTEGER",
"STRING",
"IDENTIFIER",
"$start",
"predicate",
"boolean_predicate",
"logical_predicate",
"group_predicate",
"comparison_predicate",
"variable",
"value",
"array",
"array_contents",
"literal" ]
Racc_debug_parser =
false

Instance Method Summary collapse

Constructor Details

#initializeParser

Returns a new instance of Parser.



15
16
17
# File 'lib/predicator/parser.rb', line 15

def initialize
  @lexer = Lexer.new
end

Instance Method Details

#_reduce_10(val, _values) ⇒ Object



239
240
241
# File 'lib/predicator/parser.rb', line 239

def _reduce_10(val, _values)
 AST::Or.new val.first, val.last 
end

#_reduce_11(val, _values) ⇒ Object



243
244
245
# File 'lib/predicator/parser.rb', line 243

def _reduce_11(val, _values)
 AST::Group.new val[1] 
end

#_reduce_12(val, _values) ⇒ Object



247
248
249
# File 'lib/predicator/parser.rb', line 247

def _reduce_12(val, _values)
 AST::Equal.new val.first, val.last 
end

#_reduce_13(val, _values) ⇒ Object



251
252
253
# File 'lib/predicator/parser.rb', line 251

def _reduce_13(val, _values)
 AST::GreaterThan.new val.first, val.last 
end

#_reduce_14(val, _values) ⇒ Object



255
256
257
# File 'lib/predicator/parser.rb', line 255

def _reduce_14(val, _values)
 AST::LessThan.new val.first, val.last 
end

#_reduce_15(val, _values) ⇒ Object



259
260
261
# File 'lib/predicator/parser.rb', line 259

def _reduce_15(val, _values)
 AST::Between.new val.first, val[2], val.last 
end

#_reduce_16(val, _values) ⇒ Object



263
264
265
# File 'lib/predicator/parser.rb', line 263

def _reduce_16(val, _values)
 AST::In.new val.first, val.last 
end

#_reduce_17(val, _values) ⇒ Object



267
268
269
# File 'lib/predicator/parser.rb', line 267

def _reduce_17(val, _values)
 AST::NotIn.new val.first, val.last 
end

#_reduce_18(val, _values) ⇒ Object



271
272
273
# File 'lib/predicator/parser.rb', line 271

def _reduce_18(val, _values)
 AST::Array.new val[1] 
end

#_reduce_20(val, _values) ⇒ Object

reduce 19 omitted



277
278
279
# File 'lib/predicator/parser.rb', line 277

def _reduce_20(val, _values)
 [val.first, val.last].flatten 
end

#_reduce_23(val, _values) ⇒ Object

reduce 22 omitted



285
286
287
# File 'lib/predicator/parser.rb', line 285

def _reduce_23(val, _values)
 AST::String.new val.first 
end

#_reduce_24(val, _values) ⇒ Object



289
290
291
# File 'lib/predicator/parser.rb', line 289

def _reduce_24(val, _values)
 AST::Integer.new val.first.to_i 
end

#_reduce_25(val, _values) ⇒ Object



293
294
295
# File 'lib/predicator/parser.rb', line 293

def _reduce_25(val, _values)
 AST::Variable.new val.first 
end

#_reduce_26(val, _values) ⇒ Object



297
298
299
# File 'lib/predicator/parser.rb', line 297

def _reduce_26(val, _values)
 AST::Variable.new [val.first, val.last].flatten.join(".") 
end

#_reduce_5(val, _values) ⇒ Object

reduce 4 omitted



219
220
221
# File 'lib/predicator/parser.rb', line 219

def _reduce_5(val, _values)
 AST::True.new true 
end

#_reduce_6(val, _values) ⇒ Object



223
224
225
# File 'lib/predicator/parser.rb', line 223

def _reduce_6(val, _values)
 AST::False.new false 
end

#_reduce_7(val, _values) ⇒ Object



227
228
229
# File 'lib/predicator/parser.rb', line 227

def _reduce_7(val, _values)
 AST::BooleanVariable.new val.first 
end

#_reduce_8(val, _values) ⇒ Object



231
232
233
# File 'lib/predicator/parser.rb', line 231

def _reduce_8(val, _values)
 AST::Not.new val.last 
end

#_reduce_9(val, _values) ⇒ Object



235
236
237
# File 'lib/predicator/parser.rb', line 235

def _reduce_9(val, _values)
 AST::And.new val.first, val.last 
end

#_reduce_none(val, _values) ⇒ Object



301
302
303
# File 'lib/predicator/parser.rb', line 301

def _reduce_none(val, _values)
  val[0]
end

#next_tokenObject



24
25
26
# File 'lib/predicator/parser.rb', line 24

def next_token
  @lexer.next_token
end

#on_error(type, val, values) ⇒ Object



28
29
30
31
32
33
# File 'lib/predicator/parser.rb', line 28

def on_error type, val, values
  super
rescue Racc::ParseError
  trace = values.each_with_index.map{|l, i| "#{' ' * i}#{l}"}
  raise ParseError, "\nparse error on value #{val.inspect}\n#{trace.join("\n")}"
end

#parse(string) ⇒ Object



19
20
21
22
# File 'lib/predicator/parser.rb', line 19

def parse string
  @lexer.parse string
  do_parse
end