module Srgs::DSL

Public Instance Methods

example(text) click to toggle source
# File lib/srgs/dsl.rb, line 4
def example(text)
  @grammar.current_level << Example.new(text)
end
grammar(root, &block) click to toggle source
# File lib/srgs/dsl.rb, line 8
def grammar(root, &block)
  @grammar = Grammar.new root
  instance_eval &block
  @grammar.current_level = nil
  grammar =  Srgs.build(@grammar)
  puts grammar
  grammar
end
item(element = '', args = {}, &block) click to toggle source
# File lib/srgs/dsl.rb, line 17
def item(element = '', args = {}, &block)
  item = Item.new(element, args[:repeat], args[:repeat_prob], args[:weight])
  @grammar.current_level << item
  old_current = @grammar.current_level
  @grammar.current_level = item
  instance_eval &block unless block.nil?
  @grammar.current_level = old_current
end
lexicon(uri, args = {}) click to toggle source
# File lib/srgs/dsl.rb, line 26
def lexicon(uri, args = {})
  @grammar << Lexicon.new(uri, args[:type])
end
meta(content, args = {}) click to toggle source
# File lib/srgs/dsl.rb, line 30
def meta(content, args = {})
  @grammar << Meta.new(content, args[:name], args[:http_equiv])
end
one_of(&block) click to toggle source
# File lib/srgs/dsl.rb, line 34
def one_of(&block)
  old_current = @grammar.current_level
  @grammar.current_level = OneOf.new
  old_current << @grammar.current_level
  instance_eval &block
  @grammar.current_level = old_current
end
private_rule(id, args = {}, &block) click to toggle source
# File lib/srgs/dsl.rb, line 49
def private_rule(id, args = {},  &block)
  @grammar.current_level = Rule.new(id, 'private', args[:dynamic])
  @grammar << @grammar.current_level
  instance_eval &block
  @grammar.current_level = nil
end
public_rule(id, args = {}, &block) click to toggle source
# File lib/srgs/dsl.rb, line 42
def public_rule(id, args = {}, &block)
  @grammar.current_level = Rule.new(id, 'public', args[:dynamic])
  @grammar << @grammar.current_level
  instance_eval &block
  @grammar.current_level = nil
end
reference(name, args = {}) click to toggle source
# File lib/srgs/dsl.rb, line 56
def reference(name, args = {})
  @grammar.current_level << RuleRef.new(name, args[:special])
end
reference_item(name, args = {}) click to toggle source
# File lib/srgs/dsl.rb, line 60
def reference_item(name, args = {})
  @grammar.current_level << Item.new(RuleRef.new(name, args[:special]))
end
reference_wildcard() click to toggle source
# File lib/srgs/dsl.rb, line 64
def reference_wildcard
  @grammar.current_level << RuleRef.new(nil, 'GARBAGE')
end
tag(text) click to toggle source
# File lib/srgs/dsl.rb, line 68
def tag(text)
  @grammar.current_level << Tag.new(text)
end
text(text) click to toggle source
# File lib/srgs/dsl.rb, line 72
def text(text)
  @grammar.current_level << text
end
token(text, args = {}) click to toggle source
# File lib/srgs/dsl.rb, line 76
def token(text, args = {})
  @grammar.current_level << Token.new(text, args[:display], args[:pron])
end