Scarlet Line home page Scarlet Line - SOFTWARE DESIGN & DEVELOPMENT

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

Expand All
Collapse All
Contents

ebnf::symexp_element Locate in Contents

Declaration Locate in Contents

symexp_element[parser_type & tree, vertex_token rule_symbol, vertex_token parent_value, arc_token & current_link, parser_type::arc_label_type & current_dollar_label] ::=
    {
    std::string    _pre_code_str, _post_code_str;
    }
        "(" ( lws? code_block[_pre_code_str] )? symbol_expression[tree, rule_symbol, parent_value, current_link, current_dollar_label] lws? ( code_block[_post_code_str] lws? )? ")"
            {
            if (!_pre_code_str.empty())
                {
                tree.add_pre_code(current_link, _pre_code_str);
                }
            if (!_post_code_str.empty())
                {
                tree.add_post_code(current_link, _post_code_str);
                }
            }
    |    symbol[tree, parent_value, current_link, current_dollar_label]
    |    terminal[tree, parent_value, current_link, current_dollar_label]

Composition Locate in Contents

symexp_compound symexp_element Alternation Node symexp_compound_rfc Concatenation Node symbol terminal '(' Alternation Node symbol_expression Alternation Node Alternation Node ')' Concatenation Node @ lws @ Concatenation Node @ Alternation Node code_block code_block Alternation Node lws @ lws @

State Machine Locate in Contents

start:851:$0 symbol|{853|$17|854} terminal|{855|$18|856} final:852:$0 lws|{735|$6|736} code_block|{750|$7|751} symbol_expression|{843|$8|844} lws|{735|$10|736} code_block|{750|$13|751} lws|{735|$15|736}