/* translation of file "../pat.k" */ /* generated by: * @(#)$Author: Kimwitu version: V4_6 (c) 1990-1996 University of Twente $ */ #define KC_FUNCTIONS_pat #define KIMW_FUNCTIONS_pat /* for backwards compatibility */ /* define our own macro if we have a 'standard' (ansi) C(++) compiler */ #ifndef KC_NO_STDC # if defined(__STDC__) || defined(__cplusplus) || defined(_WIN32) # define KC_STDC # endif #endif #include #ifdef KC_STDC # include #endif #include "k.h" /* included stuff */ #line 2 "../pat.k" /* * The Termprocessor Kimwitu * * Copyright (c) 1991 University of Twente, Dept TIOS. * All rights reserved. * */ #line 29 "pat.c" #line 14 "../pat.k" #if ! (defined(lint) || defined(SABER) || defined(CODECENTER)) static char pat_kAccesSid[] = "@(#)$Id: pat.k,v 1.18 1998/03/18 16:53:16 belinfan Rel $"; #endif #line 35 "pat.c" #line 26 "../pat.k" #include "util.h" #include "gutil.h" /* for f_operatorofpatternrepresentation() */ #line 40 "pat.c" #line 314 "../pat.k" bindingidmarks Thebindingidmarks = 0; #line 44 "pat.c" /* end included stuff */ #include "pat.h" static patternrepresentation t_syn_patternchain KC__P((patternchain a_patternchain, path a_path, int branch)); static patternrepresentation syn_outmostpattern KC__P((outmostpattern a_outmostpattern, path a_path)); static patternrepresentation syn_pattern KC__P((pattern a_pattern, path a_path)); static patternrepresentation syn_patterns KC__P((patterns a_patterns, path a_path)); static patternrepresentation t_syn_patterns KC__P((patterns a_patterns, path a_path, int branch)); static patternrepresentation add_predicates KC__P((patternrepresentation a_patternrep)); static patternrepresentation add_predicate KC__P((elem_patternrepresentation a_patternrep_elem, patternrepresentation a_patternrep)); static patternrepresentation t_make_predicates KC__P((ID a_id, paths a_paths, patternrepresentation a_subpattern, patternrepresentation a_patternrep, boolean left_linear)); static patternrepresentation make_predicates KC__P((elem_patternrepresentation a_patternrep_elem, patternrepresentation a_patternrep)); static boolean test_matching_subpatterns KC__P((patternrepresentation newpatrep, patternrepresentation oldpatrep)); static patternrepresentation build_predicates KC__P((patternrepresentation a_patternrep)); static patternrepresentation combine_paths_subpatterns KC__P((ID a_id, paths a_paths, patternrepresentation a_subpattern)); static patternrepresentation combine_path_subpatterns KC__P((ID a_id, path a_path, patternrepresentation a_subpattern)); static patternrepresentation f_get_predicates KC__P((patternrepresentation a_patternrep)); static patternrepresentation f_get_bindings KC__P((patternrepresentation a_patternrep)); static patternrepresentation f_do_get_bindings KC__P((patternrepresentation a_patternrep)); static rewriterulesinfo insertin_rewriterulesinfo KC__P((rewriteruleinfo a_rwruleinfo, rewriterulesinfo a_rwrulesinfo)); static boolean lt_rewriteruleinfo KC__P((rewriteruleinfo a_rwruleinfo1, rewriteruleinfo a_rwruleinfo2)); static unparsedeclsinfo insertin_unparsedeclsinfo KC__P((unparsedeclinfo a_unparsedeclinfo, unparsedeclsinfo a_unparsedeclsinfo)); static boolean lt_unparsedeclinfo KC__P((unparsedeclinfo a_unparsedeclinfo1, unparsedeclinfo a_unparsedeclinfo2)); static boolean lt_patternrepresentation KC__P((patternrepresentation a_patternrep1, patternrepresentation a_patternrep2)); static tribool equal_elem_patternrepresentation KC__P((elem_patternrepresentation a_patternrep_elem1, elem_patternrepresentation a_patternrep_elem2)); static tribool equal_path KC__P((path a_path1, path a_path2)); static tribool do_equal_path KC__P((path a_path1, path a_path2)); static tribool equal_paths KC__P((paths a_paths1, paths a_paths2)); patternrepresentations syn_patternchains #ifdef KC_USE_PROTOTYPES (patternchains a_patternchains) #else (a_patternchains) patternchains a_patternchains; #endif #line 64 "../pat.k" { { #line 65 "../pat.k" patternchains kc_selvar_0_1 = a_patternchains ; #line 65 "../pat.k" /*SUPPRESS 622*/ assert_patternchains(kc_selvar_0_1, "with_expression (1)"); #line 90 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conspatternchains)) { #line 69 "../pat.k" patternchain a_patternchain = kc_selvar_0_1->u.Conspatternchains.patternchain_1; #line 69 "../pat.k" patternchains r_patternchains = kc_selvar_0_1->u.Conspatternchains.patternchains_1; #line 69 "../pat.k" return Conspatternrepresentations( syn_patternchain( a_patternchain, Nilpath() ), syn_patternchains( r_patternchains ) ); #line 103 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilpatternchains)) { #line 66 "../pat.k" return Nilpatternrepresentations(); #line 110 "pat.c" } else { kc_no_default_in_with( "syn_patternchains", __LINE__, __FILE__ ); return (patternrepresentations)0; } } #line 75 "../pat.k" #line 75 "../pat.k" } #line 119 "pat.c" patternrepresentation syn_patternchain #ifdef KC_USE_PROTOTYPES (patternchain a_patternchain, path a_path) #else (a_patternchain, a_path) patternchain a_patternchain; path a_path; #endif #line 77 "../pat.k" { { #line 78 "../pat.k" patternchain kc_selvar_0_1 = a_patternchain ; #line 78 "../pat.k" /*SUPPRESS 622*/ assert_patternchain(kc_selvar_0_1, "with_expression (1)"); #line 139 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conspatternchain)) { #line 82 "../pat.k" return t_syn_patternchain( a_patternchain, a_path, length_patternchain( a_patternchain )); #line 145 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilpatternchain)) { #line 79 "../pat.k" return Nilpatternrepresentation(); #line 152 "pat.c" } else { kc_no_default_in_with( "syn_patternchain", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 85 "../pat.k" #line 85 "../pat.k" } #line 161 "pat.c" static patternrepresentation t_syn_patternchain #ifdef KC_USE_PROTOTYPES (patternchain a_patternchain, path a_path, int branch) #else (a_patternchain, a_path, branch) patternchain a_patternchain; path a_path; int branch; #endif #line 87 "../pat.k" { { #line 88 "../pat.k" patternchain kc_selvar_0_1 = a_patternchain ; #line 88 "../pat.k" /*SUPPRESS 622*/ assert_patternchain(kc_selvar_0_1, "with_expression (1)"); #line 182 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conspatternchain)) { #line 92 "../pat.k" patternchainitem a_patternchainitem = kc_selvar_0_1->u.Conspatternchain.patternchainitem_1; #line 92 "../pat.k" patternchain r_patternchain = kc_selvar_0_1->u.Conspatternchain.patternchain_1; #line 92 "../pat.k" return concat_patternrepresentation( t_syn_patternchain( r_patternchain, a_path , branch-1 ), syn_patternchainitem( a_patternchainitem, Conspath( branch, a_path ) ) ); #line 192 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilpatternchain)) { #line 89 "../pat.k" return Nilpatternrepresentation(); #line 199 "pat.c" } else { kc_no_default_in_with( "t_syn_patternchain", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 95 "../pat.k" #line 95 "../pat.k" } #line 208 "pat.c" patternrepresentation syn_patternchainitem #ifdef KC_USE_PROTOTYPES (patternchainitem a_patternchainitem, path a_path) #else (a_patternchainitem, a_path) patternchainitem a_patternchainitem; path a_path; #endif #line 99 "../pat.k" { { #line 100 "../pat.k" patternchainitem kc_selvar_0_1 = a_patternchainitem ; #line 100 "../pat.k" /*SUPPRESS 622*/ assert_patternchainitem(kc_selvar_0_1, "with_expression (1)"); #line 228 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_PatternchainitemDollarid)) { #line 109 "../pat.k" ID id = kc_selvar_0_1->u.PatternchainitemDollarid.ID_1; #line 109 "../pat.k" elem_patternrepresentation tmp = PRBinding( a_path, id ); tmp->type = a_patternchainitem->type; return Conspatternrepresentation( tmp, Nilpatternrepresentation() ); #line 241 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_PatternchainitemGroup)) { #line 104 "../pat.k" patternchains mp = kc_selvar_0_1->u.PatternchainitemGroup.patternchains_1; #line 104 "../pat.k" v_report( NonFatal( FileLine( a_patternchainitem->file, a_patternchainitem->line ), Problem1S( "Internal Error: PatternchainitemGroup was not handled correctly" ))); return Nilpatternrepresentation(); #line 252 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_PatternchainitemOutmost)) { #line 101 "../pat.k" outmostpattern a_outmostpattern = kc_selvar_0_1->u.PatternchainitemOutmost.outmostpattern_1; #line 101 "../pat.k" return syn_outmostpattern( a_outmostpattern, a_path ); #line 261 "pat.c" } else { kc_no_default_in_with( "syn_patternchainitem", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 117 "../pat.k" #line 117 "../pat.k" } #line 270 "pat.c" patternrepresentations syn_outmostpatterns #ifdef KC_USE_PROTOTYPES (outmostpatterns a_outmostpatterns) #else (a_outmostpatterns) outmostpatterns a_outmostpatterns; #endif #line 125 "../pat.k" { { #line 126 "../pat.k" outmostpatterns kc_selvar_0_1 = a_outmostpatterns ; #line 126 "../pat.k" /*SUPPRESS 622*/ assert_outmostpatterns(kc_selvar_0_1, "with_expression (1)"); #line 289 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Consoutmostpatterns)) { #line 130 "../pat.k" outmostpattern a_outmostpattern = kc_selvar_0_1->u.Consoutmostpatterns.outmostpattern_1; #line 130 "../pat.k" outmostpatterns r_outmostpatterns = kc_selvar_0_1->u.Consoutmostpatterns.outmostpatterns_1; #line 130 "../pat.k" return Conspatternrepresentations( syn_outmostpattern( a_outmostpattern, Nilpath() ), syn_outmostpatterns( r_outmostpatterns ) ); #line 302 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Niloutmostpatterns)) { #line 127 "../pat.k" return Nilpatternrepresentations(); #line 309 "pat.c" } else { kc_no_default_in_with( "syn_outmostpatterns", __LINE__, __FILE__ ); return (patternrepresentations)0; } } #line 136 "../pat.k" #line 136 "../pat.k" } #line 318 "pat.c" static patternrepresentation syn_outmostpattern #ifdef KC_USE_PROTOTYPES (outmostpattern a_outmostpattern, path a_path) #else (a_outmostpattern, a_path) outmostpattern a_outmostpattern; path a_path; #endif #line 139 "../pat.k" { { #line 140 "../pat.k" outmostpattern kc_selvar_0_1 = a_outmostpattern ; #line 140 "../pat.k" /*SUPPRESS 622*/ assert_outmostpattern(kc_selvar_0_1, "with_expression (1)"); #line 338 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_OPWildcard)) { #line 199 "../pat.k" elem_patternrepresentation tmp1 = PRWildcard( a_path ); tmp1->type = a_outmostpattern->type; return Conspatternrepresentation( tmp1, Nilpatternrepresentation() ); #line 349 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_OPDefault)) { #line 191 "../pat.k" elem_patternrepresentation tmp1 = PRDefault(); tmp1->type = a_outmostpattern->type; return Conspatternrepresentation( tmp1, Nilpatternrepresentation() ); #line 361 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_OPNonLeafVariable)) { #line 180 "../pat.k" ID id = kc_selvar_0_1->u.OPNonLeafVariable.ID_1; #line 180 "../pat.k" outmostpattern r_pattern = kc_selvar_0_1->u.OPNonLeafVariable.outmostpattern_1; #line 180 "../pat.k" elem_patternrepresentation tmp1 = PRNonLeafBinding( a_path, id, syn_outmostpattern( r_pattern, Nilpath()) ); a_path->id = f_phylumofpatternID(id); tmp1->type = a_outmostpattern->type; return Conspatternrepresentation( tmp1, syn_outmostpattern( r_pattern, a_path ) ); #line 380 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_OPOperator)) { #line 171 "../pat.k" ID id = kc_selvar_0_1->u.OPOperator.ID_1; #line 171 "../pat.k" patterns r_patterns = kc_selvar_0_1->u.OPOperator.patterns_1; #line 171 "../pat.k" elem_patternrepresentation tmp1 = PROperPredicate( Conspath( 0, a_path ), id ); tmp1->type = a_outmostpattern->type; a_path->op = id; return Conspatternrepresentation( tmp1, syn_patterns( r_patterns, a_path ) ); #line 397 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_OPOperatorWildcard)) { #line 141 "../pat.k" ID id = kc_selvar_0_1->u.OPOperatorWildcard.ID_1; #line 141 "../pat.k" { #line 143 "../pat.k" ID kc_selvar_1_1 = id ; #line 143 "../pat.k" /*SUPPRESS 622*/ assert_ID(kc_selvar_1_1, "with_expression (1)"); #line 414 "pat.c" if (( kc_selvar_1_1->prod_sel == sel_Id)) { #line 144 "../pat.k" uniqID uid = kc_selvar_1_1->u.Id.uniqID_1; #line 144 "../pat.k" { #line 145 "../pat.k" IDtype kc_selvar_2_1 = uid->type ; #line 145 "../pat.k" /*SUPPRESS 622*/ assert_IDtype(kc_selvar_2_1, "with_expression (1)"); #line 429 "pat.c" if (( kc_selvar_2_1->prod_sel == sel_ITUnknown)) { #line 147 "../pat.k" elem_patternrepresentation tmp1 = PRBinding( a_path, id ); tmp1->type = a_outmostpattern->type; return Conspatternrepresentation( tmp1, Nilpatternrepresentation() ); #line 446 "pat.c" } else if (( kc_selvar_2_1->prod_sel == sel_ITPatternVariable)) { #line 147 "../pat.k" elem_patternrepresentation tmp1 = PRBinding( a_path, id ); tmp1->type = a_outmostpattern->type; return Conspatternrepresentation( tmp1, Nilpatternrepresentation() ); #line 464 "pat.c" } else { #line 161 "../pat.k" elem_patternrepresentation tmp1 = PROperPredicate( Conspath( 0, a_path ), id ); tmp1->type = a_outmostpattern->type; a_path->op = id; return Conspatternrepresentation( tmp1, Nilpatternrepresentation() ); #line 477 "pat.c" } } #line 170 "../pat.k" #line 482 "pat.c" } else { kc_no_default_in_with( "syn_outmostpattern", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 170 "../pat.k" #line 489 "pat.c" } else { kc_no_default_in_with( "syn_outmostpattern", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 207 "../pat.k" #line 207 "../pat.k" } #line 498 "pat.c" static patternrepresentation syn_pattern #ifdef KC_USE_PROTOTYPES (pattern a_pattern, path a_path) #else (a_pattern, a_path) pattern a_pattern; path a_path; #endif #line 210 "../pat.k" { { #line 211 "../pat.k" pattern kc_selvar_0_1 = a_pattern ; #line 211 "../pat.k" /*SUPPRESS 622*/ assert_pattern(kc_selvar_0_1, "with_expression (1)"); #line 518 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_PIntLiteral)) { #line 242 "../pat.k" INT i = kc_selvar_0_1->u.PIntLiteral.INT_1; #line 242 "../pat.k" return Conspatternrepresentation( PRIntLiteral( a_path, i ), Nilpatternrepresentation() ); #line 529 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_PStringLiteral)) { #line 236 "../pat.k" CexpressionDQ cexprdq = kc_selvar_0_1->u.PStringLiteral.CexpressionDQ_1; #line 236 "../pat.k" return Conspatternrepresentation( PRStringLiteral( a_path, cexprdq ), Nilpatternrepresentation() ); #line 541 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_PWildcard)) { #line 231 "../pat.k" return Nilpatternrepresentation(); #line 550 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_PNonLeafVariable)) { #line 225 "../pat.k" ID id = kc_selvar_0_1->u.PNonLeafVariable.ID_1; #line 225 "../pat.k" pattern r_pattern = kc_selvar_0_1->u.PNonLeafVariable.pattern_1; #line 225 "../pat.k" return Conspatternrepresentation( PRNonLeafBinding( a_path, id, syn_pattern( r_pattern, Nilpath()) ), syn_pattern( r_pattern, a_path ) ); #line 564 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_POperator)) { #line 218 "../pat.k" ID id = kc_selvar_0_1->u.POperator.ID_1; #line 218 "../pat.k" patterns r_patterns = kc_selvar_0_1->u.POperator.patterns_1; #line 218 "../pat.k" a_path->op = id; return Conspatternrepresentation( PROperPredicate( Conspath( 0, a_path ), id ), syn_patterns( r_patterns, a_path ) ); #line 579 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_PVariable)) { #line 212 "../pat.k" ID id = kc_selvar_0_1->u.PVariable.ID_1; #line 212 "../pat.k" return Conspatternrepresentation( PRBinding( a_path, id ), Nilpatternrepresentation() ); #line 591 "pat.c" } else { kc_no_default_in_with( "syn_pattern", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 248 "../pat.k" #line 248 "../pat.k" } #line 600 "pat.c" static patternrepresentation syn_patterns #ifdef KC_USE_PROTOTYPES (patterns a_patterns, path a_path) #else (a_patterns, a_path) patterns a_patterns; path a_path; #endif #line 251 "../pat.k" { { #line 252 "../pat.k" patterns kc_selvar_0_1 = a_patterns ; #line 252 "../pat.k" /*SUPPRESS 622*/ assert_patterns(kc_selvar_0_1, "with_expression (1)"); #line 620 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conspatterns)) { #line 256 "../pat.k" return t_syn_patterns( a_patterns, a_path , length_patterns( a_patterns ) ); #line 626 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilpatterns)) { #line 253 "../pat.k" return Nilpatternrepresentation(); #line 633 "pat.c" } else { kc_no_default_in_with( "syn_patterns", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 259 "../pat.k" #line 259 "../pat.k" } #line 642 "pat.c" static patternrepresentation t_syn_patterns #ifdef KC_USE_PROTOTYPES (patterns a_patterns, path a_path, int branch) #else (a_patterns, a_path, branch) patterns a_patterns; path a_path; int branch; #endif #line 262 "../pat.k" { { #line 263 "../pat.k" patterns kc_selvar_0_1 = a_patterns ; #line 263 "../pat.k" /*SUPPRESS 622*/ assert_patterns(kc_selvar_0_1, "with_expression (1)"); #line 663 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conspatterns)) { #line 267 "../pat.k" pattern a_pattern = kc_selvar_0_1->u.Conspatterns.pattern_1; #line 267 "../pat.k" patterns r_patterns = kc_selvar_0_1->u.Conspatterns.patterns_1; #line 267 "../pat.k" return concat_patternrepresentation( t_syn_patterns( r_patterns, a_path , branch-1 ), syn_pattern( a_pattern, Conspath( branch, a_path ) ) ); #line 673 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilpatterns)) { #line 264 "../pat.k" return Nilpatternrepresentation(); #line 680 "pat.c" } else { kc_no_default_in_with( "t_syn_patterns", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 270 "../pat.k" #line 270 "../pat.k" } #line 689 "pat.c" boolean f_bindingidmarked #ifdef KC_USE_PROTOTYPES (ID id) #else (id) ID id; #endif #line 337 "../pat.k" { { #line 338 "../pat.k" ID kc_selvar_0_1 = id ; #line 338 "../pat.k" /*SUPPRESS 622*/ assert_ID(kc_selvar_0_1, "with_expression (1)"); #line 708 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Id)) { #line 339 "../pat.k" uniqID uid = kc_selvar_0_1->u.Id.uniqID_1; #line 339 "../pat.k" return BindingIdMark( uid )->marked; #line 716 "pat.c" } else { kc_no_default_in_with( "f_bindingidmarked", __LINE__, __FILE__ ); return (boolean)0; } } #line 341 "../pat.k" #line 341 "../pat.k" } #line 725 "pat.c" void v_markbindingid #ifdef KC_USE_PROTOTYPES (ID id) #else (id) ID id; #endif #line 344 "../pat.k" { { #line 345 "../pat.k" ID kc_selvar_0_1 = id ; #line 345 "../pat.k" /*SUPPRESS 622*/ assert_ID(kc_selvar_0_1, "with_expression (1)"); #line 744 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Id)) { #line 346 "../pat.k" uniqID uid = kc_selvar_0_1->u.Id.uniqID_1; #line 346 "../pat.k" BindingIdMark( uid )->marked = True; #line 752 "pat.c" } else kc_no_default_in_with( "v_markbindingid", __LINE__, __FILE__ ); } #line 348 "../pat.k" #line 348 "../pat.k" } #line 760 "pat.c" void v_resetbindingidmarks #ifdef KC_USE_PROTOTYPES (void) #else () #endif #line 353 "../pat.k" { if (Thebindingidmarks) { { #line 355 "../pat.k" bindingidmarks kc_fe_selvar_1 = Thebindingidmarks ; #line 355 "../pat.k" /*SUPPRESS 622*/ assert_bindingidmarks(kc_fe_selvar_1, "foreach_list_expression"); #line 778 "pat.c" while( kc_fe_selvar_1->prod_sel == sel_Consbindingidmarks ) { bindingidmark kc_selvar_0_1 = kc_fe_selvar_1->u.Consbindingidmarks.bindingidmark_1; { #line 355 "../pat.k" { #line 355 "../pat.k" /*SUPPRESS 622*/ assert_bindingidmark(kc_selvar_0_1, "with_expression (1)"); #line 790 "pat.c" { #line 355 "../pat.k" bindingidmark m = kc_selvar_0_1; #line 355 "../pat.k" m->marked = False; #line 798 "pat.c" } } #line 802 "pat.c" } kc_fe_selvar_1 = kc_fe_selvar_1->u.Consbindingidmarks.bindingidmarks_1; #line 355 "../pat.k" /*SUPPRESS 622*/ assert_bindingidmarks(kc_fe_selvar_1, "sublist_of_foreach_list_expression"); #line 809 "pat.c" } } #line 357 "../pat.k" } #line 358 "../pat.k" } #line 817 "pat.c" patternrepresentations add_predicates_to_patternrepresentations #ifdef KC_USE_PROTOTYPES (patternrepresentations a_patternreps) #else (a_patternreps) patternrepresentations a_patternreps; #endif #line 372 "../pat.k" { { #line 373 "../pat.k" patternrepresentations kc_selvar_0_1 = a_patternreps ; #line 373 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentations(kc_selvar_0_1, "with_expression (1)"); #line 836 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conspatternrepresentations)) { #line 377 "../pat.k" patternrepresentation a_patternrep = kc_selvar_0_1->u.Conspatternrepresentations.patternrepresentation_1; #line 377 "../pat.k" patternrepresentations r_patternreps = kc_selvar_0_1->u.Conspatternrepresentations.patternrepresentations_1; #line 377 "../pat.k" patternrepresentation tmp; v_resetbindingidmarks(); tmp = add_predicates( a_patternrep ); return Conspatternrepresentations( concat_patternrepresentation( a_patternrep, tmp ), add_predicates_to_patternrepresentations( r_patternreps ) ); #line 852 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilpatternrepresentations)) { #line 374 "../pat.k" return Nilpatternrepresentations(); #line 859 "pat.c" } else { kc_no_default_in_with( "add_predicates_to_patternrepresentations", __LINE__, __FILE__ ); return (patternrepresentations)0; } } #line 386 "../pat.k" #line 386 "../pat.k" } #line 868 "pat.c" static patternrepresentation add_predicates #ifdef KC_USE_PROTOTYPES (patternrepresentation a_patternrep) #else (a_patternrep) patternrepresentation a_patternrep; #endif #line 389 "../pat.k" { { #line 390 "../pat.k" patternrepresentation kc_selvar_0_1 = a_patternrep ; #line 390 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentation(kc_selvar_0_1, "with_expression (1)"); #line 887 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conspatternrepresentation)) { #line 394 "../pat.k" elem_patternrepresentation a_pattern_rep_elem = kc_selvar_0_1->u.Conspatternrepresentation.elem_patternrepresentation_1; #line 394 "../pat.k" patternrepresentation r_patternrep = kc_selvar_0_1->u.Conspatternrepresentation.patternrepresentation_1; #line 394 "../pat.k" patternrepresentation tmp_for_elem, tmp_for_rest; tmp_for_elem = add_predicate( a_pattern_rep_elem, r_patternrep ); tmp_for_rest = add_predicates( r_patternrep ); return concat_patternrepresentation( tmp_for_elem, tmp_for_rest ); #line 908 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilpatternrepresentation)) { #line 391 "../pat.k" return Nilpatternrepresentation(); #line 915 "pat.c" } else { kc_no_default_in_with( "add_predicates", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 408 "../pat.k" #line 408 "../pat.k" } #line 924 "pat.c" static patternrepresentation add_predicate #ifdef KC_USE_PROTOTYPES (elem_patternrepresentation a_patternrep_elem, patternrepresentation a_patternrep) #else (a_patternrep_elem, a_patternrep) elem_patternrepresentation a_patternrep_elem; patternrepresentation a_patternrep; #endif #line 411 "../pat.k" { { #line 412 "../pat.k" elem_patternrepresentation kc_selvar_0_1 = a_patternrep_elem ; #line 412 "../pat.k" /*SUPPRESS 622*/ assert_elem_patternrepresentation(kc_selvar_0_1, "with_expression (1)"); #line 944 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_PRIntLiteral)) { #line 439 "../pat.k" return Nilpatternrepresentation(); #line 950 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_PRStringLiteral)) { #line 436 "../pat.k" return Nilpatternrepresentation(); #line 957 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_PRWildcard)) { #line 433 "../pat.k" return Nilpatternrepresentation(); #line 964 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_PRDefault)) { #line 430 "../pat.k" return Nilpatternrepresentation(); #line 971 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_PRNonLeafBinding)) { #line 423 "../pat.k" ID id = kc_selvar_0_1->u.PRNonLeafBinding.ID_1; #line 423 "../pat.k" if (! f_bindingidmarked( id )) { v_markbindingid( id ); return make_predicates( a_patternrep_elem, a_patternrep ); } else { return Nilpatternrepresentation(); } #line 984 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_PROperPredicate)) { #line 420 "../pat.k" return Nilpatternrepresentation(); #line 991 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_PRBinding)) { #line 413 "../pat.k" ID id = kc_selvar_0_1->u.PRBinding.ID_1; #line 413 "../pat.k" if (! f_bindingidmarked( id )) { v_markbindingid( id ); return make_predicates( a_patternrep_elem, a_patternrep ); } else { return Nilpatternrepresentation(); } #line 1004 "pat.c" } else { kc_no_default_in_with( "add_predicate", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 442 "../pat.k" #line 442 "../pat.k" } #line 1013 "pat.c" static patternrepresentation t_make_predicates #ifdef KC_USE_PROTOTYPES (ID a_id, paths a_paths, patternrepresentation a_subpattern, patternrepresentation a_patternrep, boolean left_linear) #else (a_id, a_paths, a_subpattern, a_patternrep, left_linear) ID a_id; paths a_paths; patternrepresentation a_subpattern; patternrepresentation a_patternrep; boolean left_linear; #endif #line 451 "../pat.k" { { #line 452 "../pat.k" patternrepresentation kc_selvar_0_1 = a_patternrep ; #line 452 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentation(kc_selvar_0_1, "with_expression (1)"); #line 1036 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conspatternrepresentation)) { #line 460 "../pat.k" elem_patternrepresentation aps_patternrep_elem = kc_selvar_0_1->u.Conspatternrepresentation.elem_patternrepresentation_1; #line 460 "../pat.k" patternrepresentation r_apatternrep = kc_selvar_0_1->u.Conspatternrepresentation.patternrepresentation_1; #line 460 "../pat.k" { #line 461 "../pat.k" elem_patternrepresentation kc_selvar_1_1 = aps_patternrep_elem ; #line 461 "../pat.k" /*SUPPRESS 622*/ assert_elem_patternrepresentation(kc_selvar_1_1, "with_expression (1)"); #line 1053 "pat.c" if (( kc_selvar_1_1->prod_sel == sel_PRIntLiteral)) { #line 496 "../pat.k" return t_make_predicates( a_id, a_paths, a_subpattern, r_apatternrep, left_linear ); #line 1059 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRStringLiteral)) { #line 493 "../pat.k" return t_make_predicates( a_id, a_paths, a_subpattern, r_apatternrep, left_linear ); #line 1066 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRWildcard)) { #line 490 "../pat.k" return t_make_predicates( a_id, a_paths, a_subpattern, r_apatternrep, left_linear ); #line 1073 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRDefault)) { #line 487 "../pat.k" return t_make_predicates( a_id, a_paths, a_subpattern, r_apatternrep, left_linear ); #line 1080 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PROperPredicate)) { #line 484 "../pat.k" return t_make_predicates( a_id, a_paths, a_subpattern, r_apatternrep, left_linear ); #line 1087 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRVarPredicate)) { #line 481 "../pat.k" return t_make_predicates( a_id, a_paths, a_subpattern, r_apatternrep, left_linear ); #line 1094 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRNonLeafBinding)) { #line 469 "../pat.k" path aps_path = kc_selvar_1_1->u.PRNonLeafBinding.path_1; #line 469 "../pat.k" ID aps_id = kc_selvar_1_1->u.PRNonLeafBinding.ID_1; #line 469 "../pat.k" patternrepresentation aps_subpattern = kc_selvar_1_1->u.PRNonLeafBinding.patternrepresentation_1; #line 469 "../pat.k" if ( eq_ID( a_id, aps_id )) { if ( test_matching_subpatterns( aps_subpattern, a_subpattern ) ) { return t_make_predicates( a_id, Conspaths( aps_path, a_paths ), concat_patternrepresentation( aps_subpattern, a_subpattern ), r_apatternrep, False ); } else { return t_make_predicates( a_id, a_paths, a_subpattern, r_apatternrep, False ); } } else { return t_make_predicates( a_id, a_paths, a_subpattern, r_apatternrep, left_linear ); } #line 1115 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRBinding)) { #line 462 "../pat.k" path aps_path = kc_selvar_1_1->u.PRBinding.path_1; #line 462 "../pat.k" ID aps_id = kc_selvar_1_1->u.PRBinding.ID_1; #line 462 "../pat.k" if ( eq_ID( a_id, aps_id )) { return t_make_predicates( a_id, Conspaths( aps_path, a_paths ), a_subpattern, r_apatternrep, False ); } else { return t_make_predicates( a_id, a_paths, a_subpattern, r_apatternrep, left_linear ); } #line 1130 "pat.c" } else { kc_no_default_in_with( "t_make_predicates", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 500 "../pat.k" #line 1137 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilpatternrepresentation)) { #line 453 "../pat.k" if (left_linear) { return Nilpatternrepresentation(); } else { return Conspatternrepresentation( PRVarPredicate( a_paths, a_id, a_subpattern ), Nilpatternrepresentation() ); } #line 1148 "pat.c" } else { kc_no_default_in_with( "t_make_predicates", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 501 "../pat.k" #line 501 "../pat.k" } #line 1157 "pat.c" static patternrepresentation make_predicates #ifdef KC_USE_PROTOTYPES (elem_patternrepresentation a_patternrep_elem, patternrepresentation a_patternrep) #else (a_patternrep_elem, a_patternrep) elem_patternrepresentation a_patternrep_elem; patternrepresentation a_patternrep; #endif #line 504 "../pat.k" { { #line 505 "../pat.k" elem_patternrepresentation kc_selvar_0_1 = a_patternrep_elem ; #line 505 "../pat.k" /*SUPPRESS 622*/ assert_elem_patternrepresentation(kc_selvar_0_1, "with_expression (1)"); #line 1177 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_PRNonLeafBinding)) { #line 509 "../pat.k" path a_path = kc_selvar_0_1->u.PRNonLeafBinding.path_1; #line 509 "../pat.k" ID a_id = kc_selvar_0_1->u.PRNonLeafBinding.ID_1; #line 509 "../pat.k" patternrepresentation a_subpattern = kc_selvar_0_1->u.PRNonLeafBinding.patternrepresentation_1; #line 509 "../pat.k" return t_make_predicates( a_id, Conspaths( a_path, Nilpaths()), a_subpattern, a_patternrep, True ); #line 1189 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_PRBinding)) { #line 506 "../pat.k" path a_path = kc_selvar_0_1->u.PRBinding.path_1; #line 506 "../pat.k" ID a_id = kc_selvar_0_1->u.PRBinding.ID_1; #line 506 "../pat.k" return t_make_predicates( a_id, Conspaths( a_path, Nilpaths()), Nilpatternrepresentation(), a_patternrep, True ); #line 1200 "pat.c" } else { kc_no_default_in_with( "make_predicates", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 513 "../pat.k" #line 513 "../pat.k" } #line 1209 "pat.c" static boolean test_matching_subpatterns #ifdef KC_USE_PROTOTYPES (patternrepresentation newpatrep, patternrepresentation oldpatrep) #else (newpatrep, oldpatrep) patternrepresentation newpatrep; patternrepresentation oldpatrep; #endif #line 523 "../pat.k" { KC_LINTUSE(newpatrep); KC_LINTUSE(oldpatrep); return True; #line 525 "../pat.k" } #line 1224 "pat.c" static patternrepresentation build_predicates #ifdef KC_USE_PROTOTYPES (patternrepresentation a_patternrep) #else (a_patternrep) patternrepresentation a_patternrep; #endif #line 536 "../pat.k" { { #line 537 "../pat.k" patternrepresentation kc_selvar_0_1 = a_patternrep ; #line 537 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentation(kc_selvar_0_1, "with_expression (1)"); #line 1243 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conspatternrepresentation)) { #line 541 "../pat.k" elem_patternrepresentation aps_patternrep_elem = kc_selvar_0_1->u.Conspatternrepresentation.elem_patternrepresentation_1; #line 541 "../pat.k" patternrepresentation r_apatternrep = kc_selvar_0_1->u.Conspatternrepresentation.patternrepresentation_1; #line 541 "../pat.k" { #line 542 "../pat.k" elem_patternrepresentation kc_selvar_1_1 = aps_patternrep_elem ; #line 542 "../pat.k" /*SUPPRESS 622*/ assert_elem_patternrepresentation(kc_selvar_1_1, "with_expression (1)"); #line 1260 "pat.c" if (( kc_selvar_1_1->prod_sel == sel_PRIntLiteral)) { #line 570 "../pat.k" return build_predicates( r_apatternrep ); #line 1266 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRStringLiteral)) { #line 567 "../pat.k" return build_predicates( r_apatternrep ); #line 1273 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRWildcard)) { #line 564 "../pat.k" return build_predicates( r_apatternrep ); #line 1280 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRDefault)) { #line 561 "../pat.k" return build_predicates( r_apatternrep ); #line 1287 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PROperPredicate)) { #line 558 "../pat.k" return build_predicates( r_apatternrep ); #line 1294 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRVarPredicate)) { #line 549 "../pat.k" paths a_paths = kc_selvar_1_1->u.PRVarPredicate.paths_1; #line 549 "../pat.k" ID a_id = kc_selvar_1_1->u.PRVarPredicate.ID_1; #line 549 "../pat.k" patternrepresentation a_subpattern = kc_selvar_1_1->u.PRVarPredicate.patternrepresentation_1; #line 549 "../pat.k" patternrepresentation tmp_for_elem, tmp_for_rest; tmp_for_elem = combine_paths_subpatterns(a_id, a_paths, a_subpattern); tmp_for_rest = build_predicates( r_apatternrep ); return concat_patternrepresentation( tmp_for_elem, tmp_for_rest ); #line 1313 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRNonLeafBinding)) { #line 546 "../pat.k" return build_predicates( r_apatternrep ); #line 1320 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRBinding)) { #line 543 "../pat.k" return build_predicates( r_apatternrep ); #line 1327 "pat.c" } else { kc_no_default_in_with( "build_predicates", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 574 "../pat.k" #line 1334 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilpatternrepresentation)) { #line 538 "../pat.k" return Nilpatternrepresentation(); #line 1341 "pat.c" } else { kc_no_default_in_with( "build_predicates", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 575 "../pat.k" #line 575 "../pat.k" } #line 1350 "pat.c" static patternrepresentation combine_paths_subpatterns #ifdef KC_USE_PROTOTYPES (ID a_id, paths a_paths, patternrepresentation a_subpattern) #else (a_id, a_paths, a_subpattern) ID a_id; paths a_paths; patternrepresentation a_subpattern; #endif #line 578 "../pat.k" { { #line 579 "../pat.k" paths kc_selvar_0_1 = a_paths ; #line 579 "../pat.k" /*SUPPRESS 622*/ assert_paths(kc_selvar_0_1, "with_expression (1)"); #line 1371 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conspaths)) { #line 583 "../pat.k" path a_path = kc_selvar_0_1->u.Conspaths.path_1; #line 583 "../pat.k" paths r_paths = kc_selvar_0_1->u.Conspaths.paths_1; #line 583 "../pat.k" return concat_patternrepresentation( combine_path_subpatterns( a_id, a_path, a_subpattern ), combine_paths_subpatterns( a_id, r_paths, a_subpattern ) ); #line 1384 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilpaths)) { #line 580 "../pat.k" return Nilpatternrepresentation(); #line 1391 "pat.c" } else { kc_no_default_in_with( "combine_paths_subpatterns", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 589 "../pat.k" #line 589 "../pat.k" } #line 1400 "pat.c" static patternrepresentation combine_path_subpatterns #ifdef KC_USE_PROTOTYPES (ID a_id, path a_path, patternrepresentation a_subpattern) #else (a_id, a_path, a_subpattern) ID a_id; path a_path; patternrepresentation a_subpattern; #endif #line 592 "../pat.k" { { #line 593 "../pat.k" patternrepresentation kc_selvar_0_1 = a_subpattern ; #line 593 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentation(kc_selvar_0_1, "with_expression (1)"); #line 1421 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conspatternrepresentation)) { #line 597 "../pat.k" elem_patternrepresentation a_subpattern_elem = kc_selvar_0_1->u.Conspatternrepresentation.elem_patternrepresentation_1; #line 597 "../pat.k" patternrepresentation r_subpattern = kc_selvar_0_1->u.Conspatternrepresentation.patternrepresentation_1; #line 597 "../pat.k" { #line 598 "../pat.k" elem_patternrepresentation kc_selvar_1_1 = a_subpattern_elem ; #line 598 "../pat.k" /*SUPPRESS 622*/ assert_elem_patternrepresentation(kc_selvar_1_1, "with_expression (1)"); #line 1438 "pat.c" if (( kc_selvar_1_1->prod_sel == sel_PRIntLiteral)) { #line 650 "../pat.k" path aps_path = kc_selvar_1_1->u.PRIntLiteral.path_1; #line 650 "../pat.k" INT i = kc_selvar_1_1->u.PRIntLiteral.INT_1; #line 650 "../pat.k" elem_patternrepresentation tmp = PRIntLiteral( concat_path( aps_path, a_path ), i ); tmp->type = a_subpattern_elem->type; return Conspatternrepresentation( tmp, combine_path_subpatterns( a_id, a_path, r_subpattern ) ); #line 1453 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRStringLiteral)) { #line 642 "../pat.k" path aps_path = kc_selvar_1_1->u.PRStringLiteral.path_1; #line 642 "../pat.k" CexpressionDQ cexpr = kc_selvar_1_1->u.PRStringLiteral.CexpressionDQ_1; #line 642 "../pat.k" elem_patternrepresentation tmp = PRStringLiteral( concat_path( aps_path, a_path ), cexpr ); tmp->type = a_subpattern_elem->type; return Conspatternrepresentation( tmp, combine_path_subpatterns( a_id, a_path, r_subpattern ) ); #line 1469 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRWildcard)) { #line 634 "../pat.k" path aps_path = kc_selvar_1_1->u.PRWildcard.path_1; #line 634 "../pat.k" elem_patternrepresentation tmp = PRWildcard( concat_path( aps_path, a_path ) ); tmp->type = a_subpattern_elem->type; return Conspatternrepresentation( tmp, combine_path_subpatterns( a_id, a_path, r_subpattern ) ); #line 1483 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRDefault)) { #line 626 "../pat.k" elem_patternrepresentation tmp = PRDefault(); tmp->type = a_subpattern_elem->type; return Conspatternrepresentation( tmp, combine_path_subpatterns( a_id, a_path, r_subpattern ) ); #line 1495 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PROperPredicate)) { #line 618 "../pat.k" path aps_path = kc_selvar_1_1->u.PROperPredicate.path_1; #line 618 "../pat.k" ID aps_id = kc_selvar_1_1->u.PROperPredicate.ID_1; #line 618 "../pat.k" elem_patternrepresentation tmp = PROperPredicate( concat_path( aps_path, a_path ), aps_id ); tmp->type = a_subpattern_elem->type; return Conspatternrepresentation( tmp, combine_path_subpatterns( a_id, a_path, r_subpattern ) ); #line 1511 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRVarPredicate)) { #line 615 "../pat.k" return combine_path_subpatterns( a_id, a_path, r_subpattern ); #line 1518 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRNonLeafBinding)) { #line 607 "../pat.k" path aps_path = kc_selvar_1_1->u.PRNonLeafBinding.path_1; #line 607 "../pat.k" ID aps_id = kc_selvar_1_1->u.PRNonLeafBinding.ID_1; #line 607 "../pat.k" patternrepresentation aps_subpattern = kc_selvar_1_1->u.PRNonLeafBinding.patternrepresentation_1; #line 607 "../pat.k" elem_patternrepresentation tmp = PRNonLeafBinding( concat_path( aps_path, a_path ), aps_id, aps_subpattern ); tmp->type = a_subpattern_elem->type; return Conspatternrepresentation( tmp, combine_path_subpatterns( a_id, a_path, r_subpattern ) ); #line 1536 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRBinding)) { #line 599 "../pat.k" path aps_path = kc_selvar_1_1->u.PRBinding.path_1; #line 599 "../pat.k" ID aps_id = kc_selvar_1_1->u.PRBinding.ID_1; #line 599 "../pat.k" elem_patternrepresentation tmp = PRBinding( concat_path( aps_path, a_path ), aps_id ); tmp->type = a_subpattern_elem->type; return Conspatternrepresentation( tmp, combine_path_subpatterns( a_id, a_path, r_subpattern ) ); #line 1552 "pat.c" } else { kc_no_default_in_with( "combine_path_subpatterns", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 658 "../pat.k" #line 1559 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilpatternrepresentation)) { #line 594 "../pat.k" return Nilpatternrepresentation(); #line 1566 "pat.c" } else { kc_no_default_in_with( "combine_path_subpatterns", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 659 "../pat.k" #line 659 "../pat.k" } #line 1575 "pat.c" void v_add_rewriterulesinfo_to_operator #ifdef KC_USE_PROTOTYPES (patternrepresentations a_patternreps, rewriteclauses rc) #else (a_patternreps, rc) patternrepresentations a_patternreps; rewriteclauses rc; #endif #line 662 "../pat.k" { { #line 663 "../pat.k" patternrepresentations kc_fe_selvar_1 = a_patternreps ; #line 663 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentations(kc_fe_selvar_1, "foreach_list_expression"); #line 1593 "pat.c" while( kc_fe_selvar_1->prod_sel == sel_Conspatternrepresentations ) { patternrepresentation kc_selvar_0_1 = kc_fe_selvar_1->u.Conspatternrepresentations.patternrepresentation_1; { #line 663 "../pat.k" { #line 663 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentation(kc_selvar_0_1, "with_expression (1)"); #line 1605 "pat.c" { #line 663 "../pat.k" patternrepresentation a_patternrep = kc_selvar_0_1; #line 663 "../pat.k" ID op = f_operatorofpatternrepresentation( a_patternrep ); if (! eq_ID( op, f_emptyId() )) { alternative a = f_alternativeofoperator(op); if (a) { { #line 668 "../pat.k" rewriteclauses kc_fe_selvar_1 = rc ; #line 668 "../pat.k" /*SUPPRESS 622*/ assert_rewriteclauses(kc_fe_selvar_1, "foreach_list_expression"); #line 1622 "pat.c" while( kc_fe_selvar_1->prod_sel == sel_Consrewriteclauses ) { rewriteclause kc_selvar_1_1 = kc_fe_selvar_1->u.Consrewriteclauses.rewriteclause_1; { #line 668 "../pat.k" { #line 668 "../pat.k" /*SUPPRESS 622*/ assert_rewriteclause(kc_selvar_1_1, "with_expression (1)"); #line 1634 "pat.c" { #line 668 "../pat.k" rewriteclause r = kc_selvar_1_1; #line 668 "../pat.k" a->rewriteinfo = insertin_rewriterulesinfo( Rewriteruleinfo( f_get_predicates( a_patternrep ), f_get_bindings( a_patternrep ), r ), a->rewriteinfo ); #line 1643 "pat.c" } } #line 1647 "pat.c" } kc_fe_selvar_1 = kc_fe_selvar_1->u.Consrewriteclauses.rewriteclauses_1; #line 668 "../pat.k" /*SUPPRESS 622*/ assert_rewriteclauses(kc_fe_selvar_1, "sublist_of_foreach_list_expression"); #line 1654 "pat.c" } } #line 671 "../pat.k" } } #line 1659 "pat.c" } } #line 1663 "pat.c" } kc_fe_selvar_1 = kc_fe_selvar_1->u.Conspatternrepresentations.patternrepresentations_1; #line 663 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentations(kc_fe_selvar_1, "sublist_of_foreach_list_expression"); #line 1670 "pat.c" } } #line 671 "../pat.k" #line 671 "../pat.k" } #line 1677 "pat.c" withcasesinfo f_withcasesinfo #ifdef KC_USE_PROTOTYPES (patternrepresentations a_patternreps, Ctext ct) #else (a_patternreps, ct) patternrepresentations a_patternreps; Ctext ct; #endif #line 675 "../pat.k" { withcasesinfo tmp = Nilwithcasesinfo(); { #line 677 "../pat.k" patternrepresentations kc_fe_selvar_1 = a_patternreps ; #line 677 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentations(kc_fe_selvar_1, "foreach_list_expression"); #line 1696 "pat.c" while( kc_fe_selvar_1->prod_sel == sel_Conspatternrepresentations ) { patternrepresentation kc_selvar_0_1 = kc_fe_selvar_1->u.Conspatternrepresentations.patternrepresentation_1; { #line 677 "../pat.k" { #line 677 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentation(kc_selvar_0_1, "with_expression (1)"); #line 1708 "pat.c" { #line 677 "../pat.k" patternrepresentation a_patternrep = kc_selvar_0_1; #line 677 "../pat.k" { #line 678 "../pat.k" patternrepresentation kc_selvar_1_1 = a_patternrep ; #line 678 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentation(kc_selvar_1_1, "with_expression (1)"); #line 1723 "pat.c" if (( kc_selvar_1_1->prod_sel == sel_Conspatternrepresentation)) { #line 680 "../pat.k" tmp = insertin_withcasesinfo( Withcaseinfo( f_get_predicates( a_patternrep ), f_get_bindings( a_patternrep ), ct ), tmp ); #line 1729 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_Nilpatternrepresentation)) { #line 679 "../pat.k" /*EMPTY*/ #line 1734 "pat.c" } else { kc_no_default_in_with( "f_withcasesinfo", __LINE__, __FILE__ ); return (withcasesinfo)0; } } #line 682 "../pat.k" #line 1741 "pat.c" } } #line 1745 "pat.c" } kc_fe_selvar_1 = kc_fe_selvar_1->u.Conspatternrepresentations.patternrepresentations_1; #line 677 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentations(kc_fe_selvar_1, "sublist_of_foreach_list_expression"); #line 1752 "pat.c" } } #line 683 "../pat.k" return tmp; #line 684 "../pat.k" } #line 1760 "pat.c" void v_add_unparsedeclsinfo_to_operator #ifdef KC_USE_PROTOTYPES (patternrepresentations a_patternreps, unparseclauses uc) #else (a_patternreps, uc) patternrepresentations a_patternreps; unparseclauses uc; #endif #line 687 "../pat.k" { { #line 688 "../pat.k" patternrepresentations kc_fe_selvar_1 = a_patternreps ; #line 688 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentations(kc_fe_selvar_1, "foreach_list_expression"); #line 1778 "pat.c" while( kc_fe_selvar_1->prod_sel == sel_Conspatternrepresentations ) { patternrepresentation kc_selvar_0_1 = kc_fe_selvar_1->u.Conspatternrepresentations.patternrepresentation_1; { #line 688 "../pat.k" { #line 688 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentation(kc_selvar_0_1, "with_expression (1)"); #line 1790 "pat.c" { #line 688 "../pat.k" patternrepresentation a_patternrep = kc_selvar_0_1; #line 688 "../pat.k" ID op = f_operatorofpatternrepresentation( a_patternrep ); if (! eq_ID( op, f_emptyId() )) { alternative a = f_alternativeofoperator(op); if (a) { { #line 693 "../pat.k" unparseclauses kc_fe_selvar_1 = uc ; #line 693 "../pat.k" /*SUPPRESS 622*/ assert_unparseclauses(kc_fe_selvar_1, "foreach_list_expression"); #line 1807 "pat.c" while( kc_fe_selvar_1->prod_sel == sel_Consunparseclauses ) { unparseclause kc_selvar_1_1 = kc_fe_selvar_1->u.Consunparseclauses.unparseclause_1; { #line 693 "../pat.k" { #line 693 "../pat.k" /*SUPPRESS 622*/ assert_unparseclause(kc_selvar_1_1, "with_expression (1)"); #line 1819 "pat.c" { #line 693 "../pat.k" unparseclause u = kc_selvar_1_1; #line 693 "../pat.k" a->unparseinfo = insertin_unparsedeclsinfo( Unparsedeclinfo( f_get_predicates( a_patternrep ), f_get_bindings( a_patternrep ), u ), a->unparseinfo ); #line 1828 "pat.c" } } #line 1832 "pat.c" } kc_fe_selvar_1 = kc_fe_selvar_1->u.Consunparseclauses.unparseclauses_1; #line 693 "../pat.k" /*SUPPRESS 622*/ assert_unparseclauses(kc_fe_selvar_1, "sublist_of_foreach_list_expression"); #line 1839 "pat.c" } } #line 696 "../pat.k" } } #line 1844 "pat.c" } } #line 1848 "pat.c" } kc_fe_selvar_1 = kc_fe_selvar_1->u.Conspatternrepresentations.patternrepresentations_1; #line 688 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentations(kc_fe_selvar_1, "sublist_of_foreach_list_expression"); #line 1855 "pat.c" } } #line 696 "../pat.k" #line 696 "../pat.k" } #line 1862 "pat.c" static patternrepresentation f_get_predicates #ifdef KC_USE_PROTOTYPES (patternrepresentation a_patternrep) #else (a_patternrep) patternrepresentation a_patternrep; #endif #line 703 "../pat.k" { { #line 704 "../pat.k" patternrepresentation kc_selvar_0_1 = a_patternrep ; #line 704 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentation(kc_selvar_0_1, "with_expression (1)"); #line 1881 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conspatternrepresentation)) { #line 708 "../pat.k" elem_patternrepresentation a_patternrep_elem = kc_selvar_0_1->u.Conspatternrepresentation.elem_patternrepresentation_1; #line 708 "../pat.k" patternrepresentation r_patternrep = kc_selvar_0_1->u.Conspatternrepresentation.patternrepresentation_1; #line 708 "../pat.k" { #line 709 "../pat.k" elem_patternrepresentation kc_selvar_1_1 = a_patternrep_elem ; #line 709 "../pat.k" /*SUPPRESS 622*/ assert_elem_patternrepresentation(kc_selvar_1_1, "with_expression (1)"); #line 1898 "pat.c" if (( kc_selvar_1_1->prod_sel == sel_PRIntLiteral)) { #line 731 "../pat.k" return Conspatternrepresentation( a_patternrep_elem, f_get_predicates( r_patternrep ) ); #line 1904 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRStringLiteral)) { #line 728 "../pat.k" return Conspatternrepresentation( a_patternrep_elem, f_get_predicates( r_patternrep ) ); #line 1911 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRWildcard)) { #line 725 "../pat.k" return Conspatternrepresentation( a_patternrep_elem, f_get_predicates( r_patternrep ) ); #line 1918 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRDefault)) { #line 722 "../pat.k" return Conspatternrepresentation( a_patternrep_elem, f_get_predicates( r_patternrep ) ); #line 1925 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PROperPredicate)) { #line 719 "../pat.k" return Conspatternrepresentation( a_patternrep_elem, f_get_predicates( r_patternrep ) ); #line 1932 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRVarPredicate)) { #line 716 "../pat.k" return Conspatternrepresentation( a_patternrep_elem, f_get_predicates( r_patternrep ) ); #line 1939 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRNonLeafBinding)) { #line 713 "../pat.k" return f_get_predicates( r_patternrep ); #line 1946 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRBinding)) { #line 710 "../pat.k" return f_get_predicates( r_patternrep ); #line 1953 "pat.c" } else { kc_no_default_in_with( "f_get_predicates", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 733 "../pat.k" #line 1960 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilpatternrepresentation)) { #line 705 "../pat.k" return Nilpatternrepresentation(); #line 1967 "pat.c" } else { kc_no_default_in_with( "f_get_predicates", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 733 "../pat.k" #line 733 "../pat.k" } #line 1976 "pat.c" static patternrepresentation f_get_bindings #ifdef KC_USE_PROTOTYPES (patternrepresentation a_patternrep) #else (a_patternrep) patternrepresentation a_patternrep; #endif #line 736 "../pat.k" { patternrepresentation p; v_resetbindingidmarks(); p = f_do_get_bindings( a_patternrep ); v_resetbindingidmarks(); return p; #line 742 "../pat.k" } #line 1994 "pat.c" static patternrepresentation f_do_get_bindings #ifdef KC_USE_PROTOTYPES (patternrepresentation a_patternrep) #else (a_patternrep) patternrepresentation a_patternrep; #endif #line 745 "../pat.k" { { #line 746 "../pat.k" patternrepresentation kc_selvar_0_1 = a_patternrep ; #line 746 "../pat.k" /*SUPPRESS 622*/ assert_patternrepresentation(kc_selvar_0_1, "with_expression (1)"); #line 2013 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conspatternrepresentation)) { #line 750 "../pat.k" elem_patternrepresentation a_patternrep_elem = kc_selvar_0_1->u.Conspatternrepresentation.elem_patternrepresentation_1; #line 750 "../pat.k" patternrepresentation r_patternrep = kc_selvar_0_1->u.Conspatternrepresentation.patternrepresentation_1; #line 750 "../pat.k" { #line 751 "../pat.k" elem_patternrepresentation kc_selvar_1_1 = a_patternrep_elem ; #line 751 "../pat.k" /*SUPPRESS 622*/ assert_elem_patternrepresentation(kc_selvar_1_1, "with_expression (1)"); #line 2030 "pat.c" if (( kc_selvar_1_1->prod_sel == sel_PRIntLiteral)) { #line 781 "../pat.k" return f_do_get_bindings( r_patternrep ); #line 2036 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRStringLiteral)) { #line 778 "../pat.k" return f_do_get_bindings( r_patternrep ); #line 2043 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRWildcard)) { #line 775 "../pat.k" return f_do_get_bindings( r_patternrep ); #line 2050 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRDefault)) { #line 772 "../pat.k" return f_do_get_bindings( r_patternrep ); #line 2057 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PROperPredicate)) { #line 769 "../pat.k" return f_do_get_bindings( r_patternrep ); #line 2064 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRVarPredicate)) { #line 766 "../pat.k" return f_do_get_bindings( r_patternrep ); #line 2071 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRNonLeafBinding)) { #line 759 "../pat.k" ID id = kc_selvar_1_1->u.PRNonLeafBinding.ID_1; #line 759 "../pat.k" if (! f_bindingidmarked( id )) { v_markbindingid( id ); return Conspatternrepresentation( a_patternrep_elem, f_do_get_bindings( r_patternrep ) ); } else { return f_do_get_bindings( r_patternrep ); } #line 2084 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_PRBinding)) { #line 752 "../pat.k" ID id = kc_selvar_1_1->u.PRBinding.ID_1; #line 752 "../pat.k" if (! f_bindingidmarked( id )) { v_markbindingid( id ); return Conspatternrepresentation( a_patternrep_elem, f_do_get_bindings( r_patternrep ) ); } else { return f_do_get_bindings( r_patternrep ); } #line 2097 "pat.c" } else { kc_no_default_in_with( "f_do_get_bindings", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 783 "../pat.k" #line 2104 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilpatternrepresentation)) { #line 747 "../pat.k" return Nilpatternrepresentation(); #line 2111 "pat.c" } else { kc_no_default_in_with( "f_do_get_bindings", __LINE__, __FILE__ ); return (patternrepresentation)0; } } #line 783 "../pat.k" #line 783 "../pat.k" } #line 2120 "pat.c" static rewriterulesinfo insertin_rewriterulesinfo #ifdef KC_USE_PROTOTYPES (rewriteruleinfo a_rwruleinfo, rewriterulesinfo a_rwrulesinfo) #else (a_rwruleinfo, a_rwrulesinfo) rewriteruleinfo a_rwruleinfo; rewriterulesinfo a_rwrulesinfo; #endif #line 788 "../pat.k" { { #line 789 "../pat.k" rewriterulesinfo kc_selvar_0_1 = a_rwrulesinfo ; #line 789 "../pat.k" /*SUPPRESS 622*/ assert_rewriterulesinfo(kc_selvar_0_1, "with_expression (1)"); #line 2140 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Consrewriterulesinfo)) { #line 793 "../pat.k" rewriteruleinfo aa_rwruleinfo = kc_selvar_0_1->u.Consrewriterulesinfo.rewriteruleinfo_1; #line 793 "../pat.k" rewriterulesinfo r_rwrulesinfo = kc_selvar_0_1->u.Consrewriterulesinfo.rewriterulesinfo_1; #line 793 "../pat.k" if (lt_rewriteruleinfo( aa_rwruleinfo, a_rwruleinfo )) { return Consrewriterulesinfo( aa_rwruleinfo, insertin_rewriterulesinfo( a_rwruleinfo, r_rwrulesinfo )); } else { return Consrewriterulesinfo( a_rwruleinfo, a_rwrulesinfo ); } #line 2153 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilrewriterulesinfo)) { #line 790 "../pat.k" return Consrewriterulesinfo( a_rwruleinfo, a_rwrulesinfo ); #line 2160 "pat.c" } else { kc_no_default_in_with( "insertin_rewriterulesinfo", __LINE__, __FILE__ ); return (rewriterulesinfo)0; } } #line 798 "../pat.k" #line 798 "../pat.k" } #line 2169 "pat.c" static boolean lt_rewriteruleinfo #ifdef KC_USE_PROTOTYPES (rewriteruleinfo a_rwruleinfo1, rewriteruleinfo a_rwruleinfo2) #else (a_rwruleinfo1, a_rwruleinfo2) rewriteruleinfo a_rwruleinfo1; rewriteruleinfo a_rwruleinfo2; #endif #line 801 "../pat.k" { { #line 802 "../pat.k" two_phyla kc_selvar_0_1 = TwoRewriteruleinfo( a_rwruleinfo1, a_rwruleinfo2 ) ; #line 802 "../pat.k" /*SUPPRESS 622*/ assert_two_phyla(kc_selvar_0_1, "with_expression (1)"); #line 2189 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_TwoRewriteruleinfo) && ( kc_selvar_0_1->u.TwoRewriteruleinfo.rewriteruleinfo_1->prod_sel == sel_Rewriteruleinfo) && ( kc_selvar_0_1->u.TwoRewriteruleinfo.rewriteruleinfo_2->prod_sel == sel_Rewriteruleinfo)) { #line 803 "../pat.k" patternrepresentation a_patternrep1 = kc_selvar_0_1->u.TwoRewriteruleinfo.rewriteruleinfo_1->u.Rewriteruleinfo.patternrepresentation_1; #line 803 "../pat.k" patternrepresentation a_patternrep2 = kc_selvar_0_1->u.TwoRewriteruleinfo.rewriteruleinfo_2->u.Rewriteruleinfo.patternrepresentation_1; #line 803 "../pat.k" return lt_patternrepresentation( a_patternrep1, a_patternrep2 ); #line 2199 "pat.c" } else { kc_no_default_in_with( "lt_rewriteruleinfo", __LINE__, __FILE__ ); return (boolean)0; } } #line 805 "../pat.k" #line 805 "../pat.k" } #line 2208 "pat.c" withcasesinfo insertin_withcasesinfo #ifdef KC_USE_PROTOTYPES (withcaseinfo a_withcaseinfo, withcasesinfo a_withcasesinfo) #else (a_withcaseinfo, a_withcasesinfo) withcaseinfo a_withcaseinfo; withcasesinfo a_withcasesinfo; #endif #line 808 "../pat.k" { { #line 809 "../pat.k" withcasesinfo kc_selvar_0_1 = a_withcasesinfo ; #line 809 "../pat.k" /*SUPPRESS 622*/ assert_withcasesinfo(kc_selvar_0_1, "with_expression (1)"); #line 2228 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Conswithcasesinfo)) { #line 813 "../pat.k" withcaseinfo aa_withcaseinfo = kc_selvar_0_1->u.Conswithcasesinfo.withcaseinfo_1; #line 813 "../pat.k" withcasesinfo r_withcasesinfo = kc_selvar_0_1->u.Conswithcasesinfo.withcasesinfo_1; #line 813 "../pat.k" if (lt_withcaseinfo( aa_withcaseinfo, a_withcaseinfo )) { return Conswithcasesinfo( aa_withcaseinfo, insertin_withcasesinfo( a_withcaseinfo, r_withcasesinfo )); } else { return Conswithcasesinfo( a_withcaseinfo, a_withcasesinfo ); } #line 2241 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilwithcasesinfo)) { #line 810 "../pat.k" return Conswithcasesinfo( a_withcaseinfo, a_withcasesinfo ); #line 2248 "pat.c" } else { kc_no_default_in_with( "insertin_withcasesinfo", __LINE__, __FILE__ ); return (withcasesinfo)0; } } #line 818 "../pat.k" #line 818 "../pat.k" } #line 2257 "pat.c" boolean lt_withcaseinfo #ifdef KC_USE_PROTOTYPES (withcaseinfo a_withcaseinfo1, withcaseinfo a_withcaseinfo2) #else (a_withcaseinfo1, a_withcaseinfo2) withcaseinfo a_withcaseinfo1; withcaseinfo a_withcaseinfo2; #endif #line 821 "../pat.k" { { #line 822 "../pat.k" two_phyla kc_selvar_0_1 = TwoWithcaseinfo( a_withcaseinfo1, a_withcaseinfo2 ) ; #line 822 "../pat.k" /*SUPPRESS 622*/ assert_two_phyla(kc_selvar_0_1, "with_expression (1)"); #line 2277 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_TwoWithcaseinfo) && ( kc_selvar_0_1->u.TwoWithcaseinfo.withcaseinfo_1->prod_sel == sel_Withcaseinfo) && ( kc_selvar_0_1->u.TwoWithcaseinfo.withcaseinfo_2->prod_sel == sel_Withcaseinfo)) { #line 823 "../pat.k" patternrepresentation a_patternrep1 = kc_selvar_0_1->u.TwoWithcaseinfo.withcaseinfo_1->u.Withcaseinfo.patternrepresentation_1; #line 823 "../pat.k" patternrepresentation a_patternrep2 = kc_selvar_0_1->u.TwoWithcaseinfo.withcaseinfo_2->u.Withcaseinfo.patternrepresentation_1; #line 823 "../pat.k" return lt_patternrepresentation( a_patternrep1, a_patternrep2 ); #line 2287 "pat.c" } else { kc_no_default_in_with( "lt_withcaseinfo", __LINE__, __FILE__ ); return (boolean)0; } } #line 825 "../pat.k" #line 825 "../pat.k" } #line 2296 "pat.c" static unparsedeclsinfo insertin_unparsedeclsinfo #ifdef KC_USE_PROTOTYPES (unparsedeclinfo a_unparsedeclinfo, unparsedeclsinfo a_unparsedeclsinfo) #else (a_unparsedeclinfo, a_unparsedeclsinfo) unparsedeclinfo a_unparsedeclinfo; unparsedeclsinfo a_unparsedeclsinfo; #endif #line 828 "../pat.k" { { #line 829 "../pat.k" unparsedeclsinfo kc_selvar_0_1 = a_unparsedeclsinfo ; #line 829 "../pat.k" /*SUPPRESS 622*/ assert_unparsedeclsinfo(kc_selvar_0_1, "with_expression (1)"); #line 2316 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_Consunparsedeclsinfo)) { #line 833 "../pat.k" unparsedeclinfo aa_unparsedeclinfo = kc_selvar_0_1->u.Consunparsedeclsinfo.unparsedeclinfo_1; #line 833 "../pat.k" unparsedeclsinfo r_unparsedeclsinfo = kc_selvar_0_1->u.Consunparsedeclsinfo.unparsedeclsinfo_1; #line 833 "../pat.k" if (lt_unparsedeclinfo( aa_unparsedeclinfo, a_unparsedeclinfo )) { return Consunparsedeclsinfo( aa_unparsedeclinfo, insertin_unparsedeclsinfo( a_unparsedeclinfo, r_unparsedeclsinfo )); } else { return Consunparsedeclsinfo( a_unparsedeclinfo, a_unparsedeclsinfo ); } #line 2329 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_Nilunparsedeclsinfo)) { #line 830 "../pat.k" return Consunparsedeclsinfo( a_unparsedeclinfo, a_unparsedeclsinfo ); #line 2336 "pat.c" } else { kc_no_default_in_with( "insertin_unparsedeclsinfo", __LINE__, __FILE__ ); return (unparsedeclsinfo)0; } } #line 838 "../pat.k" #line 838 "../pat.k" } #line 2345 "pat.c" static boolean lt_unparsedeclinfo #ifdef KC_USE_PROTOTYPES (unparsedeclinfo a_unparsedeclinfo1, unparsedeclinfo a_unparsedeclinfo2) #else (a_unparsedeclinfo1, a_unparsedeclinfo2) unparsedeclinfo a_unparsedeclinfo1; unparsedeclinfo a_unparsedeclinfo2; #endif #line 841 "../pat.k" { { #line 842 "../pat.k" two_phyla kc_selvar_0_1 = TwoUnparsedeclinfo( a_unparsedeclinfo1, a_unparsedeclinfo2 ) ; #line 842 "../pat.k" /*SUPPRESS 622*/ assert_two_phyla(kc_selvar_0_1, "with_expression (1)"); #line 2365 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_TwoUnparsedeclinfo) && ( kc_selvar_0_1->u.TwoUnparsedeclinfo.unparsedeclinfo_1->prod_sel == sel_Unparsedeclinfo) && ( kc_selvar_0_1->u.TwoUnparsedeclinfo.unparsedeclinfo_2->prod_sel == sel_Unparsedeclinfo)) { #line 843 "../pat.k" patternrepresentation a_patternrep1 = kc_selvar_0_1->u.TwoUnparsedeclinfo.unparsedeclinfo_1->u.Unparsedeclinfo.patternrepresentation_1; #line 843 "../pat.k" patternrepresentation a_patternrep2 = kc_selvar_0_1->u.TwoUnparsedeclinfo.unparsedeclinfo_2->u.Unparsedeclinfo.patternrepresentation_1; #line 843 "../pat.k" return lt_patternrepresentation( a_patternrep1, a_patternrep2 ); #line 2375 "pat.c" } else { kc_no_default_in_with( "lt_unparsedeclinfo", __LINE__, __FILE__ ); return (boolean)0; } } #line 845 "../pat.k" #line 845 "../pat.k" } #line 2384 "pat.c" static boolean lt_patternrepresentation #ifdef KC_USE_PROTOTYPES (patternrepresentation a_patternrep1, patternrepresentation a_patternrep2) #else (a_patternrep1, a_patternrep2) patternrepresentation a_patternrep1; patternrepresentation a_patternrep2; #endif #line 848 "../pat.k" { { #line 849 "../pat.k" two_phyla kc_selvar_0_1 = TwoPatternrepresentation( a_patternrep1, a_patternrep2 ) ; #line 849 "../pat.k" /*SUPPRESS 622*/ assert_two_phyla(kc_selvar_0_1, "with_expression (1)"); #line 2404 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_TwoPatternrepresentation) && ( kc_selvar_0_1->u.TwoPatternrepresentation.patternrepresentation_1->prod_sel == sel_Conspatternrepresentation) && ( kc_selvar_0_1->u.TwoPatternrepresentation.patternrepresentation_2->prod_sel == sel_Conspatternrepresentation)) { #line 859 "../pat.k" elem_patternrepresentation a_patternrep_elem1 = kc_selvar_0_1->u.TwoPatternrepresentation.patternrepresentation_1->u.Conspatternrepresentation.elem_patternrepresentation_1; #line 859 "../pat.k" patternrepresentation r_patternrep1 = kc_selvar_0_1->u.TwoPatternrepresentation.patternrepresentation_1->u.Conspatternrepresentation.patternrepresentation_1; #line 859 "../pat.k" elem_patternrepresentation a_patternrep_elem2 = kc_selvar_0_1->u.TwoPatternrepresentation.patternrepresentation_2->u.Conspatternrepresentation.elem_patternrepresentation_1; #line 859 "../pat.k" patternrepresentation r_patternrep2 = kc_selvar_0_1->u.TwoPatternrepresentation.patternrepresentation_2->u.Conspatternrepresentation.patternrepresentation_1; #line 859 "../pat.k" { #line 860 "../pat.k" tribool kc_selvar_1_1 = equal_elem_patternrepresentation( a_patternrep_elem1, a_patternrep_elem2 ) ; #line 860 "../pat.k" /*SUPPRESS 622*/ assert_tribool(kc_selvar_1_1, "with_expression (1)"); #line 2425 "pat.c" if (( kc_selvar_1_1->prod_sel == sel_Bigger)) { #line 867 "../pat.k" return False; #line 2431 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_Smaller)) { #line 864 "../pat.k" return True; #line 2438 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_Equal)) { #line 861 "../pat.k" return lt_patternrepresentation( r_patternrep1, r_patternrep2 ); #line 2445 "pat.c" } else { kc_no_default_in_with( "lt_patternrepresentation", __LINE__, __FILE__ ); return (boolean)0; } } #line 869 "../pat.k" #line 2452 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoPatternrepresentation) && ( kc_selvar_0_1->u.TwoPatternrepresentation.patternrepresentation_1->prod_sel == sel_Nilpatternrepresentation) && ( kc_selvar_0_1->u.TwoPatternrepresentation.patternrepresentation_2->prod_sel == sel_Nilpatternrepresentation)) { #line 850 "../pat.k" return False; #line 2459 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoPatternrepresentation) && ( kc_selvar_0_1->u.TwoPatternrepresentation.patternrepresentation_1->prod_sel == sel_Nilpatternrepresentation)) { #line 853 "../pat.k" return False; #line 2466 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoPatternrepresentation) && ( kc_selvar_0_1->u.TwoPatternrepresentation.patternrepresentation_2->prod_sel == sel_Nilpatternrepresentation)) { #line 856 "../pat.k" return True; #line 2473 "pat.c" } else { kc_no_default_in_with( "lt_patternrepresentation", __LINE__, __FILE__ ); return (boolean)0; } } #line 869 "../pat.k" #line 869 "../pat.k" } #line 2482 "pat.c" static tribool equal_elem_patternrepresentation #ifdef KC_USE_PROTOTYPES (elem_patternrepresentation a_patternrep_elem1, elem_patternrepresentation a_patternrep_elem2) #else (a_patternrep_elem1, a_patternrep_elem2) elem_patternrepresentation a_patternrep_elem1; elem_patternrepresentation a_patternrep_elem2; #endif #line 872 "../pat.k" { { #line 873 "../pat.k" two_phyla kc_selvar_0_1 = TwoElem_patternrepresentation( a_patternrep_elem1, a_patternrep_elem2 ) ; #line 873 "../pat.k" /*SUPPRESS 622*/ assert_two_phyla(kc_selvar_0_1, "with_expression (1)"); #line 2502 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRNonLeafBinding) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRNonLeafBinding)) { #line 989 "../pat.k" path a_path1 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->u.PRNonLeafBinding.path_1; #line 989 "../pat.k" path a_path2 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->u.PRNonLeafBinding.path_1; #line 989 "../pat.k" return equal_path( a_path1, a_path2 ); #line 2512 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRBinding) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRBinding)) { #line 979 "../pat.k" path a_path1 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->u.PRBinding.path_1; #line 979 "../pat.k" path a_path2 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->u.PRBinding.path_1; #line 979 "../pat.k" return equal_path( a_path1, a_path2 ); #line 2523 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRWildcard) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRWildcard)) { #line 969 "../pat.k" path a_path1 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->u.PRWildcard.path_1; #line 969 "../pat.k" path a_path2 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->u.PRWildcard.path_1; #line 969 "../pat.k" return equal_path( a_path1, a_path2 ); #line 2534 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRWildcard) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRDefault)) { #line 965 "../pat.k" return Smaller(); #line 2541 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRDefault) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRWildcard)) { #line 962 "../pat.k" return Bigger(); #line 2548 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRDefault) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRDefault)) { #line 953 "../pat.k" return Equal(); #line 2555 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRIntLiteral) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRIntLiteral)) { #line 923 "../pat.k" path a_path1 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->u.PRIntLiteral.path_1; #line 923 "../pat.k" path a_path2 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->u.PRIntLiteral.path_1; #line 923 "../pat.k" return equal_path( a_path1, a_path2 ); #line 2566 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRStringLiteral) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRIntLiteral)) { #line 920 "../pat.k" path a_path1 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->u.PRStringLiteral.path_1; #line 920 "../pat.k" path a_path2 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->u.PRIntLiteral.path_1; #line 920 "../pat.k" return equal_path( a_path1, a_path2 ); #line 2577 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRVarPredicate) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRIntLiteral)) { #line 917 "../pat.k" return Bigger(); #line 2584 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PROperPredicate) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRIntLiteral)) { #line 914 "../pat.k" path a_path1 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->u.PROperPredicate.path_1; #line 914 "../pat.k" path a_path2 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->u.PRIntLiteral.path_1; #line 914 "../pat.k" return equal_path( a_path1, a_path2 ); #line 2595 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRIntLiteral) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRStringLiteral)) { #line 909 "../pat.k" path a_path1 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->u.PRIntLiteral.path_1; #line 909 "../pat.k" path a_path2 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->u.PRStringLiteral.path_1; #line 909 "../pat.k" return equal_path( a_path1, a_path2 ); #line 2606 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRStringLiteral) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRStringLiteral)) { #line 906 "../pat.k" path a_path1 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->u.PRStringLiteral.path_1; #line 906 "../pat.k" path a_path2 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->u.PRStringLiteral.path_1; #line 906 "../pat.k" return equal_path( a_path1, a_path2 ); #line 2617 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRVarPredicate) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRStringLiteral)) { #line 903 "../pat.k" return Bigger(); #line 2624 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PROperPredicate) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRStringLiteral)) { #line 900 "../pat.k" path a_path1 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->u.PROperPredicate.path_1; #line 900 "../pat.k" path a_path2 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->u.PRStringLiteral.path_1; #line 900 "../pat.k" return equal_path( a_path1, a_path2 ); #line 2635 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRIntLiteral) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRVarPredicate)) { #line 896 "../pat.k" return Smaller(); #line 2642 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRStringLiteral) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRVarPredicate)) { #line 893 "../pat.k" return Smaller(); #line 2649 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRVarPredicate) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRVarPredicate)) { #line 890 "../pat.k" paths a_paths1 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->u.PRVarPredicate.paths_1; #line 890 "../pat.k" paths a_paths2 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->u.PRVarPredicate.paths_1; #line 890 "../pat.k" return equal_paths( a_paths1, a_paths2 ); #line 2660 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PROperPredicate) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRVarPredicate)) { #line 887 "../pat.k" return Smaller(); #line 2667 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRIntLiteral) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PROperPredicate)) { #line 883 "../pat.k" path a_path1 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->u.PRIntLiteral.path_1; #line 883 "../pat.k" path a_path2 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->u.PROperPredicate.path_1; #line 883 "../pat.k" return equal_path( a_path1, a_path2 ); #line 2678 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRStringLiteral) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PROperPredicate)) { #line 880 "../pat.k" path a_path1 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->u.PRStringLiteral.path_1; #line 880 "../pat.k" path a_path2 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->u.PROperPredicate.path_1; #line 880 "../pat.k" return equal_path( a_path1, a_path2 ); #line 2689 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRVarPredicate) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PROperPredicate)) { #line 877 "../pat.k" return Bigger(); #line 2696 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PROperPredicate) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PROperPredicate)) { #line 874 "../pat.k" path a_path1 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->u.PROperPredicate.path_1; #line 874 "../pat.k" path a_path2 = kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->u.PROperPredicate.path_1; #line 874 "../pat.k" return equal_path( a_path1, a_path2 ); #line 2707 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRNonLeafBinding)) { #line 995 "../pat.k" return Bigger(); #line 2714 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRBinding)) { #line 985 "../pat.k" return Bigger(); #line 2721 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRWildcard)) { #line 975 "../pat.k" return Bigger(); #line 2728 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_1->prod_sel == sel_PRDefault)) { #line 959 "../pat.k" return Bigger(); #line 2735 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRNonLeafBinding)) { #line 992 "../pat.k" return Smaller(); #line 2742 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRBinding)) { #line 982 "../pat.k" return Smaller(); #line 2749 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRWildcard)) { #line 972 "../pat.k" return Smaller(); #line 2756 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoElem_patternrepresentation) && ( kc_selvar_0_1->u.TwoElem_patternrepresentation.elem_patternrepresentation_2->prod_sel == sel_PRDefault)) { #line 956 "../pat.k" return Smaller(); #line 2763 "pat.c" } else { kc_no_default_in_with( "equal_elem_patternrepresentation", __LINE__, __FILE__ ); return (tribool)0; } } #line 999 "../pat.k" #line 999 "../pat.k" } #line 2772 "pat.c" static tribool equal_path #ifdef KC_USE_PROTOTYPES (path a_path1, path a_path2) #else (a_path1, a_path2) path a_path1; path a_path2; #endif #line 1002 "../pat.k" { return do_equal_path( reverse_path( a_path1 ), reverse_path( a_path2 ) ); #line 1004 "../pat.k" } #line 2787 "pat.c" static tribool do_equal_path #ifdef KC_USE_PROTOTYPES (path a_path1, path a_path2) #else (a_path1, a_path2) path a_path1; path a_path2; #endif #line 1007 "../pat.k" { { #line 1008 "../pat.k" two_phyla kc_selvar_0_1 = TwoPath( a_path1, a_path2 ) ; #line 1008 "../pat.k" /*SUPPRESS 622*/ assert_two_phyla(kc_selvar_0_1, "with_expression (1)"); #line 2807 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_TwoPath) && ( kc_selvar_0_1->u.TwoPath.path_1->prod_sel == sel_Conspath) && ( kc_selvar_0_1->u.TwoPath.path_2->prod_sel == sel_Conspath)) { #line 1018 "../pat.k" int i1 = kc_selvar_0_1->u.TwoPath.path_1->u.Conspath.int_1; #line 1018 "../pat.k" path r_path1 = kc_selvar_0_1->u.TwoPath.path_1->u.Conspath.path_1; #line 1018 "../pat.k" int i2 = kc_selvar_0_1->u.TwoPath.path_2->u.Conspath.int_1; #line 1018 "../pat.k" path r_path2 = kc_selvar_0_1->u.TwoPath.path_2->u.Conspath.path_1; #line 1018 "../pat.k" if ( i1 < i2 ) { return Smaller(); } else if (i1 > i2 ) { return Bigger(); } else { return do_equal_path( r_path1, r_path2 ); } #line 2826 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoPath) && ( kc_selvar_0_1->u.TwoPath.path_1->prod_sel == sel_Nilpath) && ( kc_selvar_0_1->u.TwoPath.path_2->prod_sel == sel_Conspath)) { #line 1015 "../pat.k" return Bigger(); #line 2833 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoPath) && ( kc_selvar_0_1->u.TwoPath.path_1->prod_sel == sel_Conspath) && ( kc_selvar_0_1->u.TwoPath.path_2->prod_sel == sel_Nilpath)) { #line 1012 "../pat.k" return Smaller(); #line 2840 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoPath) && ( kc_selvar_0_1->u.TwoPath.path_1->prod_sel == sel_Nilpath) && ( kc_selvar_0_1->u.TwoPath.path_2->prod_sel == sel_Nilpath)) { #line 1009 "../pat.k" return Equal(); #line 2847 "pat.c" } else { kc_no_default_in_with( "do_equal_path", __LINE__, __FILE__ ); return (tribool)0; } } #line 1025 "../pat.k" #line 1025 "../pat.k" } #line 2856 "pat.c" static tribool equal_paths #ifdef KC_USE_PROTOTYPES (paths a_paths1, paths a_paths2) #else (a_paths1, a_paths2) paths a_paths1; paths a_paths2; #endif #line 1028 "../pat.k" { { #line 1029 "../pat.k" two_phyla kc_selvar_0_1 = TwoPaths( a_paths1, a_paths2 ) ; #line 1029 "../pat.k" /*SUPPRESS 622*/ assert_two_phyla(kc_selvar_0_1, "with_expression (1)"); #line 2876 "pat.c" if (( kc_selvar_0_1->prod_sel == sel_TwoPaths) && ( kc_selvar_0_1->u.TwoPaths.paths_1->prod_sel == sel_Conspaths) && ( kc_selvar_0_1->u.TwoPaths.paths_2->prod_sel == sel_Conspaths)) { #line 1039 "../pat.k" path a_path1 = kc_selvar_0_1->u.TwoPaths.paths_1->u.Conspaths.path_1; #line 1039 "../pat.k" paths r_paths1 = kc_selvar_0_1->u.TwoPaths.paths_1->u.Conspaths.paths_1; #line 1039 "../pat.k" path a_path2 = kc_selvar_0_1->u.TwoPaths.paths_2->u.Conspaths.path_1; #line 1039 "../pat.k" paths r_paths2 = kc_selvar_0_1->u.TwoPaths.paths_2->u.Conspaths.paths_1; #line 1039 "../pat.k" { #line 1040 "../pat.k" tribool kc_selvar_1_1 = equal_path( a_path1, a_path2 ) ; #line 1040 "../pat.k" /*SUPPRESS 622*/ assert_tribool(kc_selvar_1_1, "with_expression (1)"); #line 2897 "pat.c" if (( kc_selvar_1_1->prod_sel == sel_Equal)) { #line 1047 "../pat.k" return equal_paths( r_paths1, r_paths2 ); #line 2903 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_Bigger)) { #line 1044 "../pat.k" return Bigger(); #line 2910 "pat.c" } else if (( kc_selvar_1_1->prod_sel == sel_Smaller)) { #line 1041 "../pat.k" return Smaller(); #line 2917 "pat.c" } else { kc_no_default_in_with( "equal_paths", __LINE__, __FILE__ ); return (tribool)0; } } #line 1049 "../pat.k" #line 2924 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoPaths) && ( kc_selvar_0_1->u.TwoPaths.paths_1->prod_sel == sel_Nilpaths) && ( kc_selvar_0_1->u.TwoPaths.paths_2->prod_sel == sel_Conspaths)) { #line 1036 "../pat.k" return Bigger(); #line 2931 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoPaths) && ( kc_selvar_0_1->u.TwoPaths.paths_1->prod_sel == sel_Conspaths) && ( kc_selvar_0_1->u.TwoPaths.paths_2->prod_sel == sel_Nilpaths)) { #line 1033 "../pat.k" return Smaller(); #line 2938 "pat.c" } else if (( kc_selvar_0_1->prod_sel == sel_TwoPaths) && ( kc_selvar_0_1->u.TwoPaths.paths_1->prod_sel == sel_Nilpaths) && ( kc_selvar_0_1->u.TwoPaths.paths_2->prod_sel == sel_Nilpaths)) { #line 1030 "../pat.k" return Equal(); #line 2945 "pat.c" } else { kc_no_default_in_with( "equal_paths", __LINE__, __FILE__ ); return (tribool)0; } } #line 1049 "../pat.k" #line 1049 "../pat.k" } #line 2954 "pat.c"