NAME

DynGig::Range::String::Parse - Implements DynGig::Range::Interface::Parse.

GRAMMAR

Tokenizer and parser implement the base class BNF with the following differences.

<expression> ::=

<multi> ( <operator> <multi> )* | <multi> ( <operator> <regex> )*

<regex> ::= <a subset of perl regex>

e.g.

/^foobar$/i
/[1-3]/

Range takes precedence on symbols that are common to both range and regex.

OBJECT

A variable-level HASH with levels alternating between numeric and non-numeric keys, and leaves as { '' => '' }.

e.g. 'abc000~4,123~4xyz,abc123xyz456,abc,xyz' is stored as

'123':
  xyz:
    '': ''
'124':
  xyz:
    '': ''
abc:
  '': ''
  '000':
    '': ''
  '001':
    '': ''
  '002':
    '': ''
  '003':
    '': ''
  '004':
    '': ''
  '123':
    xyz:
      '456':
        '': ''
xyz:
  '': ''

LITERAL

A rudimentary range form. e.g.

'abc000~4'
'xyz'
'123'

NOTE

See DynGig::Range