Sha256: 6a297a8db27d92ff0b881f6f973edbb9f086fb6f323a24e94809fdeb2557edae

Contents?: true

Size: 651 Bytes

Versions: 13

Compression:

Stored size: 651 Bytes

Contents

# frozen_string_literal: true

require_relative 'zenlish_grammar'

module Zenlish
  class ZParser
    attr_reader(:engine)

    def initialize
      # Create a Rley facade object
      @engine = Rley::Engine.new

      # Step 1. Load Zenlish grammar
      @engine.use_grammar(ZenlishGrammar)
    end

    def parse(tokenSeq)
      result = engine.parse(tokenSeq)

      unless result.success?
        # Stop if the parse failed...
        line1 = "Parsing failed\n"
        line2 = "Reason: #{result.failure_reason.message}"
        raise StandardError, line1 + line2
      end

      return engine.to_ptree(result)
    end
  end # class
end # module

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
zenlish-0.1.13 lib/zenlish/parser/zparser.rb
zenlish-0.1.12 lib/zenlish/parser/zparser.rb
zenlish-0.1.11 lib/zenlish/parser/zparser.rb
zenlish-0.1.10 lib/zenlish/parser/zparser.rb
zenlish-0.1.09 lib/zenlish/parser/zparser.rb
zenlish-0.1.07 lib/zenlish/parser/zparser.rb
zenlish-0.1.06 lib/zenlish/parser/zparser.rb
zenlish-0.1.05 lib/zenlish/parser/zparser.rb
zenlish-0.1.04 lib/zenlish/parser/zparser.rb
zenlish-0.1.03 lib/zenlish/parser/zparser.rb
zenlish-0.1.02 lib/zenlish/parser/zparser.rb
zenlish-0.1.01 lib/zenlish/parser/zparser.rb
zenlish-0.1.0 lib/zenlish/parser/zparser.rb