Class: Aurum::Grammar::DSL::CharacterClassesBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/aurum/grammar/dsl/lexical_definition.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCharacterClassesBuilder

Returns a new instance of CharacterClassesBuilder.



8
9
10
11
12
13
# File 'lib/aurum/grammar/dsl/lexical_definition.rb', line 8

def initialize
  @__named_character_classes__ = {'any' => Aurum::Grammar::LexicalRules::CharacterSet.any,
    'underscore' => enum('_'),'single_quote' => enum("'"), 'double_quote' => enum('"'),
    'ascii' => range(0, 255), 'decimal_number' => range(?0, ?9),
    'ascii_punctuation' => range(33, 47) + range(58, 64) + range(91, 96) + range(123, 126)}
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, char_set = nil) ⇒ Object



23
24
25
26
27
28
# File 'lib/aurum/grammar/dsl/lexical_definition.rb', line 23

def method_missing name, char_set = nil
  name = name.to_s
  return @__named_character_classes__[name] unless char_set
  raise "already defined character class: #{name}" if @__named_character_classes__.has_key? name
  @__named_character_classes__[name] = char_set.kind_of?(Aurum::Grammar::LexicalRules::CharacterSet) ? char_set : enum(char_set.to_s)
end

Instance Attribute Details

#__named_character_classes__Object (readonly)

Returns the value of attribute named_character_classes.



6
7
8
# File 'lib/aurum/grammar/dsl/lexical_definition.rb', line 6

def __named_character_classes__
  @__named_character_classes__
end

Instance Method Details

#enum(literal) ⇒ Object



19
20
21
# File 'lib/aurum/grammar/dsl/lexical_definition.rb', line 19

def enum literal
  Grammar.enum(literal)
end

#range(first, last = first) ⇒ Object



15
16
17
# File 'lib/aurum/grammar/dsl/lexical_definition.rb', line 15

def range first, last = first
  Grammar.range(first, last)
end