Changeset 276

Show
Ignore:
Timestamp:
12/06/06 18:30:00 (2 years ago)
Author:
pragma
Message:

More bugfixes.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/enki/EnkiParser.d

    r275 r276  
    125125                if(parse_eoi().success){ 
    126126                    goto loopend12; 
    127                 } 
     127                }else{ 
     128                    goto exprStart13; 
     129                } 
     130            exprStart13: 
    128131                {//Expression 
    129132                    uint start10 = position; 
     
    135138                            setError("Expected Rule, Comment or Directive."); 
    136139                            position = start11; 
    137                             goto mismatch14
     140                            goto mismatch15
    138141                        } 
    139142                    } 
    140143                    if(!(parse_WS().success)){ 
    141                         goto mismatch14
    142                     } 
    143                     goto match13
    144                 mismatch14
     144                        goto mismatch15
     145                    } 
     146                    goto match14
     147                mismatch15
    145148                    {/*do nothing*/} 
    146149                    position = start10; 
    147150                    goto loopend12; 
    148                 match13
     151                match14
    149152                    clearErrors(); 
    150153                    goto loop11; 
     
    190193            uint start13 = position; 
    191194            if(!(parse_Identifier().assign!(String)(bind_name))){ 
    192                 goto mismatch18
    193             } 
    194             if(!(parse_WS().success)){ 
    195                 goto mismatch18
     195                goto mismatch19
     196            } 
     197            if(!(parse_WS().success)){ 
     198                goto mismatch19
    196199            } 
    197200            {//OptionalExpr 
     
    216219            } 
    217220            if(!(parse_WS().success)){ 
    218                 goto mismatch18
     221                goto mismatch19
    219222            } 
    220223            if(!(terminal("::=").success)){ 
    221                 goto mismatch18
    222             } 
    223             if(!(parse_WS().success)){ 
    224                 goto mismatch18
     224                goto mismatch19
     225            } 
     226            if(!(parse_WS().success)){ 
     227                goto mismatch19
    225228            } 
    226229            if(!(parse_Expression().assign!(Expression)(bind_expr))){ 
    227                 goto mismatch18
    228             } 
    229             if(!(parse_WS().success)){ 
    230                 goto mismatch18
     230                goto mismatch19
     231            } 
     232            if(!(parse_WS().success)){ 
     233                goto mismatch19
    231234            } 
    232235            if(!(terminal(";").success)){ 
    233                 goto mismatch18
    234             } 
    235             goto match17
    236         mismatch18
     236                goto mismatch19
     237            } 
     238            goto match18
     239        mismatch19
    237240            setError("Expected Identifier."); 
    238241            position = start13; 
    239             goto mismatch16
    240         match17
    241             clearErrors(); 
    242             goto match15
    243         } 
    244     match15
     242            goto mismatch17
     243        match18
     244            clearErrors(); 
     245            goto match16
     246        } 
     247    match16
    245248        debug writefln("parse_Rule() PASS"); 
    246249        ResultT!(Rule) passed = ResultT!(Rule)(new Rule(bind_name,bind_pred,bind_expr,bind_decl)); 
    247250        return passed; 
    248     mismatch16
     251    mismatch17
    249252        position = start12; 
    250253        ResultT!(Rule) failed = ResultT!(Rule)(); 
     
    269272            if((parse_ParamsExpr().assign!(Param[])(bind_params))){ 
    270273                clearErrors(); 
    271                 goto match19
     274                goto match20
    272275            }else{ 
    273276                setError("Expected ParamsExpr."); 
    274277                position = start19; 
    275                 goto mismatch20
    276             } 
    277         } 
    278     match19
     278                goto mismatch21
     279            } 
     280        } 
     281    match20
    279282        debug writefln("parse_RuleDecl() PASS"); 
    280283        ResultT!(RuleDecl) passed = ResultT!(RuleDecl)(new RuleDecl(bind_params)); 
    281284        return passed; 
    282     mismatch20
     285    mismatch21
    283286        position = start18; 
    284287        ResultT!(RuleDecl) failed = ResultT!(RuleDecl)(); 
     
    302305            uint start21 = position; 
    303306            if(!(terminal("=").success)){ 
    304                 goto mismatch24
    305             } 
    306             if(!(parse_WS().success)){ 
    307                 goto mismatch24
     307                goto mismatch25
     308            } 
     309            if(!(parse_WS().success)){ 
     310                goto mismatch25
    308311            } 
    309312            {//Expression 
     
    314317                    setError("Expected ClassPredicate, FunctionPredicate or BindingPredicate."); 
    315318                    position = start22; 
    316                     goto mismatch24
    317                 } 
    318             } 
    319             goto match23
    320         mismatch24
     319                    goto mismatch25
     320                } 
     321            } 
     322            goto match24
     323        mismatch25
    321324            {/*do nothing*/} 
    322325            position = start21; 
    323             goto mismatch22
    324         match23
    325             clearErrors(); 
    326             goto match21
    327         } 
    328     match21
     326            goto mismatch23
     327        match24
     328            clearErrors(); 
     329            goto match22
     330        } 
     331    match22
    329332        debug writefln("parse_RulePredicate() PASS"); 
    330333        return ResultT!(RulePredicate)(bind_pred); 
    331     mismatch22
     334    mismatch23
    332335        position = start20; 
    333336        return ResultT!(RulePredicate)(); 
     
    352355            if((terminal("new").success && parse_WS().success && parse_Identifier().assign!(String)(bind_name) && parse_WS().success && parse_ParamsExpr().assign!(Param[])(bind_params))){ 
    353356                clearErrors(); 
    354                 goto match25
     357                goto match26
    355358            }else{ 
    356359                position = start24; 
    357                 goto mismatch26
    358             } 
    359         } 
    360     match25
     360                goto mismatch27
     361            } 
     362        } 
     363    match26
    361364        debug writefln("parse_ClassPredicate() PASS"); 
    362365        ResultT!(ClassPredicate) passed = ResultT!(ClassPredicate)(new ClassPredicate(bind_name,bind_params)); 
    363366        return passed; 
    364     mismatch26
     367    mismatch27
    365368        position = start23; 
    366369        ResultT!(ClassPredicate) failed = ResultT!(ClassPredicate)(); 
     
    386389            if((parse_ExplicitParam().assign!(Param)(bind_decl) && parse_WS().success && parse_ParamsExpr().assign!(Param[])(bind_params))){ 
    387390                clearErrors(); 
    388                 goto match27
     391                goto match28
    389392            }else{ 
    390393                setError("Expected ExplicitParam."); 
    391394                position = start26; 
    392                 goto mismatch28
    393             } 
    394         } 
    395     match27
     395                goto mismatch29
     396            } 
     397        } 
     398    match28
    396399        debug writefln("parse_FunctionPredicate() PASS"); 
    397400        ResultT!(FunctionPredicate) passed = ResultT!(FunctionPredicate)(new FunctionPredicate(bind_decl,bind_params)); 
    398401        return passed; 
    399     mismatch28
     402    mismatch29
    400403        position = start25; 
    401404        ResultT!(FunctionPredicate) failed = ResultT!(FunctionPredicate)(); 
     
    420423            if((parse_Param().assign!(Param)(bind_param))){ 
    421424                clearErrors(); 
    422                 goto match29
     425                goto match30
    423426            }else{ 
    424427                setError("Expected Param."); 
    425428                position = start28; 
    426                 goto mismatch30
    427             } 
    428         } 
    429     match29
     429                goto mismatch31
     430            } 
     431        } 
     432    match30
    430433        debug writefln("parse_BindingPredicate() PASS"); 
    431434        ResultT!(BindingPredicate) passed = ResultT!(BindingPredicate)(new BindingPredicate(bind_param)); 
    432435        return passed; 
    433     mismatch30
     436    mismatch31
    434437        position = start27; 
    435438        ResultT!(BindingPredicate) failed = ResultT!(BindingPredicate)(); 
     
    453456            uint start30 = position; 
    454457            if(!(terminal("(").success)){ 
    455                 goto mismatch34
    456             } 
    457             if(!(parse_WS().success)){ 
    458                 goto mismatch34
     458                goto mismatch35
     459            } 
     460            if(!(parse_WS().success)){ 
     461                goto mismatch35
    459462            } 
    460463            {//OptionalExpr 
     
    462465                    uint start32 = position; 
    463466                    if(!(parse_Param().assignCat!(Param[])(bind_params))){ 
    464                         goto mismatch36
     467                        goto mismatch37
    465468                    } 
    466469                    if(!(parse_WS().success)){ 
    467                         goto mismatch36
     470                        goto mismatch37
    468471                    } 
    469472                    {//ZeroOrMoreExpr 
    470473                        uint termPos34; 
    471                     loop37
     474                    loop38
    472475                        termPos34 = position; 
     476                    exprStart40: 
    473477                        {//Expression 
    474478                            uint start35 = position; 
    475479                            if((terminal(",").success && parse_WS().success && parse_Param().assignCat!(Param[])(bind_params) && parse_WS().success)){ 
    476480                                clearErrors(); 
    477                                 goto loop37
     481                                goto loop38
    478482                            }else{ 
    479483                                position = start35; 
    480                                 goto loopend38
     484                                goto loopend39
    481485                            } 
    482486                        } 
    483                     loopend38
     487                    loopend39
    484488                        {/*do nothing*/} 
    485489                    } 
    486                     goto match35
    487                 mismatch36
     490                    goto match36
     491                mismatch37
    488492                    {/*do nothing*/} 
    489493                    position = start32; 
    490494                    {/*do nothing*/} 
    491                 match35
     495                match36
    492496                    clearErrors(); 
    493497                    {/*do nothing*/} 
     
    495499            } 
    496500            if(!(terminal(")").success)){ 
    497                 goto mismatch34
    498             } 
    499             goto match33
    500         mismatch34
     501                goto mismatch35
     502            } 
     503            goto match34
     504        mismatch35
    501505            {/*do nothing*/} 
    502506            position = start30; 
    503             goto mismatch32
    504         match33
    505             clearErrors(); 
    506             goto match31
    507         } 
    508     match31
     507            goto mismatch33
     508        match34
     509            clearErrors(); 
     510            goto match32
     511        } 
     512    match32
    509513        debug writefln("parse_ParamsExpr() PASS"); 
    510514        return ResultT!(Param[])(bind_params); 
    511     mismatch32
     515    mismatch33
    512516        position = start29; 
    513517        return ResultT!(Param[])(); 
     
    531535            if((parse_ExplicitParam().assign!(Param)(bind_param)) || (parse_WeakParam().assign!(Param)(bind_param))){ 
    532536                clearErrors(); 
    533                 goto match39
     537                goto match41
    534538            }else{ 
    535539                setError("Expected ExplicitParam or WeakParam."); 
    536540                position = start37; 
    537                 goto mismatch40
    538             } 
    539         } 
    540     match39
     541                goto mismatch42
     542            } 
     543        } 
     544    match41
    541545        debug writefln("parse_Param() PASS"); 
    542546        return ResultT!(Param)(bind_param); 
    543     mismatch40
     547    mismatch42
    544548        position = start36; 
    545549        return ResultT!(Param)(); 
     
    563567            if((parse_Identifier().assign!(String)(bind_name))){ 
    564568                clearErrors(); 
    565                 goto match41
     569                goto match43
    566570            }else{ 
    567571                setError("Expected Identifier."); 
    568572                position = start39; 
    569                 goto mismatch42
    570             } 
    571         } 
    572     match41
     573                goto mismatch44
     574            } 
     575        } 
     576    match43
    573577        debug writefln("parse_WeakParam() PASS"); 
    574578        ResultT!(Param) passed = ResultT!(Param)(new Param(bind_name)); 
    575579        return passed; 
    576     mismatch42
     580    mismatch44
    577581        position = start38; 
    578582        ResultT!(Param) failed = ResultT!(Param)(); 
     
    598602            uint start41 = position; 
    599603            if(!(parse_Identifier().assign!(String)(bind_type))){ 
    600                 goto mismatch46
    601             } 
    602             if(!(parse_WS().success)){ 
    603                 goto mismatch46
     604                goto mismatch48
     605            } 
     606            if(!(parse_WS().success)){ 
     607                goto mismatch48
    604608            } 
    605609            {//OptionalExpr 
     
    614618            } 
    615619            if(!(parse_Identifier().assign!(String)(bind_name))){ 
    616                 goto mismatch46
    617             } 
    618             goto match45
    619         mismatch46
     620                goto mismatch48
     621            } 
     622            goto match47
     623        mismatch48
    620624            setError("Expected Identifier."); 
    621625            position = start41; 
    622             goto mismatch44
    623         match45
    624             clearErrors(); 
    625             goto match43
    626         } 
    627     match43
     626            goto mismatch46
     627        match47
     628            clearErrors(); 
     629            goto match45
     630        } 
     631    match45
    628632        debug writefln("parse_ExplicitParam() PASS"); 
    629633        ResultT!(Param) passed = ResultT!(Param)(new Param(bind_isArray,bind_type,bind_name)); 
    630634        return passed; 
    631     mismatch44
     635    mismatch46
    632636        position = start40; 
    633637        ResultT!(Param) failed = ResultT!(Param)(); 
     
    659663                } 
    660664            } 
    661             goto match49
    662         mismatch50
     665            goto match51
     666        mismatch52
    663667            {/*do nothing*/} 
    664668            position = start45; 
    665             goto mismatch48
    666         match49
    667             clearErrors(); 
    668             goto match47
    669         } 
    670     match47
     669            goto mismatch50
     670        match51
     671            clearErrors(); 
     672            goto match49
     673        } 
     674    match49
    671675        debug writefln("parse_Brackets() PASS"); 
    672676        return ResultT!(bool)(true); 
    673     mismatch48
     677    mismatch50
    674678        position = start44; 
    675679        return ResultT!(bool)(); 
     
    692696            uint start49 = position; 
    693697            if(!(parse_Term().assignCat!(Term[])(bind_terms))){ 
    694                 goto mismatch54
    695             } 
    696             if(!(parse_WS().success)){ 
    697                 goto mismatch54
     698                goto mismatch56
     699            } 
     700            if(!(parse_WS().success)){ 
     701                goto mismatch56
    698702            } 
    699703            {//ZeroOrMoreExpr 
    700704                uint termPos51; 
    701             loop55
     705            loop57
    702706                termPos51 = position; 
     707            exprStart59: 
    703708                {//Expression 
    704709                    uint start52 = position; 
    705710                    if((terminal("|").success && parse_WS().success && parse_Term().assignCat!(Term[])(bind_terms) && parse_WS().success)){ 
    706711                        clearErrors(); 
    707                         goto loop55
     712                        goto loop57
    708713                    }else{ 
    709714                        position = start52; 
    710                         goto loopend56
    711                     } 
    712                 } 
    713             loopend56
     715                        goto loopend58
     716                    } 
     717                } 
     718            loopend58
    714719                {/*do nothing*/} 
    715720            } 
    716             goto match53
    717         mismatch54
     721            goto match55
     722        mismatch56
    718723            setError("Expected Term."); 
    719724            position = start49; 
    720             goto mismatch52
    721         match53
    722             clearErrors(); 
    723             goto match51
    724         } 
    725     match51
     725            goto mismatch54
     726        match55
     727            clearErrors(); 
     728            goto match53
     729        } 
     730    match53
    726731        debug writefln("parse_Expression() PASS"); 
    727732        ResultT!(Expression) passed = ResultT!(Expression)(new Expression(bind_terms)); 
    728733        return passed; 
    729     mismatch52
     734    mismatch54
    730735        position = start48; 
    731736        ResultT!(Expression) failed = ResultT!(Expression)(); 
     
    749754            uint start54 = position; 
    750755            if(!(parse_SubExpression().assignCat!(SubExpression[])(bind_factors))){ 
    751                 goto mismatch60
    752             } 
    753             if(!(parse_WS().success)){ 
    754                 goto mismatch60
     756                goto mismatch63
     757            } 
     758            if(!(parse_WS().success)){ 
     759                goto mismatch63
    755760            } 
    756761            {//ZeroOrMoreExpr 
    757762                uint termPos56; 
    758             loop61
     763            loop64
    759764                termPos56 = position; 
     765            exprStart66: 
    760766                {//Expression 
    761767                    uint start57 = position; 
    762768                    if((parse_SubExpression().assignCat!(SubExpression[])(bind_factors) && parse_WS().success)){ 
    763769                        clearErrors(); 
    764                         goto loop61
     770                        goto loop64
    765771                    }else{ 
    766772                        setError("Expected SubExpression."); 
    767773                        position = start57; 
    768                         goto loopend62
    769                     } 
    770                 } 
    771             loopend62
     774                        goto loopend65
     775                    } 
     776                } 
     777            loopend65
    772778                {/*do nothing*/} 
    773779            } 
    774             goto match59
    775         mismatch60
     780            goto match62
     781        mismatch63
    776782            setError("Expected SubExpression."); 
    777783            position = start54; 
    778             goto mismatch58
    779         match59
    780             clearErrors(); 
    781             goto match57
    782         } 
    783     match57
     784            goto mismatch61
     785        match62
     786            clearErrors(); 
     787            goto match60
     788        } 
     789    match60
    784790        debug writefln("parse_Term() PASS"); 
    785791        return ResultT!(SubExpression[])(bind_factors); 
    786     mismatch58
     792    mismatch61
    787793        position = start53; 
    788794        return ResultT!(SubExpression[])(); 
     
    806812            if((parse_Production().assign!(SubExpression)(bind_expr)) || (parse_Substitution().assign!(SubExpression)(bind_expr)) || (parse_Terminal().assign!(SubExpression)(bind_expr)) || (parse_Range().assign!(SubExpression)(bind_expr)) || (parse_Regexp().assign!(SubExpression)(bind_expr)) || (parse_GroupExpr().assign!(SubExpression)(bind_expr)) || (parse_OptionalExpr().assign!(SubExpression)(bind_expr)) || (parse_ZeroOrMoreExpr().assign!(SubExpression)(bind_expr)) || (parse_NegateExpr().assign!(SubExpression)(bind_expr)) || (parse_TestExpr().assign!(SubExpression)(bind_expr)) || (parse_LiteralExpr().assign!(SubExpression)(bind_expr)) || (parse_CustomTerminal().assign!(SubExpression)(bind_expr))){ 
    807813                clearErrors(); 
    808                 goto match63
     814                goto match67
    809815            }else{ 
    810816                setError("Expected Production, Substitution, Terminal, Range, Regexp, GroupExpr, OptionalExpr, ZeroOrMoreExpr, NegateExpr, TestExpr, LiteralExpr or CustomTerminal."); 
    811817                position = start59; 
    812                 goto mismatch64
    813             } 
    814         } 
    815     match63
     818                goto mismatch68
     819            } 
     820        } 
     821    match67
    816822        debug writefln("parse_SubExpression() PASS"); 
    817823        return ResultT!(SubExpression)(bind_expr); 
    818     mismatch64
     824    mismatch68
    819825        position = start58; 
    820826        return ResultT!(SubExpression)(); 
     
    839845            uint start61 = position; 
    840846            if(!(parse_Identifier().assign!(String)(bind_name))){ 
    841                 goto mismatch68
    842             } 
    843             if(!(parse_WS().success)){ 
    844                 goto mismatch68
     847                goto mismatch72
     848            } 
     849            if(!(parse_WS().success)){ 
     850                goto mismatch72
    845851            } 
    846852            {//OptionalExpr 
     
    848854                    uint start63 = position; 
    849855                    if(!(terminal("!(").success)){ 
    850                         goto mismatch70
     856                        goto mismatch74
    851857                    } 
    852858                    if(!(parse_WS().success)){ 
    853                         goto mismatch70
     859                        goto mismatch74
    854860                    } 
    855861                    if(!(parse_ProductionArg().assignCat!(ProductionArg[])(bind_args))){ 
    856                         goto mismatch70
     862                        goto mismatch74
    857863                    } 
    858864                    {//ZeroOrMoreExpr 
    859865                        uint start64 = position; 
    860866                        uint termPos65; 
    861                     loop71
     867                    loop75
    862868                        termPos65 = position; 
    863869                        if(terminal(")").success){ 
    864                             goto loopend72; 
     870                            goto loopend76; 
     871                        }else{ 
     872                            goto exprStart77; 
    865873                        } 
     874                    exprStart77: 
    866875                        {//Expression 
    867876                            uint start66 = position; 
    868877                            if((parse_WS().success && terminal(",").success && parse_WS().success && parse_ProductionArg().assignCat!(ProductionArg[])(bind_args))){ 
    869878                                clearErrors(); 
    870                                 goto loop71
     879                                goto loop75
    871880                            }else{ 
    872881                                setError("Expected WS."); 
    873882                                position = start66; 
    874                                 goto loopend72
     883                                goto loopend76
    875884                            } 
    876885                        } 
    877                     loopend72
     886                    loopend76
    878887                        {/*do nothing*/} 
    879888                    } 
    880                     goto match69
    881                 mismatch70
     889                    goto match73
     890                mismatch74
    882891                    {/*do nothing*/} 
    883892                    position = start63; 
    884893                    {/*do nothing*/} 
    885                 match69
     894                match73
    886895                    clearErrors(); 
    887896                    {/*do nothing*/} 
     
    898907                } 
    899908            } 
    900             goto match67
    901         mismatch68
     909            goto match71
     910        mismatch72
    902911            setError("Expected Identifier."); 
    903912            position = start61; 
    904             goto mismatch66
    905         match67
    906             clearErrors(); 
    907             goto match65
    908         } 
    909     match65
     913            goto mismatch70
     914        match71
     915            clearErrors(); 
     916            goto match69
     917        } 
     918    match69
    910919        debug writefln("parse_Production() PASS"); 
    911920        ResultT!(Production) passed = ResultT!(Production)(new Production(bind_name,bind_binding,bind_args)); 
    912921        return passed; 
    913     mismatch66
     922    mismatch70
    914923        position = start60; 
    915924        ResultT!(Production) failed = ResultT!(Production)(); 
     
    934943            if((parse_StringProductionArg().assign!(ProductionArg)(bind_arg)) || (parse_BindingProductionArg().assign!(ProductionArg)(bind_arg))){ 
    935944                clearErrors(); 
    936                 goto match73
     945                goto match78
    937946            }else{ 
    938947                setError("Expected StringProductionArg or BindingProductionArg."); 
    939948                position = start70; 
    940                 goto mismatch74
    941             } 
    942         } 
    943     match73
     949                goto mismatch79
     950            } 
     951        } 
     952    match78
    944953        debug writefln("parse_ProductionArg() PASS"); 
    945954        return ResultT!(ProductionArg)(bind_arg); 
    946     mismatch74
     955    mismatch79
    947956        position = start69; 
    948957        return ResultT!(ProductionArg)(); 
     
    966975            if((parse_String().assign!(String)(bind_value))){ 
    967976                clearErrors(); 
    968                 goto match75
     977                goto match80
    969978            }else{ 
    970979                setError("Expected String."); 
    971980                position = start72; 
    972                 goto mismatch76
    973             } 
    974         } 
    975     match75
     981                goto mismatch81
     982            } 
     983        } 
     984    match80
    976985        debug writefln("parse_StringProductionArg() PASS"); 
    977986        ResultT!(StringProductionArg) passed = ResultT!(StringProductionArg)(new StringProductionArg(bind_value)); 
    978987        return passed; 
    979     mismatch76
     988    mismatch81
    980989        position = start71; 
    981990        ResultT!(StringProductionArg) failed = ResultT!(StringProductionArg)(); 
     
    10001009            if((parse_Identifier().assign!(String)(bind_value))){ 
    10011010                clearErrors(); 
    1002                 goto match77
     1011                goto match82
    10031012            }else{ 
    10041013                setError("Expected Identifier."); 
    10051014                position = start74; 
    1006                 goto mismatch78
    1007             } 
    1008         } 
    1009     match77
     1015                goto mismatch83
     1016            } 
     1017        } 
     1018    match82
    10101019        debug writefln("parse_BindingProductionArg() PASS"); 
    10111020        ResultT!(BindingProductionArg) passed = ResultT!(BindingProductionArg)(new BindingProductionArg(bind_value)); 
    10121021        return passed; 
    1013     mismatch78
     1022    mismatch83
    10141023        position = start73; 
    10151024        ResultT!(BindingProductionArg) failed = ResultT!(BindingProductionArg)(); 
     
    10341043            uint start76 = position; 
    10351044            if(!(terminal(".").success)){ 
    1036                 goto mismatch82
     1045                goto mismatch87
    10371046            } 
    10381047            if(!(parse_Identifier().assign!(String)(bind_name))){ 
    1039                 goto mismatch82
    1040             } 
    1041             if(!(parse_WS().success)){ 
    1042                 goto mismatch82
     1048                goto mismatch87
     1049            } 
     1050            if(!(parse_WS().success)){ 
     1051                goto mismatch87
    10431052            } 
    10441053            {//OptionalExpr 
     
    10521061                } 
    10531062            } 
    1054             goto match81
    1055         mismatch82
     1063            goto match86
     1064        mismatch87
    10561065            {/*do nothing*/} 
    10571066            position = start76; 
    1058             goto mismatch80
    1059         match81
    1060             clearErrors(); 
    1061             goto match79
    1062         } 
    1063     match79
     1067            goto mismatch85
     1068        match86
     1069            clearErrors(); 
     1070            goto match84
     1071        } 
     1072    match84
    10641073        debug writefln("parse_Substitution() PASS"); 
    10651074        ResultT!(Substitution) passed = ResultT!(Substitution)(new Substitution(bind_name,bind_binding)); 
    10661075        return passed; 
    1067     mismatch80
     1076    mismatch85
    10681077        position = start75; 
    10691078        ResultT!(Substitution) failed = ResultT!(Substitution)(); 
     
    10881097            uint start80 = position; 
    10891098            if(!(terminal("(").success)){ 
    1090                 goto mismatch86
    1091             } 
    1092             if(!(parse_WS().success)){ 
    1093                 goto mismatch86
     1099                goto mismatch91
     1100            } 
     1101            if(!(parse_WS().success)){ 
     1102                goto mismatch91
    10941103            } 
    10951104            if(!(parse_Expression().assign!(Expression)(bind_expr))){ 
    1096                 goto mismatch86
    1097             } 
    1098             if(!(parse_WS().success)){ 
    1099                 goto mismatch86
     1105                goto mismatch91
     1106            } 
     1107            if(!(parse_WS().success)){ 
     1108                goto mismatch91
    11001109            } 
    11011110            if(!(terminal(")").success)){ 
    1102                 goto mismatch86
    1103             } 
    1104             if(!(parse_WS().success)){ 
    1105                 goto mismatch86
     1111                goto mismatch91
     1112            } 
     1113            if(!(parse_WS().success)){ 
     1114                goto mismatch91
    11061115            } 
    11071116            {//OptionalExpr 
     
    11151124                } 
    11161125            } 
    1117             goto match85
    1118         mismatch86
     1126            goto match90
     1127        mismatch91
    11191128            {/*do nothing*/} 
    11201129            position = start80; 
    1121             goto mismatch84
    1122         match85
    1123             clearErrors(); 
    1124             goto match83
    1125         } 
    1126     match83
     1130            goto mismatch89
     1131        match90
     1132            clearErrors(); 
     1133            goto match88
     1134        } 
     1135    match88
    11271136        debug writefln("parse_GroupExpr() PASS"); 
    11281137        ResultT!(GroupExpr) passed = ResultT!(GroupExpr)(new GroupExpr(bind_expr,bind_binding)); 
    11291138        return passed;</