/* * -*- tcl -*- * Parsing Expression Grammar 'TEMPLATE'. * Generated for unknown, from file 'TEST' */ /* * Declaring the parse functions */ <> void <>sym_AddOp (<> <>); <> void <>sym_Digit (<> <>); <> void <>sequence_9 (<> <>); <> void <>sequence_14 (<> <>); <> void <>kleene_16 (<> <>); <> void <>sequence_18 (<> <>); <> void <>choice_20 (<> <>); <> void <>sym_Expression (<> <>); <> void <>sequence_26 (<> <>); <> void <>kleene_28 (<> <>); <> void <>sequence_30 (<> <>); <> void <>sym_Factor (<> <>); <> void <>sym_MulOp (<> <>); <> void <>optional_36 (<> <>); <> void <>poskleene_39 (<> <>); <> void <>sequence_41 (<> <>); <> void <>sym_Number (<> <>); <> void <>sym_Sign (<> <>); <> void <>sym_Term (<> <>); /* * Precomputed table of strings (symbols, error messages, etc.). */ static char const* <> [21] = { /* 0 = */ "cl '-+'", /* 1 = */ "n AddOp", /* 2 = */ "AddOp", /* 3 = */ "cl '0123456789'", /* 4 = */ "n Digit", /* 5 = */ "Digit", /* 6 = */ "t \50", /* 7 = */ "t \51", /* 8 = */ "n Expression", /* 9 = */ "Expression", /* 10 = */ "n Factor", /* 11 = */ "Factor", /* 12 = */ "cl '*/'", /* 13 = */ "n MulOp", /* 14 = */ "MulOp", /* 15 = */ "n Number", /* 16 = */ "Number", /* 17 = */ "n Sign", /* 18 = */ "Sign", /* 19 = */ "n Term", /* 20 = */ "Term" }; /* * Grammar Start Expression */ <> void <><
> (<> <>) { <> <> <>sym_Expression (<>); return; } /* * value Symbol 'AddOp' */ <> void <>sym_AddOp (<> <>) { <> /* * [-+] */ if (rde_param_i_symbol_start (<>, 2)) return ; rde_param_i_next_class (<>, "-+", 0); rde_param_i_symbol_done_leaf (<>, 2, 1); return; } /* * value Symbol 'Digit' */ <> void <>sym_Digit (<> <>) { <> /* * [0123456789] */ if (rde_param_i_symbol_start (<>, 5)) return ; rde_param_i_next_class (<>, "0123456789", 3); rde_param_i_symbol_done_leaf (<>, 5, 4); return; } /* * value Symbol 'Expression' */ <> void <>sym_Expression (<> <>) { <> /* * / * x * '\(' * (Expression) * '\)' * x * (Factor) * * * x * (MulOp) * (Factor) */ if (rde_param_i_symbol_start_d (<>, 9)) return ; <> <>choice_20 (<>); rde_param_i_symbol_done_d_reduce (<>, 9, 8); return; } <> void <>choice_20 (<> <>) { <> /* * / * x * '\(' * (Expression) * '\)' * x * (Factor) * * * x * (MulOp) * (Factor) */ rde_param_i_state_push_value (<>); <> <>sequence_9 (<>); if (rde_param_i_bra_value2value(<>)) return; <> <>sequence_18 (<>); rde_param_i_state_merge_value (<>); return; } <> void <>sequence_9 (<> <>) { <> /* * x * '\(' * (Expression) * '\)' */ rde_param_i_state_push_void (<>); rde_param_i_next_char (<>, "\50", 6); if (rde_param_i_seq_void2value(<>)) return; <> <>sym_Expression (<>); if (rde_param_i_seq_value2value(<>)) return; rde_param_i_next_char (<>, "\51", 7); rde_param_i_state_merge_value (<>); return; } <> void <>sequence_18 (<> <>) { <> /* * x * (Factor) * * * x * (MulOp) * (Factor) */ rde_param_i_state_push_value (<>); <> <>sym_Factor (<>); if (rde_param_i_seq_value2value(<>)) return; <> <>kleene_16 (<>); rde_param_i_state_merge_value (<>); return; } <> void <>kleene_16 (<> <>) { <> /* * * * x * (MulOp) * (Factor) */ while (1) { rde_param_i_state_push_2 (<>); <> <>sequence_14 (<>); if (rde_param_i_kleene_close(<>)) return; } return; } <> void <>sequence_14 (<> <>) { <> /* * x * (MulOp) * (Factor) */ rde_param_i_state_push_value (<>); <> <>sym_MulOp (<>); if (rde_param_i_seq_value2value(<>)) return; <> <>sym_Factor (<>); rde_param_i_state_merge_value (<>); return; } /* * value Symbol 'Factor' */ <> void <>sym_Factor (<> <>) { <> /* * x * (Term) * * * x * (AddOp) * (Term) */ if (rde_param_i_symbol_start_d (<>, 11)) return ; <> <>sequence_30 (<>); rde_param_i_symbol_done_d_reduce (<>, 11, 10); return; } <> void <>sequence_30 (<> <>) { <> /* * x * (Term) * * * x * (AddOp) * (Term) */ rde_param_i_state_push_value (<>); <> <>sym_Term (<>); if (rde_param_i_seq_value2value(<>)) return; <> <>kleene_28 (<>); rde_param_i_state_merge_value (<>); return; } <> void <>kleene_28 (<> <>) { <> /* * * * x * (AddOp) * (Term) */ while (1) { rde_param_i_state_push_2 (<>); <> <>sequence_26 (<>); if (rde_param_i_kleene_close(<>)) return; } return; } <> void <>sequence_26 (<> <>) { <> /* * x * (AddOp) * (Term) */ rde_param_i_state_push_value (<>); <> <>sym_AddOp (<>); if (rde_param_i_seq_value2value(<>)) return; <> <>sym_Term (<>); rde_param_i_state_merge_value (<>); return; } /* * value Symbol 'MulOp' */ <> void <>sym_MulOp (<> <>) { <> /* * [*/] */ if (rde_param_i_symbol_start (<>, 14)) return ; rde_param_i_next_class (<>, "*/", 12); rde_param_i_symbol_done_leaf (<>, 14, 13); return; } /* * value Symbol 'Number' */ <> void <>sym_Number (<> <>) { <> /* * x * ? * (Sign) * + * (Digit) */ if (rde_param_i_symbol_start_d (<>, 16)) return ; <> <>sequence_41 (<>); rde_param_i_symbol_done_d_reduce (<>, 16, 15); return; } <> void <>sequence_41 (<> <>) { <> /* * x * ? * (Sign) * + * (Digit) */ rde_param_i_state_push_value (<>); <> <>optional_36 (<>); if (rde_param_i_seq_value2value(<>)) return; <> <>poskleene_39 (<>); rde_param_i_state_merge_value (<>); return; } <> void <>optional_36 (<> <>) { <> /* * ? * (Sign) */ rde_param_i_state_push_2 (<>); <> <>sym_Sign (<>); rde_param_i_state_merge_ok (<>); return; } <> void <>poskleene_39 (<> <>) { <> /* * + * (Digit) */ rde_param_i_loc_push (<>); <> <>sym_Digit (<>); if (rde_param_i_kleene_abort(<>)) return; while (1) { rde_param_i_state_push_2 (<>); <> <>sym_Digit (<>); if (rde_param_i_kleene_close(<>)) return; } return; } /* * value Symbol 'Sign' */ <> void <>sym_Sign (<> <>) { <> /* * [-+] */ if (rde_param_i_symbol_start (<>, 18)) return ; rde_param_i_next_class (<>, "-+", 0); rde_param_i_symbol_done_leaf (<>, 18, 17); return; } /* * value Symbol 'Term' */ <> void <>sym_Term (<> <>) { <> /* * (Number) */ if (rde_param_i_symbol_start_d (<>, 20)) return ; <> <>sym_Number (<>); rde_param_i_symbol_done_d_reduce (<>, 20, 19); return; } /* */