Scarlet Line home page Scarlet Line - SOFTWARE DESIGN & DEVELOPMENT

[Home]->[Documentation]->[Syntac Universal Parser]->[Other Grammars]->[Extended Backus-Naur form (EBNF)]->[Symbols]->[character_set_elem]

Expand All
Collapse All
Contents

ebnf::character_set_elem Locate in Contents

Declaration Locate in Contents

character_set_elem[parser_type & tree, syntac::terminal_range & _range] ::=
    {    long _val1 = 0, _val2 = 0;/* }*/
        regexp_range_char[_val1] ("-" regexp_range_char[_val2])?
            {
            if (_val2 < _val1)
                {
                if (_val2)
                    {
                    std::cerr << $file << ':' << $line << ": warning: regular expression range invalid " << _val1 << "-" << _val2 << std::endl;
                    $report_position(std::cerr);
                    }
                _val2 = _val1;
                }
            _range.add(_val1, _val2);
            }
    |    ( { syntac::terminal_range _range2;/* }*/
        regexp_sub_range[tree, _range2]
        {    _range.add(_range2);/* }*/
        )

Composition Locate in Contents

regexp_oneof character_set_elem Alternation Node regexp_not_oneof Concatenation Node regexp_sub_range regexp_range_char Alternation Node Concatenation Node @ '\\-' regexp_range_char

State Machine Locate in Contents

start:919:$0 regexp_range_char|{903|$2|904} regexp_sub_range|{905|$7|906} final:920:$0 regexp_range_char|{903|$6|904}