Sha256: b1ce4dcae4e1b23caab2efada09beb192e62ca3b1d07ccae48232d2a03f592f3

Contents?: true

Size: 1.8 KB

Versions: 3

Compression:

Stored size: 1.8 KB

Contents

# encoding: utf-8

require "hashie"
require "antelope/ace/grammar/symbols"
require "antelope/ace/grammar/productions"
require "antelope/ace/grammar/precedences"
require "antelope/ace/grammar/loading"
require "antelope/ace/grammar/generation"

module Antelope
  module Ace

    # Defines a grammar from an Ace file.  This handles setting up
    # productions, loading from files, symbols, precedence, and
    # generation.
    class Grammar

      include Symbols
      include Productions
      include Precedences
      include Loading
      include Grammar::Generation

      # Used by a generation class; this is all the generated states
      # of the grammar.
      #
      # @return [Set<Generation::Recognizer::State>]
      # @see Generation::Recognizer
      attr_accessor :states

      # The name of the grammar.  This is normally assumed from a file
      # name.
      #
      # @return [String]
      attr_accessor :name

      # The output directory for the grammar.  This is normally the
      # same directory as the Ace file.
      #
      # @return [Pathname]
      attr_accessor :output

      # The compiler for the Ace file.
      #
      # @return [Compiler]
      attr_reader :compiler

      # Initialize.
      #
      # @param name [String]
      # @param output [String] the output directory.  Automagically
      #   turned into a Pathname.
      # @param compiler [Compiler]
      def initialize(name, output, compiler)
        @name     = name
        @output   = Pathname.new(output)
        @compiler = compiler
      end

      # Extra options from the compiler.  This can be used by
      # generators for output information.
      #
      # @return [Hash]
      def options
        compiler.options[:extra]
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
antelope-0.2.4 lib/antelope/ace/grammar.rb
antelope-0.2.3 lib/antelope/ace/grammar.rb
antelope-0.2.2 lib/antelope/ace/grammar.rb