//Parser generated by rustlr for grammar mjenum
#![allow(unused_variables)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
#![allow(unused_parens)]
#![allow(unused_mut)]
#![allow(unused_imports)]
#![allow(unused_assignments)]
#![allow(dead_code)]
#![allow(unreachable_patterns)]
#![allow(irrefutable_let_patterns)]
extern crate rustlr;
use rustlr::{Tokenizer,TerminalToken,ZCParser,ZCRProduction,Stateaction,decode_action};
use rustlr::{StrTokenizer,RawToken,LexSource};
use std::collections::{HashMap,HashSet};
use rustlr::LBox;
use crate::enumabsyn::*;
use crate::enumabsyn::Declaration::*;
use crate::enumabsyn::Expr::*;
use crate::enumabsyn::Stat::*;
static SYMBOLS:[&'static str;59] = ["_WILDCARD_TOKEN_","ID","STRING","BOOL","INTEGER","class","public","static","void","main","String","extends","return","length","(",")","[","]",";","DOT","!",",","new","this","LBR","RBR","OROR","int","boolean","if","else","while","==","=","+","-","*","/","<","&&","MOD","Program","MainCl","ClassDec","ClassDecl","Extension","VarDec","MethodDec","Decl","FormalLst","FormalRst","Type","Stat","Stats","Exp","ExpLst","ExpRst","START","EOF"];
static TABLE:[u64;1285] = [180388691969,176093790209,21475033088,281663955533825,281496451678210,281724084944898,563199061524483,844429225426944,1125921382137856,1126084590829569,1126149014945794,1407477963292672,1689098968563714,1688871335297026,1970329132531712,2251825584144384,2533468064710657,2533377870004226,2533322035757056,2814779832729600,3096443788394497,3096340709048320,3096259104538624,3096345004081152,3096229039702016,3096267694538752,3377802801053696,3659209058353152,3940752754606082,3940653970358274,3940709804933122,4222227731251202,4222184781578242,4222128947003394,4503659758157826,4503603923582978,4503702707830786,4785177684606978,4785143324999680,4785078900359170,5066652661186562,5066553876938754,5066609711513602,5348127637045250,5629525304672258,5629542484541442,5629619793952770,5629503829835778,5629606909050882,5629705694150657,5629533894606850,5629615498985474,5911013167202304,6192522503716864,6473967415066624,6474031840231424,6474040429576192,6474044724609024,6474126329643009,6473928760229888,6473950236049408,6474143509446657,6473958825066496,6474122034806785,6755459572629504,7036977498095618,7036934548422658,7036878713847810,7318598502842370,7318370869575682,7599828668252160,7881303643652098,7881415312801794,7881342298357762,7881419607769090,7881406722867202,7881333708423170,7881325118488578,8162993370103809,8162894584872960,8162890289840128,8162808685330432,8162778620493824,8162817275330560,8444275071844354,8444356676222978,8444369561124866,8444292251713538,8444253597007874,8444365266157570,8444283661778946,8725767229931520,9007276566446080,9007340991021056,9288678528843776,9570217930129408,9851628480299010,9851757329317890,9851710084677634,9851641365200898,9851675724939266,9851637070233602,9851667135004674,9851722969579522,9851731559514114,9851748739383298,9851753034350594,9851632775266306,9851649955135490,9851740149448706,9851727264546818,9851744444416002,9851658545070082,9851684314873858,9851718674612226,10133112049369088,10133107754205184,10133193653878784,10133103459303424,10133331092373505,10133116344532992,10133159294074880,10133185063550976,10133197948649472,10414634270982144,10696122132660224,10977670124404736,10977674419437568,10977635764535296,10977687304011776,10977691598913536,10977695893815296,10977661534011392,10977592814927872,10977601405124608,10977683009437696,10977605699371008,10977678714142720,11259011956211712,11259016251375616,11259007661047808,11259093560721408,11259097855492096,11259084970393600,11259003366146048,11259059200917504,11259231000723457,11540585717432322,11540538472792066,11540624372137986,11540542767759362,11540611487236098,11540645846974466,11540555652661250,11540547062726658,11540628667105282,11540620077170690,11540641552007170,11540564242595842,11540632962072578,11540637257039874,11540551357693954,11822112233881602,11822107938914306,11822116528848898,11822026334535682,11822120823816194,11822103643947010,11822030629502978,11822095054012418,11822017744601090,11822039219437570,11822086464077826,11822013449633794,11822060694274050,11822099348979714,11822022039568386,12103582915690498,12103587210657794,12103578620723202,12103561440854018,12103505606279170,12103570030788610,12103488426409986,12103535671050242,12103492721377282,12103514196213762,12103591505625090,12103497016344578,12103595800592386,12103574325755906,12103501311311874,12385070777171970,12384963402989570,12385045007368194,12384989172793346,12385036417433602,12384976287891458,12384980582858754,12385057892270082,12385062187237378,12385066482204674,12385049302335490,12385010647629826,12384967697956866,12384971992924162,12385053597302786,12666386839764992,12666605884342273,12666382544601088,12666434084470784,12666468444274688,12666378249699328,12666472739045376,12666391134928896,12666459853946880,12948067976282113,12947969188954112,12947883289411584,12947964897001472,12947891879411712,12947853224574976,13229491412205570,13229495707172866,13229482822270978,13229487117238274,13229388332990466,13229478527303682,13229396922925058,13229414102794242,13229474232336386,13229405512859650,13229392627957762,13229469937369090,13229461347434498,13229435577630722,13229401217892354,13511017929834497,13510863307472898,13510803177996288,13511009339834369,13510833242832896,13510841832833024,13510919142375424,13510914847342592,13792278158245888,14073753135022080,14355228109963264,14355240995192832,14355309714210816,14355236700028928,14355455745064961,14355322599309312,14355318304538624,14355232404865024,14355283944734720,14636797576019968,14636715971903488,14636707381575680,14636703086673920,14636758921445376,14636793281249280,14636784690921472,14636930721841153,14636711676739584,14918268257959936,14918182358286336,14918186653450240,14918405698617345,14918272552730624,14918178063384576,14918259667632128,14918190948614144,14918233898156032,15199653040095232,15199665925324800,15199661630160896,15199747529441280,15199657334996992,15199734644342784,15199880675393537,15199708874866688,15199743234670592,15481140902035456,15481132311707648,15481136606871552,15481209621053440,15481222506151936,15481183851577344,15481218211381248,15481128016805888,15481355652169729,15762830628945921,15762615878746112,15762602993516544,15762611583582208,15762693188091904,15762658828288000,15762684597764096,15762607288418304,15762697482862592,16044159574474752,16044172459573248,16044090855456768,16044305605722113,16044082265128960,16044168164802560,16044133804998656,16044077970227200,16044086560292864,16325552946937856,16325557241839616,16325561537003520,16325634551185408,16325780582498305,16325643141513216,16325647436283904,16325565832167424,16325608781709312,16607040808878080,16607122412994560,16607032218550272,16607255559274497,16607083758419968,16607027923648512,16607036513714176,16607109527896064,16607118118223872,16888558735130624,16888584504606720,16888593094934528,16888511490424832,16888502900359168,16888597389705216,16888507195260928,16888515785588736,16888730536050689,17169986464776194,17170093838958594,17170016529547266,17170098133925890,17170007939612674,17170076659089410,17170068069154818,17170106723860482,17170102428893186,17170025119481858,17170033709416450,17169977874841602,17170059479220226,17169999349678082,17169990759743490,17170089543991298,17170072364122114,17170080954056706,17169982169808898,17451517278158850,17451611767439362,17451525868093442,17451620358160384,17451530163716096,17451585997635586,17451598883782656,17451607473782784,17451603178487808,17451521573126146,17451538752995330,17451616062406658,17451560227831810,17451594588749824,17451512983191554,17733060975067136,17733082450493440,17733091039969280,17733073860493312,17733035205591040,17733086745067520,17733078155198464,17733069565460480,17732987962523648,17733005140426752,17732992255983616,17733095334871040,18014467234267136,18014458640334850,18295933621108736,18577412892852224,18858827740086272,19140362846404608,19421842115461122,19421846410428418,19421928014807042,19421837820493826,19421945194676226,19421923719839746,19421936604741634,19421910834937858,19421863590297602,19421940899708930,19421885065134082,19421850705395714,19421919424872450,19421932309774338,19421855000363010,19421833528213504,19703317092040706,19703415876943872,19703360042565632,19703321387008002,19703402992173056,19703325681975298,19703312797073410,19703398697467904,19703329977401344,19703407287468032,19703420171845632,19703394402435072,19703385811517442,19703338566877186,19703411581321218,19984796363653122,19984800658620418,19984804954112000,19984813543522306,19984860788162562,19984835018358786,19984792068685826,19984882264178688,19984895147900930,19984886557966338,19984869378097154,19984890852933634,19984787773718530,19984873673064450,19984877968031746,20266361534414850,20266271340101634,20266275635068930,20266344355856384,20266309994807298,20266352945594368,20266267045134338,20266335764611074,20266365829382146,20266357240889344,20266262750167042,20266288519970818,20266279930822656,20266370125266944,20266348650889216,20547746317008898,20547784972697600,20547836511322114,20547810742173696,20547763496878082,20547845101977600,20547819332567040,20547832217600000,20547754907533312,20547737727074306,20547742022041602,20547750611976194,20547823627599872,20547827922305024,20547840807075840,20829320078688256,20829212703326210,20829294307704834,20829298602672130,20829221293260802,20829238473129986,20829307194310656,20829315782541314,20829229884243968,20829216998293506,20829302897639426,20829225588228098,20829259947966466,20829311487574018,20829285717770242,21110696270299138,21110760694808578,21110687680364546,21110786464612354,21110704860954624,21110782171021312,21110691975331842,21110734925004802,21110795055398912,21110790760497152,21110777875726336,21110713450168322,21110773581021184,21110700565266434,21110769285988352,21392257147731968,21392252852436992,21392179837665280,21392235672305664,21392265737207808,21392248557731840,21392270032109568,21392209902829568,21392171250155520,21392261442306048,21392244262699008,21392166953222144,21673663403327490,21673740712738818,21673684878163970,21673654814375936,21673727829147648,21673650518425602,21673732124442624,21673637633523714,21673723534442496,21673719237902338,21673710647967746,21673736417771522,21673646223458306,21673745008820224,21673641928491010,21955129791086592,21955194214744066,21955121200300034,21955207101153280,21955202805858304,21955112610365442,21955211394613250,21955215689580546,21955198509711362,21955159855005698,21955219985530880,21955185624809474,21955138380169218,21955116905332738,21955125495267330,22236682076291074,22236596176945154,22236591881977858,22236660601454594,22236677781323778,22236587587010562,22236690666225666,22236604767797248,22236694961192962,22236669191389186,22236673486356482,22236634831650818,22236613356814338,22236686371258370,22236600471912450,22518135579344898,22518066859868162,22518075449802754,22518062564900866,22518071154835458,22518088334704642,22518157054181378,22518152759214082,22518109809541122,22518148464246786,22518079744770050,22518161349148674,22518169939083266,22518165644115970,22518144169279490,22799486001348608,22799705047564289,22799490296512512,22799477411282944,22799559015530496,22799546129645568,22799481706184704,22799567605858304,22799533246054400,22799571900628992,23081012520615936,23362526152097792,23643962469187586,23644112798023681,23643988244037632,23925476105715712,24206908129607680,24206856589737984,24206942489411584,24206946784182272,24207084226543617,24206852294836224,24206912425230338,24206860884901888,24206933899083776,24206865180065792,24207079931510785,24488486185467906,24488404581089282,24488400286121986,24488494775402498,24488473300566018,24488387401220098,24488460415664130,24488395991154690,24488477595533314,24488490480435202,24488434645860354,24488391696187394,24488469005598722,24488481890500610,24488413171023874,24769965457735680,24769956868259840,24769943983226880,24769961162833920,24769870971273216,24769866673750016,24769909623357440,24769969752637440,24769935392833536,24769952572964864,24769879558193152,24769948278259712,25051436139479042,25051444729413634,25051341650198530,25051418959609858,25051350240133122,25051423254577154,25051337355231234,25051410369675266,25051440434446338,25051345945165826,25051363125035010,25051427549544450,25051431844511746,25051384599871490,25051354535100418,25332872459517954,25332760790368258,25332790855139330,25332799445073922,25332881049452546,25332842394746882,25332756495400962,25332833804812290,25332850984681474,25332782265204738,25332863869583362,25332808035008514,25332855279648770,25332765085335554,25332975543582721,25332846689714178,25332752200433666,25332868164550658,25614287306096642,25895818117644288,25895732218101760,25895813822611456,25895702153265152,25895916907134977,25895740808101888,26177177130565634,26177267324878850,26177271619846146,26177288799715330,26177181425532930,26177297389649922,26177215785271298,26177224375205890,26177258734944258,26177207195336706,26177305979584514,26177232965140482,26177400473845761,26177185720500226,26177190015467522,26177275914813442,26177280209780738,26177293094682626,26458802433228800,26458759483621376,26458729418457088,26458738011734016,26458798138523648,26458806728523776,26458712239046658,26458819612901376,26458811023097856,26458716534013952,26458815317999616,26458793843490816,26458888335523841,26458785253097472,26740187218706432,27021687961944066,27021670782074882,27021743796518914,27021752386453506,27021748091486210,27021709436780546,27021666487107586,27021756681420802,27021662192140290,27021675077042178,27021760976388098,27021769566322690,27021679372009474,27021765271355394,27021735206584322,27303175827095552,27303167233228800,27303188706164736,27303197301735424,27303171527999488,27303205891997696,27303081333555200,27303304675983361,27303296086376449,27303291786035201,27303124287815680,27303180122324992,27303107101655040,27303132873424896,27303158642900992,27303085628719104,27303077042782208,27303089923883008,27303115691655168,27303270316441601,27303193001197568,27584552019951616,27866254629404673,27866130075942912,27866147255156736,27866138659586048,27866035582140416,27866074241236992,27866057055076352,27866246039797761,27866125780516864,27866026996203520,27866142954618880,27866065645076480,27866155845419008,27866117186650112,27866121481420800,27866082826846208,27866031286976512,27866039877304320,27866220269862913,27866108596322304,27866241739456513,28147562099245058,28428981240397824,28429032780267520,28428985535561728,28428989830725632,28428976945496064,28429067140071424,28429058549743616,28429204583481345,28429071434842112,28710559296651266,28710610836258818,28710593656389634,28710597951356930,28710585066455042,28710619426193410,28710606541291522,28710537821814786,28710602246324226,28710512052011010,28710524936912898,28710516346978306,28710520641945602,28710529231880194,28710615131226114,28991982738276352,29273509250727936,29273565085106176,29273543610597376,29273547905630208,29273479189889024,29273466305052672,29273535020204032,29273552200335360,29273556495630336,29273560790204416,29273569380007936,29554984227045378,29555027176718338,29555018586783746,29555040061620226,29554941277372418,29555022881751042,29555014296272896,29554876851027970,29555035766652930,29555031471685634,29554954162274306,29555009996849154,29555044356587522,29836442022117378,29836467791921154,29836407662379010,29836360417738754,29836450612051970,29836463496953858,29836381892575234,29836472086888450,29836454907019266,29836399072444418,29836433432182786,29836390482509826,29836364712706050,29836480676823042,29836575172395009,29836446317084674,29836356122771458,29836351827804162,30117908409548802,30117947064254466,30117929884385282,30117826805170178,30117921294450690,30117938474319874,30117831100137474,30117916999483394,30117865459875842,30117874049810434,30117856869941250,30117925589417986,30117951359221762,30117835395104770,30117839690072066,30117955654189058,30117882639745026,30117942769287170,30399357622157312,30680815412707330,30680875542249474,30680905607020546,30680789642903554,30680892722118658,30680888427151362,30680879837216770,30680785347936258,30680776758001666,30680866952314882,30680832592576514,30680806822772738,30680897017085954,30680871247282178,30680824002641922,30680781052968962,30680858362380290,30962281798500354,30962363402878978,30962273208565762,30962367697846274,30962354812944386,30962251733729282,30962290388434946,31243735302668288,31243808316850176,31243954351046657,31243731007504384,31243726712602624,31243782547374080,31243816907177984,31243739597832192,31243821201948672,31525412147953665,31525287591936000,31525261817085954,31806779750547456,32088319147114496,32088297672736768,32088301967441920,32088306262736896,32088293377703936,32088387871309825,32088211773259778,32088228952670208,32088284787310592,32088314852212736,32088237545947136,32088216068227072,32088310557310976,32088259017834496,32369639504674816,32369626619445248,32369716814020608,32369635209510912,32369630914347008,32369854258151425,32369682454216704,32369708223692800,32369721108791296,32651101601660928,32932632407638016,32932576572866560,32932580867768320,32932666767441920,32932658177114112,32932671062212608,32932585162932224,32932589458096128,32932804211703809,33214064434806784,33214060139642880,33214133153824768,33214051549577216,33214279188480001,33214055844478976,33214141744152576,33214146038923264,33214107384348672,33495638193799168,33495745574010881,33495754163617793,33495629611204608,33495556589289472,33495526530416640,33495741273669633,33495539411517440,33495621015633920,33495642488832000,33495535116353536,33495719804076033,33495573775450112,33495530821189632,33495625314729984,33495646789369856,33495582361059328,33495608130535424,33495616720863232,33495565179289600,33495655379632128,33777057337769984,33777083107246080,33777095992344576,33777014388228096,33777001502998528,33777005797900288,33777010093064192,33777229142032385,33777091697573888,34058635394285568,34058643984089088,34058540905201664,34058622509711360,34058609624285184,34058631099711488,34058583854809088,34058553789644800,34058639689187328,34058626804416512,34058549499985920,34058618214678528,34340011584258050,34621443610312706,34621671243579394,34902961540431874,35184526711259136,35184539596029952,35184483761651712,35184522416553984,35184453696487424,35184436521992192,35184518121521152,35184543890931712,35184440812044288,35184509531127808,35184531006554112,35184535301128192,35465928672870402,35465993097379842,35465958737641474,35465997392347138,35466001687314434,35465907203801088,35465915787968514,35466018867183618,35466005982281730,35466010277249026,35465984507445250,35466014572216322,35747403649908736,35747433715073024,35747480959975424,35747468074942464,35747476664680448,35747472369975296,35747493844353024,35747485254549504,35747390765465600,35747459484549120,35747395065479168,35747489549451264,36028934461259776,36028874337222656,36028955936686080,36028878626619392,36028947346685952,36028964526161920,36028908691783680,36028951641391104,36028943051653120,36028960231260160,36028968821063680,36028865742176256,36310396551364610,36310387961430018,36310357896658946,36310375076528130,36310366486593538,36310276292280322,36310400846331906,36310280587247618,36310306357051394,36310323536920578,36310314946985986,36310284882214914,36310379371495426,36310370781560834,36310405141299202,36310332126855170,36310289177182210,36310392256397314,36591910184681472,36591884414681088,36591901594812416,36591914479583232,36591828580040704,36591893005074432,36591897300107264,36591858645204992,36591905890107392,36591815695597568,36591918774484992,36591811405807616,36873230541127682,36873342210277378,36873239131062274,36873337915310082,36873234836094978,36873282080735234,36873256310931458,36873346505244674,36873273490800642,36873329325375490,36873316440473602,36873350800211970,36873307850539010,36873355095179266,36873264900866050,36873325030408194,36873226246160386,36873320735440898,37154821486608384,37154800011968512,37154701227655168,37154748472688640,37154739876528128,37154894501314561,37154915970908161,37154757058297856,37154731286528000,37154705518428160,37154830076870656,37154709813592064,37154714108755968,37154782827773952,37154791418101760,37154928860856321,37154812891037696,37154795712872448,37154817186070528,37154920273084417,37436236330631170,37436257804484608,37436270689583104,37436403836911617,37436408134762497,37436176200237056,37436189085466624,37436180495138816,37436266394812416,37436232035008512,37436184790302720,37717728486490114,37717801500934146,37717792910999554,37717788622258176,37717810090868738,37717758551261186,37717784321064962,37717715601588226,37717797205966850,37717805795901442,37717818680803330,37717814385836034,37999156217577474,37999220642086914,37999250706857986,37999173397446658,37999134742740994,37999181987381250,37999164807512066,37999207757185026,37999224937054210,37999237821956098,37999242116923394,37999126152806402,37999139037708290,37999216347119618,37999229232021506,37999255001825282,37999130447773698,37999246411890690,38280695619715072,38280631193370624,38280614015598592,38280601134497792,38280639783370752,38280794408157185,38280815877750785,38280609720434688,38280721393451008,38280729983713280,38280682734616576,38280717092913152,38280828767698945,38280699918811136,38280648379531264,38280656965140480,38280691324944384,38280712797880320,38280605425270784,38280820180123649,38562084696031234,38562114760802306,38562204955115522,38562196365180930,38562088990998530,38562166300409858,38562200667619328,38562192070213634,38562187775246338,38562157710475266,38562106170867714,38562131940671490,38562179185311746,38562174890344450,38562076106096642,38562123350736898,38562170595377154,38562080401063938,38843611219886080,39125038945730560,39125081895272448,39125026060500992,39125030355402752,39125116255076352,39125253700386817,39125107664748544,39125120549847040,39125034650566656,39406556870868994,39406531101065218,39406548280934402,39406629885313026,39406501036294146,39406621295378434,39406612705443842,39406513921196034,39406539690999810,39406595525574658,39406604115509250,39406591230607362,39406505331261442,39406582640672770,39406599820541954,39406509626228738,39406625590345730,39406617000411138,39688203651252225,39688031848693760,39687984603987968,39688190761304065,39688057618169856,39688066208497664,39688096277004288,39688091976466432,39688195063939073,39688006076923904,39688104867266560,39688169291710465,39687980308824064,39688014666924032,39688087681433600,39688070503268352,39688074802364416,39687976018051072,39687988899151872,39688023263084544,39969592724815874,39969601314750466,39969515415404546,39969528300306434,39969614199652354,39969605609717762,39969618494619650,39969584134881282,39969597019783170,39969558365077506,39969609904685058,39969524011827200,40251089176821760,40250990392836096,40251084881920000,40251059111919616,40251003277279232,40251076292050944,40251080587345920,40251067702312960,40251093471723520,40251071997345792,40250998988603392,40251033342443520,40532405237972994,40532525497057282,40532512612155394,40532431007776770,40532504022220802,40532529792024578,40532409532940290,40532456777580546,40532491137318914,40532495432286210,40532499727253506,40532521202089986,40532439597711362,40532448187645954,40532400943005698,40532482547384322,40532516907122690,40532413827907586,40813970409324546,40813905984815106,40813914574749698,40813875920044034,40814004769062914,40813931754618882,40813880215011330,40814000474095618,40813987589193730,40813957524422658,40813996179128322,40813923164684290,40813966114357250,40813978999259138,40813884509978626,40813888804945922,40813991884161026,40813974704291842,41095453975904258,41095432501067778,41095355191656450,41095359486623746,41095398141329410,41095449680936962,41095466860806146,41095441091002370,41095445385969666,41095406731264002,41095475450740738,41095380961460226,41095462565838850,41095350896689154,41095471155773442,41095363781591042,41095389551394818,41095479745708034,];
fn _semaction_rule_0_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Program<'lt> {
let mut cs = if let RetTypeEnum::Enumvariant_9(_x_9)=parser.popstack().value { _x_9 } else {<Vec<LBox<ClassDec<'lt>>>>::default()}; let mut _mc_ = if let RetTypeEnum::Enumvariant_7(_x_7)=parser.popstack().value { _x_7 } else {<Mainclass<'lt>>::default()}; let mut mc = parser.lbx(0,_mc_); Program {mainclass:mc, otherclasses:cs } }
fn _semaction_rule_1_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Mainclass<'lt> {
let mut _item16_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item15_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut thebody = if let RetTypeEnum::Enumvariant_18(_x_18)=parser.popstack().value { _x_18 } else {<Vec<LBox<Stat<'lt>>>>::default()}; let mut _item13_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item12_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut an = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut _item10_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item9_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item8_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item7_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item6_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item5_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item4_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item3_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item2_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut cn = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()};
Mainclass{classname:cn,
argvname:an,
body: Blockst(thebody),
}
}
fn _semaction_rule_2_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<ClassDec<'lt>>> {
Vec::new() }
fn _semaction_rule_3_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<ClassDec<'lt>>> {
let mut _cl_ = if let RetTypeEnum::Enumvariant_8(_x_8)=parser.popstack().value { _x_8 } else {<ClassDec<'lt>>::default()}; let mut cl = parser.lbx(1,_cl_); let mut cs = if let RetTypeEnum::Enumvariant_9(_x_9)=parser.popstack().value { _x_9 } else {<Vec<LBox<ClassDec<'lt>>>>::default()}; cs.push(cl); cs }
fn _semaction_rule_4_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> ClassDec<'lt> {
let mut _item5_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut ds = if let RetTypeEnum::Enumvariant_13(_x_13)=parser.popstack().value { _x_13 } else {<Vec<LBox<Declaration<'lt>>>>::default()}; let mut _item3_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut sup = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut name = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()};
let mut vdecs=Vec::new();
let mut mdecs=Vec::new();
separatedecs(ds,&mut vdecs,&mut mdecs); /*split var and method declarations*/
ClassDec {superclass:sup,
classname:name,
vars:vdecs,
methods:mdecs}
}
fn _semaction_rule_5_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> &'lt str {
let mut sup = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; sup }
fn _semaction_rule_6_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> &'lt str {
"Object" }
fn _semaction_rule_7_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> VarDec<'lt> {
let mut _item2_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut v = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut t = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; VarDec{dname:v,dtype:t,initval:Nothing,} }
fn _semaction_rule_8_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> VarDec<'lt> {
let mut _item4_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut e = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut _item2_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut v = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut t = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; VarDec{dname:v,dtype:t,initval:e}}
fn _semaction_rule_9_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> MethodDec<'lt> {
let mut _item8_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut mbody = if let RetTypeEnum::Enumvariant_18(_x_18)=parser.popstack().value { _x_18 } else {<Vec<LBox<Stat<'lt>>>>::default()}; let mut _item6_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item5_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut args = if let RetTypeEnum::Enumvariant_15(_x_15)=parser.popstack().value { _x_15 } else {<Vec<LBox<VarDec<'lt>>>>::default()}; let mut _item3_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut name = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut ty = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()};
MethodDec{ formals:args,
body: mbody,
classname:ty,
methodname:name, }
}
fn _semaction_rule_10_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<Declaration<'lt>>> {
Vec::new() }
fn _semaction_rule_11_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<Declaration<'lt>>> {
let mut v = if let RetTypeEnum::Enumvariant_11(_x_11)=parser.popstack().value { _x_11 } else {<VarDec<'lt>>::default()}; let mut ds = if let RetTypeEnum::Enumvariant_13(_x_13)=parser.popstack().value { _x_13 } else {<Vec<LBox<Declaration<'lt>>>>::default()}; ds.push(parser.lbx(1,Vdec(v))); ds }
fn _semaction_rule_12_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<Declaration<'lt>>> {
let mut m = if let RetTypeEnum::Enumvariant_12(_x_12)=parser.popstack().value { _x_12 } else {<MethodDec<'lt>>::default()}; let mut ds = if let RetTypeEnum::Enumvariant_13(_x_13)=parser.popstack().value { _x_13 } else {<Vec<LBox<Declaration<'lt>>>>::default()}; ds.push(parser.lbx(1,Mdec(m))); ds }
fn _semaction_rule_13_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<VarDec<'lt>>> {
Vec::new() }
fn _semaction_rule_14_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<VarDec<'lt>>> {
let mut frs = if let RetTypeEnum::Enumvariant_15(_x_15)=parser.popstack().value { _x_15 } else {<Vec<LBox<VarDec<'lt>>>>::default()}; let mut a = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut ty = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()};
frs.push(parser.lb(VarDec{dname:a,dtype:ty,initval:Nothing}));
frs
}
fn _semaction_rule_15_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<VarDec<'lt>>> {
Vec::new() }
fn _semaction_rule_16_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<VarDec<'lt>>> {
let mut frs = if let RetTypeEnum::Enumvariant_15(_x_15)=parser.popstack().value { _x_15 } else {<Vec<LBox<VarDec<'lt>>>>::default()}; let mut a = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut ty = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()};
frs.push(parser.lb(VarDec{dname:a,dtype:ty,initval:Nothing}));
frs
}
fn _semaction_rule_17_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> &'lt str {
let mut _item2_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; return "int[]"; }
fn _semaction_rule_18_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> &'lt str {
let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; return "boolean"; }
fn _semaction_rule_19_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> &'lt str {
let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; return "String"; }
fn _semaction_rule_20_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> &'lt str {
let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; return "int"; }
fn _semaction_rule_21_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> &'lt str {
let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; return "void"; }
fn _semaction_rule_22_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> &'lt str {
let mut c = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; c }
fn _semaction_rule_23_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<Stat<'lt>>> {
Vec::new() }
fn _semaction_rule_24_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<Stat<'lt>>> {
let mut _s_ = if let RetTypeEnum::Enumvariant_17(_x_17)=parser.popstack().value { _x_17 } else {<Stat<'lt>>::default()}; let mut s = parser.lbx(1,_s_); let mut sv = if let RetTypeEnum::Enumvariant_18(_x_18)=parser.popstack().value { _x_18 } else {<Vec<LBox<Stat<'lt>>>>::default()}; sv.push(s); sv }
fn _semaction_rule_25_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Stat<'lt> {
let mut _item2_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut sv = if let RetTypeEnum::Enumvariant_18(_x_18)=parser.popstack().value { _x_18 } else {<Vec<LBox<Stat<'lt>>>>::default()}; let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; Blockst(sv) }
fn _semaction_rule_26_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Stat<'lt> {
let mut _b_ = if let RetTypeEnum::Enumvariant_17(_x_17)=parser.popstack().value { _x_17 } else {<Stat<'lt>>::default()}; let mut b = parser.lbx(6,_b_); let mut _item5_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _a_ = if let RetTypeEnum::Enumvariant_17(_x_17)=parser.popstack().value { _x_17 } else {<Stat<'lt>>::default()}; let mut a = parser.lbx(4,_a_); let mut _item3_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _c_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut c = parser.lbx(2,_c_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; Ifstat(c, a, b) }
fn _semaction_rule_27_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Stat<'lt> {
let mut _a_ = if let RetTypeEnum::Enumvariant_17(_x_17)=parser.popstack().value { _x_17 } else {<Stat<'lt>>::default()}; let mut a = parser.lbx(4,_a_); let mut _item3_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _c_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut c = parser.lbx(2,_c_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; Ifstat(c,a,parser.lb(Nopst)) }
fn _semaction_rule_28_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Stat<'lt> {
let mut _s_ = if let RetTypeEnum::Enumvariant_17(_x_17)=parser.popstack().value { _x_17 } else {<Stat<'lt>>::default()}; let mut s = parser.lbx(4,_s_); let mut _item3_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _c_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut c = parser.lbx(2,_c_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; Whilest(c,s) }
fn _semaction_rule_29_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Stat<'lt> {
let mut _item3_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _e_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut e = parser.lbx(2,_e_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut v = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; Assignst(v,e) }
fn _semaction_rule_30_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Stat<'lt> {
let mut _item6_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _e_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut e = parser.lbx(5,_e_); let mut _item4_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item3_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _i_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut i = parser.lbx(2,_i_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _v_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut v = parser.lbx(0,_v_); ArAssignst(v,i,e) }
fn _semaction_rule_31_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Stat<'lt> {
let mut _item6_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item5_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut args = if let RetTypeEnum::Enumvariant_21(_x_21)=parser.popstack().value { _x_21 } else {<Vec<LBox<Expr<'lt>>>>::default()}; let mut _item3_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut m = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _obj_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut obj = parser.lbx(0,_obj_); Callstat(obj,m,args)}
fn _semaction_rule_32_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Stat<'lt> {
let mut _item2_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _e_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut e = parser.lbx(1,_e_); let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; Returnst(e) }
fn _semaction_rule_33_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Stat<'lt> {
let mut v = if let RetTypeEnum::Enumvariant_11(_x_11)=parser.popstack().value { _x_11 } else {<VarDec<'lt>>::default()}; Vardecst(v.dname,v.dtype,parser.lb(v.initval))}
fn _semaction_rule_34_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _b_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut b = parser.lbx(2,_b_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _a_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut a = parser.lbx(0,_a_); Binop("*",a,b) }
fn _semaction_rule_35_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _b_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut b = parser.lbx(2,_b_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _a_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut a = parser.lbx(0,_a_); Binop("+",a,b) }
fn _semaction_rule_36_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _b_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut b = parser.lbx(2,_b_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _a_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut a = parser.lbx(0,_a_); Binop("/",a,b) }
fn _semaction_rule_37_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _b_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut b = parser.lbx(2,_b_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _a_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut a = parser.lbx(0,_a_); Binop("-",a,b) }
fn _semaction_rule_38_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _b_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut b = parser.lbx(2,_b_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _a_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut a = parser.lbx(0,_a_); Binop("&&",a,b) }
fn _semaction_rule_39_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _b_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut b = parser.lbx(2,_b_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _a_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut a = parser.lbx(0,_a_); Binop("OROR",a,b) }
fn _semaction_rule_40_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _a_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut a = parser.lbx(1,_a_); let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; Notexp(a) }
fn _semaction_rule_41_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _b_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut b = parser.lbx(2,_b_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _a_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut a = parser.lbx(0,_a_); Binop("<",a,b) }
fn _semaction_rule_42_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _b_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut b = parser.lbx(2,_b_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _a_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut a = parser.lbx(0,_a_); Binop("%",a,b) }
fn _semaction_rule_43_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _b_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut b = parser.lbx(2,_b_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _a_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut a = parser.lbx(0,_a_); Binop("==",a,b) }
fn _semaction_rule_44_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _item3_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _i_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut i = parser.lbx(2,_i_); let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _a_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut a = parser.lbx(0,_a_); Binop("[]",a,i) }
fn _semaction_rule_45_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut field = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _obj_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut obj = parser.lbx(0,_obj_); Field(field,obj) }
fn _semaction_rule_46_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _item5_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut args = if let RetTypeEnum::Enumvariant_21(_x_21)=parser.popstack().value { _x_21 } else {<Vec<LBox<Expr<'lt>>>>::default()}; let mut _item3_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut f = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _obj_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut obj = parser.lbx(0,_obj_); Callexp(obj,f,args) }
fn _semaction_rule_47_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut i = if let RetTypeEnum::Enumvariant_5(_x_5)=parser.popstack().value { _x_5 } else {<i32>::default()}; Int(i) }
fn _semaction_rule_48_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut s = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; Strlit(s) }
fn _semaction_rule_49_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut b = if let RetTypeEnum::Enumvariant_4(_x_4)=parser.popstack().value { _x_4 } else {<bool>::default()}; Bool(b) }
fn _semaction_rule_50_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut x = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; Var(x) }
fn _semaction_rule_51_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; Thisptr }
fn _semaction_rule_52_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _item4_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _s_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut s = parser.lbx(3,_s_); let mut _item2_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item1_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; Newarray(s) }
fn _semaction_rule_53_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _item3_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut _item2_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut x = if let RetTypeEnum::Enumvariant_16(_x_16)=parser.popstack().value { _x_16 } else {<&'lt str>::default()}; let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; Newobj(x) }
fn _semaction_rule_54_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Expr<'lt> {
let mut _item2_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; let mut e = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; e }
fn _semaction_rule_55_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<Expr<'lt>>> {
Vec::new() }
fn _semaction_rule_56_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<Expr<'lt>>> {
let mut er = if let RetTypeEnum::Enumvariant_21(_x_21)=parser.popstack().value { _x_21 } else {<Vec<LBox<Expr<'lt>>>>::default()}; let mut _e_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut e = parser.lbx(0,_e_); er.push(e); er }
fn _semaction_rule_57_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<Expr<'lt>>> {
Vec::new() }
fn _semaction_rule_58_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Vec<LBox<Expr<'lt>>> {
let mut er = if let RetTypeEnum::Enumvariant_21(_x_21)=parser.popstack().value { _x_21 } else {<Vec<LBox<Expr<'lt>>>>::default()}; let mut _e_ = if let RetTypeEnum::Enumvariant_19(_x_19)=parser.popstack().value { _x_19 } else {<Expr<'lt>>::default()}; let mut e = parser.lbx(1,_e_); let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; er.push(e); er }
fn _semaction_rule_59_<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>) -> Program<'lt> {
let mut _item0_ = if let RetTypeEnum::Enumvariant_0(_x_0)=parser.popstack().value { _x_0 } else {<Program<'lt>>::default()}; <Program<'lt>>::default()}
pub fn make_parser<'lt>() -> ZCParser<RetTypeEnum<'lt>,()>
{
let mut parser1:ZCParser<RetTypeEnum<'lt>,()> = ZCParser::new(60,147);
let mut rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("start");
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Program");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_0(_semaction_rule_0_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("MainCl");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_7(_semaction_rule_1_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("ClassDecl");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_9(_semaction_rule_2_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("ClassDecl");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_9(_semaction_rule_3_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("ClassDec");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_8(_semaction_rule_4_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Extension");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_16(_semaction_rule_5_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Extension");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_16(_semaction_rule_6_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("VarDec");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_11(_semaction_rule_7_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("VarDec");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_11(_semaction_rule_8_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("MethodDec");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_12(_semaction_rule_9_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Decl");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_13(_semaction_rule_10_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Decl");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_13(_semaction_rule_11_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Decl");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_13(_semaction_rule_12_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("FormalLst");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_15(_semaction_rule_13_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("FormalLst");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_15(_semaction_rule_14_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("FormalRst");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_15(_semaction_rule_15_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("FormalRst");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_15(_semaction_rule_16_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Type");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_16(_semaction_rule_17_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Type");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_16(_semaction_rule_18_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Type");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_16(_semaction_rule_19_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Type");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_16(_semaction_rule_20_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Type");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_16(_semaction_rule_21_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Type");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_16(_semaction_rule_22_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Stats");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_18(_semaction_rule_23_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Stats");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_18(_semaction_rule_24_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Stat");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_17(_semaction_rule_25_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Stat");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_17(_semaction_rule_26_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Stat");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_17(_semaction_rule_27_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Stat");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_17(_semaction_rule_28_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Stat");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_17(_semaction_rule_29_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Stat");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_17(_semaction_rule_30_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Stat");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_17(_semaction_rule_31_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Stat");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_17(_semaction_rule_32_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Stat");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_17(_semaction_rule_33_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_34_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_35_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_36_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_37_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_38_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_39_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_40_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_41_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_42_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_43_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_44_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_45_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_46_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_47_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_48_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_49_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_50_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_51_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_52_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_53_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("Exp");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_19(_semaction_rule_54_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("ExpLst");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_21(_semaction_rule_55_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("ExpLst");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_21(_semaction_rule_56_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("ExpRst");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_21(_semaction_rule_57_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("ExpRst");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_21(_semaction_rule_58_(parser)) };
parser1.Rules.push(rule);
rule = ZCRProduction::<RetTypeEnum<'lt>,()>::new_skeleton("START");
rule.Ruleaction = |parser|{ RetTypeEnum::Enumvariant_0(_semaction_rule_59_(parser)) };
parser1.Rules.push(rule);
parser1.Errsym = "";
parser1.resynch.insert(";");
for i in 0..1285 {
let symi = ((TABLE[i] & 0x0000ffff00000000) >> 32) as usize;
let sti = ((TABLE[i] & 0xffff000000000000) >> 48) as usize;
parser1.RSM[sti].insert(SYMBOLS[symi],decode_action(TABLE[i]));
}
for s in SYMBOLS { parser1.Symset.insert(s); }
load_extras(&mut parser1);
return parser1;
} //make_parser
pub fn parse_with<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>, lexer:&mut mjenumlexer<'lt>) -> Result<Program<'lt>,Program<'lt>>
{
if let RetTypeEnum::Enumvariant_0(_xres_) = parser.parse(lexer) {
if !parser.error_occurred() {Ok(_xres_)} else {Err(_xres_)}
} else { Err(<Program<'lt>>::default())}
}//parse_with public function
pub fn parse_train_with<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>, lexer:&mut mjenumlexer<'lt>, parserpath:&str) -> Result<Program<'lt>,Program<'lt>>
{
if let RetTypeEnum::Enumvariant_0(_xres_) = parser.parse_train(lexer,parserpath) {
if !parser.error_occurred() {Ok(_xres_)} else {Err(_xres_)}
} else { Err(<Program<'lt>>::default())}
}//parse_train_with public function
//Enum for return values
pub enum RetTypeEnum<'lt> {
Enumvariant_17(Stat<'lt>),
Enumvariant_4(bool),
Enumvariant_0(Program<'lt>),
Enumvariant_9(Vec<LBox<ClassDec<'lt>>>),
Enumvariant_15(Vec<LBox<VarDec<'lt>>>),
Enumvariant_19(Expr<'lt>),
Enumvariant_21(Vec<LBox<Expr<'lt>>>),
Enumvariant_1(()),
Enumvariant_7(Mainclass<'lt>),
Enumvariant_11(VarDec<'lt>),
Enumvariant_8(ClassDec<'lt>),
Enumvariant_16(&'lt str),
Enumvariant_18(Vec<LBox<Stat<'lt>>>),
Enumvariant_12(MethodDec<'lt>),
Enumvariant_13(Vec<LBox<Declaration<'lt>>>),
Enumvariant_5(i32),
}
impl<'lt> Default for RetTypeEnum<'lt> { fn default()->Self {RetTypeEnum::Enumvariant_0(<Program<'lt>>::default())} }
// Lexical Scanner using RawToken and StrTokenizer
pub struct mjenumlexer<'t> {
stk: StrTokenizer<'t>,
keywords: HashSet<&'static str>,
lexnames: HashMap<&'static str,&'static str>,
}
impl<'t> mjenumlexer<'t>
{
pub fn from_str(s:&'t str) -> mjenumlexer<'t> {
Self::new(StrTokenizer::from_str(s))
}
pub fn from_source(s:&'t LexSource<'t>) -> mjenumlexer<'t> {
Self::new(StrTokenizer::from_source(s))
}
pub fn new(mut stk:StrTokenizer<'t>) -> mjenumlexer<'t> {
let mut lexnames = HashMap::with_capacity(64);
let mut keywords = HashSet::with_capacity(64);
for kw in ["extends","while","this","if","public","return","new","boolean","String","length","int","_WILDCARD_TOKEN_","main","else","class","void","static",] {keywords.insert(kw);}
for c in ['(',')','[',']',';','!',',','=','+','-','*','/','<','{','.','%','}',] {stk.add_single(c);}
for d in ["==","&&","||",] {stk.add_double(d);}
for d in [] {stk.add_triple(d);}
for (k,v) in [(r"{","LBR"),(r"||","OROR"),(r".","DOT"),(r"%","MOD"),(r"}","RBR"),] {lexnames.insert(k,v);}
mjenumlexer {stk,keywords,lexnames}
}
}
impl<'lt> Tokenizer<'lt,RetTypeEnum<'lt>> for mjenumlexer<'lt>
{
fn nextsym(&mut self) -> Option<TerminalToken<'lt,RetTypeEnum<'lt>>> {
let tokopt = self.stk.next_token();
if let None = tokopt {return None;}
let token = tokopt.unwrap();
match token.0 {
RawToken::Alphanum(sym) if self.keywords.contains(sym) => {
let truesym = self.lexnames.get(sym).unwrap_or(&sym);
Some(TerminalToken::from_raw(token,truesym,<RetTypeEnum<'lt>>::default()))
},
RawToken::Alphanum("true") => Some(TerminalToken::from_raw(token,"BOOL",RetTypeEnum::Enumvariant_4(true))),
RawToken::Alphanum("false") => Some(TerminalToken::from_raw(token,"BOOL",RetTypeEnum::Enumvariant_4(false))),
RawToken::Alphanum(x) => Some(TerminalToken::from_raw(token,"ID",RetTypeEnum::Enumvariant_16(x))),
RawToken::Num(n) => Some(TerminalToken::from_raw(token,"INTEGER",RetTypeEnum::Enumvariant_5((n as i32)))),
RawToken::Strlit(s) => Some(TerminalToken::from_raw(token,"STRING",RetTypeEnum::Enumvariant_16(s))),
RawToken::Symbol(s) if self.lexnames.contains_key(s) => {
let tname = self.lexnames.get(s).unwrap();
Some(TerminalToken::from_raw(token,tname,<RetTypeEnum<'lt>>::default()))
},
RawToken::Symbol(s) => Some(TerminalToken::from_raw(token,s,<RetTypeEnum<'lt>>::default())),
RawToken::Alphanum(s) => Some(TerminalToken::from_raw(token,s,<RetTypeEnum<'lt>>::default())),
_ => Some(TerminalToken::from_raw(token,"<LexicalError>",<RetTypeEnum<'lt>>::default())),
}
}
fn linenum(&self) -> usize {self.stk.line()}
fn column(&self) -> usize {self.stk.column()}
fn position(&self) -> usize {self.stk.current_position()}
fn current_line(&self) -> &str {self.stk.current_line()}
fn get_line(&self,i:usize) -> Option<&str> {self.stk.get_line(i)}
}//impl Tokenizer
fn load_extras<'lt>(parser:&mut ZCParser<RetTypeEnum<'lt>,()>)
{
}//end of load_extras: don't change this line as it affects augmentation