Scarlet Line home page Scarlet Line - SOFTWARE DESIGN & DEVELOPMENT

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

Expand All
Collapse All
Contents

ebnf::terminal Locate in Contents

Declaration Locate in Contents

terminal[parser_type & tree, vertex_token parent_value, arc_token & current_link, parser_type::arc_label_type & current_dollar_label] ::=    
        "'" regular_expression[tree, parent_value, current_link] regexp_tail_end[tree, current_link]? "'" "i"?
            {
            current_dollar_label = tree.arc_label(* current_link);
            tree.add_dollar_label(current_dollar_label);
            if (!$6.empty() || !tree.get_case_sensitive())
                tree.case_insensitize(current_link);
            }
    |    "'" regexp_tail[tree, parent_value, current_link]? "'" "i"?
            {
            if (!$5.empty() || !tree.get_case_sensitive())
                tree.case_insensitize(current_link);
            }
    |    '\'"' quoted_string[tree, parent_value, current_link] '\"' "i"?            {            current_dollar_label = tree.arc_label(* current_link);            tree.add_dollar_label(current_dollar_label);            if (!$4.empty() || !tree.get_case_sensitive())                tree.case_insensitize(current_link);                }    |    "@"            {            current_link = tree.insert_blank_terminal(parent_value);            current_dollar_label = tree.arc_label(* current_link);            tree.add_dollar_label(current_dollar_label);            }    |    "!"            {             current_link = tree.insert_final_terminal(parent_value);            current_dollar_label = tree.arc_label(* current_link);            tree.add_dollar_label(current_dollar_label);            }    |    '%' abnf_value[tree, parent_value, current_link]            {            current_dollar_label = tree.arc_label(* current_link);            tree.add_dollar_label(current_dollar_label);            }    |    "~"            {            current_link = tree.insert_terminal_range_list(parent_value, "[]");
            current_dollar_label = tree.arc_label(* current_link);
            tree.add_dollar_label(current_dollar_label);
            }

Composition Locate in Contents

symexp_element terminal Alternation Node Concatenation Node Concatenation Node Concatenation Node '@' '!' Concatenation Node '~' ''' regular_expression Alternation Node ''' Alternation Node ''' Alternation Node ''' Alternation Node ' quoted_string ' Alternation Node '%' abnf_value regexp_tail_end @ 'i' @ regexp_tail @ 'i' @ 'i' @

State Machine Locate in Contents

start:855:$0 final:856:$0 regular_expression|{857|$3|858} regexp_tail|{945|$12|946} quoted_string|{947|$18|948} abnf_value|{957|$26|958} regexp_tail_end|{943|$5|944}