Sha256: 95af7376e8e2efd3c2cc83dba15c1cd0f79b0893463f1d17c01ee0291e4d9889

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

require "date"

require "predicator/generated_parser"
require "predicator/lexer"
require "predicator/variable"

require "predicator/predicates/relation"
require "predicator/predicates/equal"
require "predicator/predicates/not_equal"
require "predicator/predicates/greater_than"
require "predicator/predicates/less_than"
require "predicator/predicates/greater_than_or_equal"
require "predicator/predicates/less_than_or_equal"
require "predicator/predicates/between"
require "predicator/predicates/true"
require "predicator/predicates/false"
require "predicator/predicates/and"
require "predicator/predicates/or"
require "predicator/predicates/not"

module Predicator
  class ParseError < StandardError; end

  class Parser < GeneratedParser
    def next_token
      @lexer.next_token
    end

    def parse string
      @lexer = Lexer.new string
      do_parse
    end

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
predicator-0.3.0 lib/predicator/parser.rb