class Antelope::DSL::Contexts::Main

The main context of the Antelope DSL.

Public Instance Methods

define(pass) click to toggle source
# File lib/antelope/dsl/contexts/main.rb, line 6
def define(pass)
  pass.each do |key, value|
    case value
    when Array
      @defines[key] = value
    else
      @defines[key] = [value]
    end
  end
end
precedences(&block) click to toggle source
# File lib/antelope/dsl/contexts/main.rb, line 21
def precedences(&block)
  @precedences = context(Precedence, &block)
end
productions(&block) click to toggle source
# File lib/antelope/dsl/contexts/main.rb, line 25
def productions(&block)
  @productions = context(Production, &block)
end
template(template) click to toggle source
# File lib/antelope/dsl/contexts/main.rb, line 29
def template(template)
  case template
  when Hash
    @templates.merge(template)
  when String
    @templates[:default] = template
  else
    raise ArgumentError, "Unexpected #{template.class}, " \
      "expected String or Hash"
  end
end
terminals(&block) click to toggle source
# File lib/antelope/dsl/contexts/main.rb, line 17
def terminals(&block)
  @terminals.merge! context(Terminal, &block)
end

Private Instance Methods

before_call() click to toggle source
# File lib/antelope/dsl/contexts/main.rb, line 43
def before_call
  @defines     = {}
  @templates   = {}
  @terminals   = {}
  @precedences = []
  @productions = []
end
data() click to toggle source
# File lib/antelope/dsl/contexts/main.rb, line 51
def data
  {
    defines:     @defines,
    templates:   @templates,
    terminals:   @terminals,
    precedences: @precedences,
    productions: @productions
  }
end