/* * -*- tcl -*- * Parsing Expression Grammar 'TEMPLATE'. * Generated for unknown, from file 'TEST' */ /* * Declaring the parse functions */ <> void <>sym_AddOp (<> <>); <> void <>sym_Digit (<> <>); <> void <>sequence_10 (<> <>); <> void <>sequence_15 (<> <>); <> void <>kleene_17 (<> <>); <> void <>sequence_19 (<> <>); <> void <>choice_21 (<> <>); <> void <>sym_Expression (<> <>); <> void <>sequence_27 (<> <>); <> void <>kleene_29 (<> <>); <> void <>sequence_31 (<> <>); <> void <>sym_Factor (<> <>); <> void <>sym_Function (<> <>); <> void <>sym_MulOp (<> <>); <> void <>optional_39 (<> <>); <> void <>poskleene_42 (<> <>); <> void <>sequence_44 (<> <>); <> void <>sym_Number (<> <>); <> void <>sym_Sign (<> <>); <> void <>sequence_52 (<> <>); <> void <>sym_Sinus (<> <>); <> void <>sym_Term (<> <>); /* * Precomputed table of strings (symbols, error messages, etc.). */ static char const* <> [26] = { /* 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 = */ "n Function", /* 13 = */ "Function", /* 14 = */ "cl '*/'", /* 15 = */ "n MulOp", /* 16 = */ "MulOp", /* 17 = */ "n Number", /* 18 = */ "Number", /* 19 = */ "n Sign", /* 20 = */ "Sign", /* 21 = */ "str 'sin\50'", /* 22 = */ "n Sinus", /* 23 = */ "Sinus", /* 24 = */ "n Term", /* 25 = */ "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 (<> <>) { <> /* * / * (Function) * x * '\(' * (Expression) * '\)' * x * (Factor) * * * x * (MulOp) * (Factor) */ if (rde_param_i_symbol_start_d (<>, 9)) return ; <> <>choice_21 (<>); rde_param_i_symbol_done_d_reduce (<>, 9, 8); return; } <> void <>choice_21 (<> <>) { <> /* * / * (Function) * x * '\(' * (Expression) * '\)' * x * (Factor) * * * x * (MulOp) * (Factor) */ rde_param_i_state_push_value (<>); <> <>sym_Function (<>); if (rde_param_i_bra_value2value(<>)) return; <> <>sequence_10 (<>); if (rde_param_i_bra_value2value(<>)) return; <> <>sequence_19 (<>); rde_param_i_state_merge_value (<>); return; } <> void <>sequence_10 (<> <>) { <> /* * 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_19 (<> <>) { <> /* * x * (Factor) * * * x * (MulOp) * (Factor) */ rde_param_i_state_push_value (<>); <> <>sym_Factor (<>); if (rde_param_i_seq_value2value(<>)) return; <> <>kleene_17 (<>); rde_param_i_state_merge_value (<>); return; } <> void <>kleene_17 (<> <>) { <> /* * * * x * (MulOp) * (Factor) */ while (1) { rde_param_i_state_push_2 (<>); <> <>sequence_15 (<>); if (rde_param_i_kleene_close(<>)) return; } return; } <> void <>sequence_15 (<> <>) { <> /* * 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_31 (<>); rde_param_i_symbol_done_d_reduce (<>, 11, 10); return; } <> void <>sequence_31 (<> <>) { <> /* * x * (Term) * * * x * (AddOp) * (Term) */ rde_param_i_state_push_value (<>); <> <>sym_Term (<>); if (rde_param_i_seq_value2value(<>)) return; <> <>kleene_29 (<>); rde_param_i_state_merge_value (<>); return; } <> void <>kleene_29 (<> <>) { <> /* * * * x * (AddOp) * (Term) */ while (1) { rde_param_i_state_push_2 (<>); <> <>sequence_27 (<>); if (rde_param_i_kleene_close(<>)) return; } return; } <> void <>sequence_27 (<> <>) { <> /* * 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 'Function' */ <> void <>sym_Function (<> <>) { <> /* * (Sinus) */ if (rde_param_i_symbol_start_d (<>, 13)) return ; <> <>sym_Sinus (<>); rde_param_i_symbol_done_d_reduce (<>, 13, 12); return; } /* * value Symbol 'MulOp' */ <> void <>sym_MulOp (<> <>) { <> /* * [*/] */ if (rde_param_i_symbol_start (<>, 16)) return ; rde_param_i_next_class (<>, "*/", 14); rde_param_i_symbol_done_leaf (<>, 16, 15); return; } /* * value Symbol 'Number' */ <> void <>sym_Number (<> <>) { <> /* * x * ? * (Sign) * + * (Digit) */ if (rde_param_i_symbol_start_d (<>, 18)) return ; <> <>sequence_44 (<>); rde_param_i_symbol_done_d_reduce (<>, 18, 17); return; } <> void <>sequence_44 (<> <>) { <> /* * x * ? * (Sign) * + * (Digit) */ rde_param_i_state_push_value (<>); <> <>optional_39 (<>); if (rde_param_i_seq_value2value(<>)) return; <> <>poskleene_42 (<>); rde_param_i_state_merge_value (<>); return; } <> void <>optional_39 (<> <>) { <> /* * ? * (Sign) */ rde_param_i_state_push_2 (<>); <> <>sym_Sign (<>); rde_param_i_state_merge_ok (<>); return; } <> void <>poskleene_42 (<> <>) { <> /* * + * (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 (<>, 20)) return ; rde_param_i_next_class (<>, "-+", 0); rde_param_i_symbol_done_leaf (<>, 20, 19); return; } /* * value Symbol 'Sinus' */ <> void <>sym_Sinus (<> <>) { <> /* * x * "sin\(" * (Expression) * '\)' */ if (rde_param_i_symbol_start_d (<>, 23)) return ; <> <>sequence_52 (<>); rde_param_i_symbol_done_d_reduce (<>, 23, 22); return; } <> void <>sequence_52 (<> <>) { <> /* * x * "sin\(" * (Expression) * '\)' */ rde_param_i_state_push_void (<>); rde_param_i_next_str (<>, "sin\50", 21); 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; } /* * value Symbol 'Term' */ <> void <>sym_Term (<> <>) { <> /* * (Number) */ if (rde_param_i_symbol_start_d (<>, 25)) return ; <> <>sym_Number (<>); rde_param_i_symbol_done_d_reduce (<>, 25, 24); return; } /* */