Scarlet Line home page Scarlet Line - SOFTWARE DESIGN & DEVELOPMENT

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

Expand All
Collapse All
Contents

ebnf::production_rule Locate in Contents

Declaration Locate in Contents

production_rule[parser_type & tree, std::string & _rules] ::=
    {
    vertex_token rule_symbol = 0;
    std::string _result;
    arc_token current_link;
    parser_type::arc_label_type current_dollar_label;
    }    
        (reference lws?)?
            (
                symbol_declare[tree, rule_symbol] ( lws? code_block[_result] )? symbol_expression[tree, rule_symbol, rule_symbol, current_link, current_dollar_label]
            |    symbol_append_union[tree, rule_symbol, current_link, current_dollar_label] ( lws? code_block[_result] )? append_symexp_union_list[tree, rule_symbol, current_link, current_dollar_label]
            |    symbol_append_concat[tree, rule_symbol, current_link, current_dollar_label] ( lws? code_block[_result] )? additional_symexp_concat_list[tree, rule_symbol, current_link, current_dollar_label]
            )
            {
            tree.add_pre_code(current_link, _result);
            tree.add_comment(rule_symbol, $0);
            if (_M_ParseMode == PreprocessMode)
                {
                _rules += $0;
                }
            }

Composition Locate in Contents

syntac_file production_rule Concatenation Node Alternation Node Alternation Node Concatenation Node @ Concatenation Node Concatenation Node Concatenation Node reference Alternation Node symbol_declare Alternation Node symbol_expression symbol_append_union Alternation Node append_symexp_union_list symbol_append_concat Alternation Node additional_symexp_concat_list lws @ Concatenation Node @ Concatenation Node @ Concatenation Node @ Alternation Node code_block Alternation Node code_block Alternation Node code_block lws @ lws @ lws @

State Machine Locate in Contents

start:810:$0 reference|{812|$3|813} final:811:$0 lws|{735|$5|736} symbol_declare|{816|$8|817} symbol_append_union|{993|$16|994} symbol_append_concat|{999|$24|1000} lws|{735|$12|736} lws|{735|$20|736} lws|{735|$28|736} code_block|{750|$13|751} symbol_expression|{843|$14|844} code_block|{750|$21|751} append_symexp_union_list|{997|$22|998} code_block|{750|$29|751} additional_symexp_concat_list|{989|$30|990}