mdlparse.c 294 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571
  1. /* A Bison parser, made by GNU Bison 3.0.4. */
  2. /* Bison implementation for Yacc-like parsers in C
  3. Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
  4. This program is free software: you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation, either version 3 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program. If not, see <http://www.gnu.org/licenses/>. */
  14. /* As a special exception, you may create a larger work that contains
  15. part or all of the Bison parser skeleton and distribute that work
  16. under terms of your choice, so long as that work isn't itself a
  17. parser generator using the skeleton or a modified version thereof
  18. as a parser skeleton. Alternatively, if you modify or redistribute
  19. the parser skeleton itself, you may (at your option) remove this
  20. special exception, which will cause the skeleton and the resulting
  21. Bison output files to be licensed under the GNU General Public
  22. License without this special exception.
  23. This special exception was added by the Free Software Foundation in
  24. version 2.2 of Bison. */
  25. /* C LALR(1) parser skeleton written by Richard Stallman, by
  26. simplifying the original so-called "semantic" parser. */
  27. /* All symbols defined below should begin with yy or YY, to avoid
  28. infringing on user name space. This should be done even for local
  29. variables, as they might otherwise be expanded by user macros.
  30. There are some unavoidable exceptions within include files to
  31. define necessary library symbols; they are noted "INFRINGES ON
  32. USER NAME SPACE" below. */
  33. /* Identify Bison output. */
  34. #define YYBISON 1
  35. /* Bison version. */
  36. #define YYBISON_VERSION "3.0.4"
  37. /* Skeleton name. */
  38. #define YYSKELETON_NAME "yacc.c"
  39. /* Pure parsers. */
  40. #define YYPURE 1
  41. /* Push parsers. */
  42. #define YYPUSH 0
  43. /* Pull parsers. */
  44. #define YYPULL 1
  45. /* Substitute the variable and function names. */
  46. #define yyparse mdlparse
  47. #define yylex mdllex
  48. #define yyerror mdlerror
  49. #define yydebug mdldebug
  50. #define yynerrs mdlnerrs
  51. /* Copy the first part of user declarations. */
  52. #line 1 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:339 */
  53. #include "config.h"
  54. #include <stdio.h>
  55. #include <stdlib.h>
  56. #include <stdarg.h>
  57. #include <string.h>
  58. #include <time.h>
  59. #include <math.h>
  60. #include <float.h>
  61. #include <limits.h>
  62. #include <errno.h>
  63. #include "rng.h"
  64. #include "logging.h"
  65. #include "vector.h"
  66. #include "strfunc.h"
  67. #include "mem_util.h"
  68. #include "sym_table.h"
  69. #include "diffuse_util.h"
  70. #include "mdlparse_util.h"
  71. #include "mdlparse_aux.h"
  72. #include "util.h"
  73. #include "react_output.h"
  74. #include "mcell_misc.h"
  75. #include "mcell_structs.h"
  76. #include "mcell_viz.h"
  77. #include "mcell_release.h"
  78. #include "mcell_objects.h"
  79. #include "mcell_dyngeom.h"
  80. /* make sure to declare yyscan_t before including mdlparse.h */
  81. typedef void *yyscan_t;
  82. #include "mdlparse.h"
  83. int mdllex_init(yyscan_t *ptr_yy_globals) ;
  84. int mdllex_destroy(yyscan_t yyscanner);
  85. void mdlrestart(FILE *infile, yyscan_t scanner);
  86. int mdllex(YYSTYPE *yylval, struct mdlparse_vars *parse_state, yyscan_t scanner);
  87. #ifdef DEBUG_MDL_PARSER
  88. #define FAILCHECK(t) do { mcell_error_nodie("Parser fail: %s:%d (%s)\n", __FILE__, __LINE__, t); return 1; } while(0)
  89. #else
  90. #define FAILCHECK(t) return 1
  91. #endif
  92. #define CHECK(a) do { if ((a) != 0) FAILCHECK("non-zero"); } while (0)
  93. #define CHECKN(a) do { if ((a) == NULL) FAILCHECK("NULL"); } while (0)
  94. #define CHECKF(a) do { \
  95. if (isnan(a)) \
  96. { \
  97. mdlerror(parse_state, "Expression result is not a number"); \
  98. FAILCHECK("NaN"); \
  99. } \
  100. else if (isinf(a)) \
  101. { \
  102. mdlerror(parse_state, "Expression result is infinite"); \
  103. FAILCHECK("Infinite"); \
  104. } \
  105. } while(0)
  106. #undef yyerror
  107. #define yyerror(a, b, c) mdlerror(a, c)
  108. #line 137 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:339 */
  109. # ifndef YY_NULLPTR
  110. # if defined __cplusplus && 201103L <= __cplusplus
  111. # define YY_NULLPTR nullptr
  112. # else
  113. # define YY_NULLPTR 0
  114. # endif
  115. # endif
  116. /* Enabling verbose error messages. */
  117. #ifdef YYERROR_VERBOSE
  118. # undef YYERROR_VERBOSE
  119. # define YYERROR_VERBOSE 1
  120. #else
  121. # define YYERROR_VERBOSE 0
  122. #endif
  123. /* In a future release of Bison, this section will be replaced
  124. by #include "mdlparse.h". */
  125. #ifndef YY_MDL_HOME_JCZECH_MCELL_BUILD_DEPS_MDLPARSE_H_INCLUDED
  126. # define YY_MDL_HOME_JCZECH_MCELL_BUILD_DEPS_MDLPARSE_H_INCLUDED
  127. /* Debug traces. */
  128. #ifndef YYDEBUG
  129. # define YYDEBUG 0
  130. #endif
  131. #if YYDEBUG
  132. extern int mdldebug;
  133. #endif
  134. /* Token type. */
  135. #ifndef YYTOKENTYPE
  136. # define YYTOKENTYPE
  137. enum yytokentype
  138. {
  139. ABS = 258,
  140. ABSORPTIVE = 259,
  141. ACCURATE_3D_REACTIONS = 260,
  142. ACOS = 261,
  143. ALL_CROSSINGS = 262,
  144. ALL_DATA = 263,
  145. ALL_ELEMENTS = 264,
  146. ALL_ENCLOSED = 265,
  147. ALL_HITS = 266,
  148. ALL_ITERATIONS = 267,
  149. ALL_MOLECULES = 268,
  150. ALL_NOTIFICATIONS = 269,
  151. ALL_TIMES = 270,
  152. ALL_WARNINGS = 271,
  153. ASCII = 272,
  154. ASIN = 273,
  155. ASPECT_RATIO = 274,
  156. ATAN = 275,
  157. BACK = 276,
  158. BACK_CROSSINGS = 277,
  159. BACK_HITS = 278,
  160. BOTTOM = 279,
  161. BOX = 280,
  162. BOX_TRIANGULATION_REPORT = 281,
  163. BRIEF = 282,
  164. CEIL = 283,
  165. CELLBLENDER = 284,
  166. CENTER_MOLECULES_ON_GRID = 285,
  167. CHECKPOINT_INFILE = 286,
  168. CHECKPOINT_ITERATIONS = 287,
  169. CHECKPOINT_OUTFILE = 288,
  170. CHECKPOINT_REALTIME = 289,
  171. CHECKPOINT_REPORT = 290,
  172. CLAMP_CONCENTRATION = 291,
  173. CLOSE_PARTITION_SPACING = 292,
  174. CONCENTRATION = 293,
  175. CORNERS = 294,
  176. COS = 295,
  177. COUNT = 296,
  178. CUBIC = 297,
  179. CUBIC_RELEASE_SITE = 298,
  180. CUSTOM_SPACE_STEP = 299,
  181. CUSTOM_TIME_STEP = 300,
  182. DEFINE_MOLECULE = 301,
  183. DEFINE_MOLECULES = 302,
  184. DEFINE_REACTIONS = 303,
  185. DEFINE_RELEASE_PATTERN = 304,
  186. DEFINE_SURFACE_CLASS = 305,
  187. DEFINE_SURFACE_CLASSES = 306,
  188. DEFINE_SURFACE_REGIONS = 307,
  189. DEGENERATE_POLYGONS = 308,
  190. DELAY = 309,
  191. DENSITY = 310,
  192. DIFFUSION_CONSTANT_2D = 311,
  193. DIFFUSION_CONSTANT_3D = 312,
  194. DIFFUSION_CONSTANT_REPORT = 313,
  195. DYNAMIC_GEOMETRY = 314,
  196. DYNAMIC_GEOMETRY_MOLECULE_PLACEMENT = 315,
  197. EFFECTOR_GRID_DENSITY = 316,
  198. ELEMENT_CONNECTIONS = 317,
  199. ELLIPTIC = 318,
  200. ELLIPTIC_RELEASE_SITE = 319,
  201. EQUAL = 320,
  202. ERROR = 321,
  203. ESTIMATE_CONCENTRATION = 322,
  204. EXCLUDE_ELEMENTS = 323,
  205. EXCLUDE_PATCH = 324,
  206. EXCLUDE_REGION = 325,
  207. EXIT = 326,
  208. EXP = 327,
  209. EXPRESSION = 328,
  210. EXTERN = 329,
  211. FALSE = 330,
  212. FCLOSE = 331,
  213. FILENAME = 332,
  214. FILENAME_PREFIX = 333,
  215. FILE_OUTPUT_REPORT = 334,
  216. FINAL_SUMMARY = 335,
  217. FLOOR = 336,
  218. FOPEN = 337,
  219. FORMAT = 338,
  220. FPRINTF = 339,
  221. FPRINT_TIME = 340,
  222. FRONT = 341,
  223. FRONT_CROSSINGS = 342,
  224. FRONT_HITS = 343,
  225. GAUSSIAN_RELEASE_NUMBER = 344,
  226. GEOMETRY = 345,
  227. GRAPH_PATTERN = 346,
  228. HEADER = 347,
  229. HIGH_PROBABILITY_THRESHOLD = 348,
  230. HIGH_REACTION_PROBABILITY = 349,
  231. IGNORED = 350,
  232. INCLUDE_ELEMENTS = 351,
  233. INCLUDE_FILE = 352,
  234. INCLUDE_PATCH = 353,
  235. INCLUDE_REGION = 354,
  236. INPUT_FILE = 355,
  237. INSTANTIATE = 356,
  238. LLINTEGER = 357,
  239. FULLY_RANDOM = 358,
  240. INTERACTION_RADIUS = 359,
  241. ITERATION_LIST = 360,
  242. ITERATION_NUMBERS = 361,
  243. ITERATION_REPORT = 362,
  244. ITERATIONS = 363,
  245. KEEP_CHECKPOINT_FILES = 364,
  246. LEFT = 365,
  247. LIFETIME_THRESHOLD = 366,
  248. LIFETIME_TOO_SHORT = 367,
  249. LIST = 368,
  250. LOCATION = 369,
  251. LOG = 370,
  252. LOG10 = 371,
  253. MAX_TOK = 372,
  254. MAXIMUM_STEP_LENGTH = 373,
  255. MEAN_DIAMETER = 374,
  256. MEAN_NUMBER = 375,
  257. MEMORY_PARTITION_X = 376,
  258. MEMORY_PARTITION_Y = 377,
  259. MEMORY_PARTITION_Z = 378,
  260. MEMORY_PARTITION_POOL = 379,
  261. MICROSCOPIC_REVERSIBILITY = 380,
  262. MIN_TOK = 381,
  263. MISSED_REACTIONS = 382,
  264. MISSED_REACTION_THRESHOLD = 383,
  265. MISSING_SURFACE_ORIENTATION = 384,
  266. MOD = 385,
  267. MODE = 386,
  268. MODIFY_SURFACE_REGIONS = 387,
  269. MOLECULE = 388,
  270. MOLECULE_COLLISION_REPORT = 389,
  271. MOLECULE_DENSITY = 390,
  272. MOLECULE_NUMBER = 391,
  273. MOLECULE_POSITIONS = 392,
  274. MOLECULES = 393,
  275. MOLECULE_PLACEMENT_FAILURE = 394,
  276. NAME_LIST = 395,
  277. NEAREST_POINT = 396,
  278. NEAREST_TRIANGLE = 397,
  279. NEGATIVE_DIFFUSION_CONSTANT = 398,
  280. NEGATIVE_REACTION_RATE = 399,
  281. NO = 400,
  282. NOEXIT = 401,
  283. NONE = 402,
  284. NO_SPECIES = 403,
  285. NOT_EQUAL = 404,
  286. NOTIFICATIONS = 405,
  287. NUMBER_OF_SUBUNITS = 406,
  288. NUMBER_OF_TRAINS = 407,
  289. NUMBER_TO_RELEASE = 408,
  290. OBJECT = 409,
  291. OFF = 410,
  292. ON = 411,
  293. ORIENTATIONS = 412,
  294. OUTPUT_BUFFER_SIZE = 413,
  295. INVALID_OUTPUT_STEP_TIME = 414,
  296. LARGE_MOLECULAR_DISPLACEMENT = 415,
  297. ADD_REMOVE_MESH = 416,
  298. OVERWRITTEN_OUTPUT_FILE = 417,
  299. PARTITION_LOCATION_REPORT = 418,
  300. PARTITION_X = 419,
  301. PARTITION_Y = 420,
  302. PARTITION_Z = 421,
  303. PERIODIC_BOX = 422,
  304. PERIODIC_X = 423,
  305. PERIODIC_Y = 424,
  306. PERIODIC_Z = 425,
  307. PERIODIC_TRADITIONAL = 426,
  308. PI_TOK = 427,
  309. POLYGON_LIST = 428,
  310. POSITIONS = 429,
  311. PRINTF = 430,
  312. PRINT_TIME = 431,
  313. PROBABILITY_REPORT = 432,
  314. PROBABILITY_REPORT_THRESHOLD = 433,
  315. PROGRESS_REPORT = 434,
  316. RADIAL_DIRECTIONS = 435,
  317. RADIAL_SUBDIVISIONS = 436,
  318. RAND_GAUSSIAN = 437,
  319. RAND_UNIFORM = 438,
  320. REACTION_DATA_OUTPUT = 439,
  321. REACTION_OUTPUT_REPORT = 440,
  322. REAL = 441,
  323. RECTANGULAR_RELEASE_SITE = 442,
  324. RECTANGULAR_TOKEN = 443,
  325. REFLECTIVE = 444,
  326. RELEASE_EVENT_REPORT = 445,
  327. RELEASE_INTERVAL = 446,
  328. RELEASE_PATTERN = 447,
  329. RELEASE_PROBABILITY = 448,
  330. RELEASE_SITE = 449,
  331. REMOVE_ELEMENTS = 450,
  332. RIGHT = 451,
  333. ROTATE = 452,
  334. ROUND_OFF = 453,
  335. SCALE = 454,
  336. SEED = 455,
  337. SHAPE = 456,
  338. SHOW_EXACT_TIME = 457,
  339. SIN = 458,
  340. SITE_DIAMETER = 459,
  341. SITE_RADIUS = 460,
  342. SPACE_STEP = 461,
  343. SPHERICAL = 462,
  344. SPHERICAL_RELEASE_SITE = 463,
  345. SPHERICAL_SHELL = 464,
  346. SPHERICAL_SHELL_SITE = 465,
  347. SPRINTF = 466,
  348. SQRT = 467,
  349. STANDARD_DEVIATION = 468,
  350. PERIODIC_BOX_INITIAL = 469,
  351. STEP = 470,
  352. STRING_TO_NUM = 471,
  353. STR_VALUE = 472,
  354. SUBUNIT = 473,
  355. SUBUNIT_RELATIONSHIPS = 474,
  356. SUMMATION_OPERATOR = 475,
  357. SURFACE_CLASS = 476,
  358. SURFACE_ONLY = 477,
  359. TAN = 478,
  360. TARGET_ONLY = 479,
  361. TET_ELEMENT_CONNECTIONS = 480,
  362. THROUGHPUT_REPORT = 481,
  363. TIME_LIST = 482,
  364. TIME_POINTS = 483,
  365. TIME_STEP = 484,
  366. TIME_STEP_MAX = 485,
  367. TO = 486,
  368. TOP = 487,
  369. TRAIN_DURATION = 488,
  370. TRAIN_INTERVAL = 489,
  371. TRANSLATE = 490,
  372. TRANSPARENT = 491,
  373. TRIGGER = 492,
  374. TRUE = 493,
  375. UNLIMITED = 494,
  376. USELESS_VOLUME_ORIENTATION = 495,
  377. VACANCY_SEARCH_DISTANCE = 496,
  378. VAR = 497,
  379. VARYING_PROBABILITY_REPORT = 498,
  380. VERTEX_LIST = 499,
  381. VIZ_OUTPUT = 500,
  382. VIZ_OUTPUT_REPORT = 501,
  383. VIZ_VALUE = 502,
  384. VOLUME_DATA_OUTPUT = 503,
  385. VOLUME_OUTPUT_REPORT = 504,
  386. VOLUME_DEPENDENT_RELEASE_NUMBER = 505,
  387. VOLUME_ONLY = 506,
  388. VOXEL_COUNT = 507,
  389. VOXEL_LIST = 508,
  390. VOXEL_SIZE = 509,
  391. WARNING = 510,
  392. WARNINGS = 511,
  393. WORLD = 512,
  394. YES = 513,
  395. UNARYMINUS = 514
  396. };
  397. #endif
  398. /* Value type. */
  399. #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
  400. union YYSTYPE
  401. {
  402. #line 67 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:355 */
  403. int ival;
  404. int tok;
  405. double dbl;
  406. long long llival;
  407. char *str;
  408. struct sym_entry *sym;
  409. struct vector3 *vec3;
  410. struct num_expr_list_head nlist;
  411. struct release_evaluator *rev;
  412. struct sym_table_list *symlist;
  413. struct output_times *otimes;
  414. /* Reaction output */
  415. struct output_times_inlist ro_otimes;
  416. struct output_column_list ro_cols;
  417. struct output_set *ro_set;
  418. struct output_set_list ro_sets;
  419. struct output_expression *cnt;
  420. /* Viz output */
  421. struct frame_data_list_head frame_list;
  422. /* Region definitions */
  423. struct element_list *elem_list_item;
  424. struct element_list_head elem_list;
  425. struct region *reg;
  426. /* Diffusion constants */
  427. struct diffusion_constant diff_const;
  428. /* Geometry */
  429. struct vertex_list_head vertlist;
  430. struct vertex_list *vertlistitem;
  431. struct element_connection_list_head ecl;
  432. struct element_connection_list *elem_conn;
  433. struct object *obj;
  434. struct object_list obj_list;
  435. struct voxel_object *voxel;
  436. /* Molecule species */
  437. struct mcell_species mol_type;
  438. struct mcell_species_list mol_type_list;
  439. struct mcell_species_spec *mcell_mol_spec;
  440. struct parse_mcell_species_list mcell_species_lst;
  441. struct sm_dat *surf_mol_dat;
  442. struct sm_dat_list surf_mol_dat_list;
  443. struct species_list species_lst;
  444. struct species_list_item *species_lst_item;
  445. /* Reactions */
  446. struct reaction_arrow react_arrow;
  447. struct reaction_rate react_rate;
  448. struct reaction_rates react_rates;
  449. /* Release sites/patterns */
  450. struct release_pattern rpat;
  451. struct release_single_molecule *rsm;
  452. struct release_single_molecule_list rsm_list;
  453. /* printf arguments */
  454. struct arg *printfarg;
  455. struct arg_list printfargs;
  456. #line 503 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:355 */
  457. };
  458. typedef union YYSTYPE YYSTYPE;
  459. # define YYSTYPE_IS_TRIVIAL 1
  460. # define YYSTYPE_IS_DECLARED 1
  461. #endif
  462. int mdlparse (struct mdlparse_vars *parse_state, yyscan_t scanner);
  463. #endif /* !YY_MDL_HOME_JCZECH_MCELL_BUILD_DEPS_MDLPARSE_H_INCLUDED */
  464. /* Copy the second part of user declarations. */
  465. #line 519 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:358 */
  466. #ifdef short
  467. # undef short
  468. #endif
  469. #ifdef YYTYPE_UINT8
  470. typedef YYTYPE_UINT8 yytype_uint8;
  471. #else
  472. typedef unsigned char yytype_uint8;
  473. #endif
  474. #ifdef YYTYPE_INT8
  475. typedef YYTYPE_INT8 yytype_int8;
  476. #else
  477. typedef signed char yytype_int8;
  478. #endif
  479. #ifdef YYTYPE_UINT16
  480. typedef YYTYPE_UINT16 yytype_uint16;
  481. #else
  482. typedef unsigned short int yytype_uint16;
  483. #endif
  484. #ifdef YYTYPE_INT16
  485. typedef YYTYPE_INT16 yytype_int16;
  486. #else
  487. typedef short int yytype_int16;
  488. #endif
  489. #ifndef YYSIZE_T
  490. # ifdef __SIZE_TYPE__
  491. # define YYSIZE_T __SIZE_TYPE__
  492. # elif defined size_t
  493. # define YYSIZE_T size_t
  494. # elif ! defined YYSIZE_T
  495. # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
  496. # define YYSIZE_T size_t
  497. # else
  498. # define YYSIZE_T unsigned int
  499. # endif
  500. #endif
  501. #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
  502. #ifndef YY_
  503. # if defined YYENABLE_NLS && YYENABLE_NLS
  504. # if ENABLE_NLS
  505. # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
  506. # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
  507. # endif
  508. # endif
  509. # ifndef YY_
  510. # define YY_(Msgid) Msgid
  511. # endif
  512. #endif
  513. #ifndef YY_ATTRIBUTE
  514. # if (defined __GNUC__ \
  515. && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
  516. || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
  517. # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
  518. # else
  519. # define YY_ATTRIBUTE(Spec) /* empty */
  520. # endif
  521. #endif
  522. #ifndef YY_ATTRIBUTE_PURE
  523. # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
  524. #endif
  525. #ifndef YY_ATTRIBUTE_UNUSED
  526. # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
  527. #endif
  528. #if !defined _Noreturn \
  529. && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
  530. # if defined _MSC_VER && 1200 <= _MSC_VER
  531. # define _Noreturn __declspec (noreturn)
  532. # else
  533. # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
  534. # endif
  535. #endif
  536. /* Suppress unused-variable warnings by "using" E. */
  537. #if ! defined lint || defined __GNUC__
  538. # define YYUSE(E) ((void) (E))
  539. #else
  540. # define YYUSE(E) /* empty */
  541. #endif
  542. #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
  543. /* Suppress an incorrect diagnostic about yylval being uninitialized. */
  544. # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
  545. _Pragma ("GCC diagnostic push") \
  546. _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
  547. _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
  548. # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
  549. _Pragma ("GCC diagnostic pop")
  550. #else
  551. # define YY_INITIAL_VALUE(Value) Value
  552. #endif
  553. #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  554. # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  555. # define YY_IGNORE_MAYBE_UNINITIALIZED_END
  556. #endif
  557. #ifndef YY_INITIAL_VALUE
  558. # define YY_INITIAL_VALUE(Value) /* Nothing. */
  559. #endif
  560. #if ! defined yyoverflow || YYERROR_VERBOSE
  561. /* The parser invokes alloca or malloc; define the necessary symbols. */
  562. # ifdef YYSTACK_USE_ALLOCA
  563. # if YYSTACK_USE_ALLOCA
  564. # ifdef __GNUC__
  565. # define YYSTACK_ALLOC __builtin_alloca
  566. # elif defined __BUILTIN_VA_ARG_INCR
  567. # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
  568. # elif defined _AIX
  569. # define YYSTACK_ALLOC __alloca
  570. # elif defined _MSC_VER
  571. # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
  572. # define alloca _alloca
  573. # else
  574. # define YYSTACK_ALLOC alloca
  575. # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
  576. # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
  577. /* Use EXIT_SUCCESS as a witness for stdlib.h. */
  578. # ifndef EXIT_SUCCESS
  579. # define EXIT_SUCCESS 0
  580. # endif
  581. # endif
  582. # endif
  583. # endif
  584. # endif
  585. # ifdef YYSTACK_ALLOC
  586. /* Pacify GCC's 'empty if-body' warning. */
  587. # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
  588. # ifndef YYSTACK_ALLOC_MAXIMUM
  589. /* The OS might guarantee only one guard page at the bottom of the stack,
  590. and a page size can be as small as 4096 bytes. So we cannot safely
  591. invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
  592. to allow for a few compiler-allocated temporary stack slots. */
  593. # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
  594. # endif
  595. # else
  596. # define YYSTACK_ALLOC YYMALLOC
  597. # define YYSTACK_FREE YYFREE
  598. # ifndef YYSTACK_ALLOC_MAXIMUM
  599. # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
  600. # endif
  601. # if (defined __cplusplus && ! defined EXIT_SUCCESS \
  602. && ! ((defined YYMALLOC || defined malloc) \
  603. && (defined YYFREE || defined free)))
  604. # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
  605. # ifndef EXIT_SUCCESS
  606. # define EXIT_SUCCESS 0
  607. # endif
  608. # endif
  609. # ifndef YYMALLOC
  610. # define YYMALLOC malloc
  611. # if ! defined malloc && ! defined EXIT_SUCCESS
  612. void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
  613. # endif
  614. # endif
  615. # ifndef YYFREE
  616. # define YYFREE free
  617. # if ! defined free && ! defined EXIT_SUCCESS
  618. void free (void *); /* INFRINGES ON USER NAME SPACE */
  619. # endif
  620. # endif
  621. # endif
  622. #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
  623. #if (! defined yyoverflow \
  624. && (! defined __cplusplus \
  625. || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
  626. /* A type that is properly aligned for any stack member. */
  627. union yyalloc
  628. {
  629. yytype_int16 yyss_alloc;
  630. YYSTYPE yyvs_alloc;
  631. };
  632. /* The size of the maximum gap between one aligned stack and the next. */
  633. # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
  634. /* The size of an array large to enough to hold all stacks, each with
  635. N elements. */
  636. # define YYSTACK_BYTES(N) \
  637. ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
  638. + YYSTACK_GAP_MAXIMUM)
  639. # define YYCOPY_NEEDED 1
  640. /* Relocate STACK from its old location to the new one. The
  641. local variables YYSIZE and YYSTACKSIZE give the old and new number of
  642. elements in the stack, and YYPTR gives the new location of the
  643. stack. Advance YYPTR to a properly aligned location for the next
  644. stack. */
  645. # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
  646. do \
  647. { \
  648. YYSIZE_T yynewbytes; \
  649. YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
  650. Stack = &yyptr->Stack_alloc; \
  651. yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
  652. yyptr += yynewbytes / sizeof (*yyptr); \
  653. } \
  654. while (0)
  655. #endif
  656. #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
  657. /* Copy COUNT objects from SRC to DST. The source and destination do
  658. not overlap. */
  659. # ifndef YYCOPY
  660. # if defined __GNUC__ && 1 < __GNUC__
  661. # define YYCOPY(Dst, Src, Count) \
  662. __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
  663. # else
  664. # define YYCOPY(Dst, Src, Count) \
  665. do \
  666. { \
  667. YYSIZE_T yyi; \
  668. for (yyi = 0; yyi < (Count); yyi++) \
  669. (Dst)[yyi] = (Src)[yyi]; \
  670. } \
  671. while (0)
  672. # endif
  673. # endif
  674. #endif /* !YYCOPY_NEEDED */
  675. /* YYFINAL -- State number of the termination state. */
  676. #define YYFINAL 150
  677. /* YYLAST -- Last index in YYTABLE. */
  678. #define YYLAST 2815
  679. /* YYNTOKENS -- Number of terminals. */
  680. #define YYNTOKENS 280
  681. /* YYNNTS -- Number of nonterminals. */
  682. #define YYNNTS 290
  683. /* YYNRULES -- Number of rules. */
  684. #define YYNRULES 624
  685. /* YYNSTATES -- Number of states. */
  686. #define YYNSTATES 1232
  687. /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
  688. by yylex, with out-of-bounds checking. */
  689. #define YYUNDEFTOK 2
  690. #define YYMAXUTOK 514
  691. #define YYTRANSLATE(YYX) \
  692. ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  693. /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
  694. as returned by yylex, without out-of-bounds checking. */
  695. static const yytype_uint16 yytranslate[] =
  696. {
  697. 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  698. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  699. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  700. 2, 2, 2, 2, 2, 2, 2, 2, 260, 271,
  701. 275, 276, 264, 262, 272, 263, 2, 265, 2, 2,
  702. 2, 2, 2, 2, 2, 2, 2, 2, 261, 270,
  703. 278, 259, 277, 2, 279, 2, 2, 2, 2, 2,
  704. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  705. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  706. 2, 268, 2, 269, 267, 2, 2, 2, 2, 2,
  707. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  708. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  709. 2, 2, 2, 273, 2, 274, 2, 2, 2, 2,
  710. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  711. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  712. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  713. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  714. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  715. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  716. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  717. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  718. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  719. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  720. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  721. 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
  722. 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
  723. 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
  724. 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
  725. 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
  726. 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
  727. 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
  728. 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
  729. 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
  730. 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
  731. 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
  732. 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
  733. 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
  734. 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
  735. 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
  736. 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
  737. 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
  738. 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
  739. 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
  740. 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
  741. 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
  742. 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
  743. 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
  744. 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
  745. 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
  746. 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
  747. 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
  748. 255, 256, 257, 258, 266
  749. };
  750. #if YYDEBUG
  751. /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
  752. static const yytype_uint16 yyrline[] =
  753. {
  754. 0, 602, 602, 606, 607, 612, 613, 614, 615, 616,
  755. 617, 618, 619, 620, 621, 622, 623, 624, 625, 626,
  756. 627, 628, 629, 630, 631, 632, 637, 640, 643, 646,
  757. 649, 652, 655, 656, 659, 660, 661, 662, 663, 664,
  758. 667, 668, 669, 670, 674, 675, 676, 686, 698, 701,
  759. 704, 716, 717, 730, 731, 737, 760, 761, 762, 763,
  760. 766, 769, 772, 773, 784, 787, 790, 791, 794, 795,
  761. 798, 799, 802, 803, 806, 810, 811, 812, 813, 814,
  762. 815, 816, 817, 818, 819, 820, 821, 822, 823, 824,
  763. 825, 826, 827, 828, 829, 830, 831, 832, 833, 834,
  764. 835, 836, 837, 838, 839, 843, 844, 848, 849, 850,
  765. 851, 854, 860, 861, 862, 863, 864, 865, 866, 869,
  766. 873, 876, 879, 882, 885, 888, 889, 899, 900, 901,
  767. 913, 917, 923, 928, 932, 941, 945, 946, 950, 951,
  768. 952, 953, 954, 955, 956, 957, 958, 959, 960, 961,
  769. 962, 963, 964, 965, 966, 970, 971, 975, 979, 980,
  770. 987, 991, 992, 996, 997, 998, 999, 1000, 1001, 1002,
  771. 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
  772. 1013, 1017, 1018, 1019, 1025, 1026, 1027, 1028, 1029, 1033,
  773. 1034, 1035, 1039, 1040, 1041, 1042, 1050, 1051, 1052, 1053,
  774. 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063,
  775. 1064, 1065, 1066, 1067, 1074, 1075, 1076, 1077, 1081, 1085,
  776. 1086, 1087, 1094, 1095, 1098, 1102, 1106, 1107, 1111, 1120,
  777. 1123, 1127, 1128, 1132, 1133, 1142, 1153, 1154, 1158, 1159,
  778. 1169, 1170, 1173, 1177, 1181, 1194, 1195, 1200, 1204, 1210,
  779. 1211, 1216, 1216, 1221, 1224, 1226, 1231, 1232, 1236, 1239,
  780. 1245, 1250, 1251, 1252, 1255, 1256, 1259, 1263, 1267, 1274,
  781. 1278, 1287, 1291, 1300, 1307, 1312, 1313, 1316, 1319, 1320,
  782. 1323, 1324, 1325, 1328, 1333, 1339, 1340, 1341, 1342, 1345,
  783. 1346, 1350, 1355, 1356, 1359, 1363, 1364, 1368, 1371, 1372,
  784. 1375, 1376, 1380, 1381, 1384, 1395, 1412, 1413, 1414, 1418,
  785. 1419, 1420, 1427, 1434, 1437, 1441, 1448, 1450, 1452, 1454,
  786. 1456, 1460, 1461, 1468, 1468, 1479, 1482, 1483, 1484, 1485,
  787. 1486, 1495, 1498, 1501, 1504, 1506, 1510, 1514, 1515, 1516,
  788. 1521, 1534, 1535, 1538, 1539, 1544, 1543, 1550, 1551, 1556,
  789. 1555, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1577,
  790. 1578, 1579, 1580, 1581, 1586, 1585, 1592, 1593, 1594, 1595,
  791. 1596, 1600, 1601, 1604, 1608, 1609, 1610, 1617, 1618, 1619,
  792. 1620, 1621, 1622, 1624, 1626, 1630, 1631, 1635, 1636, 1637,
  793. 1638, 1643, 1644, 1650, 1657, 1665, 1666, 1670, 1671, 1676,
  794. 1679, 1687, 1684, 1702, 1705, 1708, 1709, 1713, 1718, 1719,
  795. 1723, 1726, 1728, 1734, 1735, 1739, 1739, 1751, 1752, 1755,
  796. 1756, 1757, 1758, 1759, 1760, 1761, 1765, 1766, 1771, 1772,
  797. 1773, 1774, 1778, 1783, 1787, 1791, 1792, 1795, 1796, 1797,
  798. 1800, 1803, 1804, 1807, 1810, 1811, 1815, 1821, 1822, 1827,
  799. 1828, 1827, 1838, 1835, 1848, 1852, 1856, 1860, 1870, 1873,
  800. 1867, 1880, 1881, 1877, 1890, 1891, 1895, 1896, 1900, 1901,
  801. 1905, 1906, 1909, 1910, 1924, 1930, 1931, 1936, 1937, 1939,
  802. 1936, 1948, 1951, 1953, 1958, 1959, 1963, 1970, 1976, 1977,
  803. 1982, 1982, 1992, 1991, 2002, 2003, 2014, 2015, 2016, 2019,
  804. 2023, 2031, 2038, 2039, 2040, 2054, 2055, 2056, 2060, 2060,
  805. 2066, 2067, 2068, 2072, 2076, 2080, 2081, 2090, 2094, 2095,
  806. 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2107, 2107, 2109,
  807. 2110, 2110, 2114, 2115, 2116, 2117, 2118, 2121, 2124, 2128,
  808. 2138, 2139, 2140, 2141, 2142, 2143, 2147, 2152, 2157, 2162,
  809. 2167, 2172, 2176, 2177, 2178, 2181, 2182, 2185, 2186, 2187,
  810. 2188, 2189, 2190, 2191, 2192, 2195, 2196, 2203, 2203, 2210,
  811. 2211, 2215, 2216, 2219, 2220, 2221, 2225, 2226, 2236, 2239,
  812. 2243, 2249, 2250, 2265, 2266, 2267, 2271, 2277, 2278, 2282,
  813. 2283, 2287, 2289, 2293, 2294, 2298, 2299, 2302, 2308, 2309,
  814. 2326, 2331, 2332, 2336, 2342, 2343, 2360, 2364, 2365, 2366,
  815. 2373, 2389, 2393, 2394, 2404, 2407, 2425, 2426, 2435, 2439,
  816. 2443, 2464, 2465, 2466, 2467
  817. };
  818. #endif
  819. #if YYDEBUG || YYERROR_VERBOSE || 0
  820. /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
  821. First, the terminals, then, starting at YYNTOKENS, nonterminals. */
  822. static const char *const yytname[] =
  823. {
  824. "$end", "error", "$undefined", "ABS", "ABSORPTIVE",
  825. "ACCURATE_3D_REACTIONS", "ACOS", "ALL_CROSSINGS", "ALL_DATA",
  826. "ALL_ELEMENTS", "ALL_ENCLOSED", "ALL_HITS", "ALL_ITERATIONS",
  827. "ALL_MOLECULES", "ALL_NOTIFICATIONS", "ALL_TIMES", "ALL_WARNINGS",
  828. "ASCII", "ASIN", "ASPECT_RATIO", "ATAN", "BACK", "BACK_CROSSINGS",
  829. "BACK_HITS", "BOTTOM", "BOX", "BOX_TRIANGULATION_REPORT", "BRIEF",
  830. "CEIL", "CELLBLENDER", "CENTER_MOLECULES_ON_GRID", "CHECKPOINT_INFILE",
  831. "CHECKPOINT_ITERATIONS", "CHECKPOINT_OUTFILE", "CHECKPOINT_REALTIME",
  832. "CHECKPOINT_REPORT", "CLAMP_CONCENTRATION", "CLOSE_PARTITION_SPACING",
  833. "CONCENTRATION", "CORNERS", "COS", "COUNT", "CUBIC",
  834. "CUBIC_RELEASE_SITE", "CUSTOM_SPACE_STEP", "CUSTOM_TIME_STEP",
  835. "DEFINE_MOLECULE", "DEFINE_MOLECULES", "DEFINE_REACTIONS",
  836. "DEFINE_RELEASE_PATTERN", "DEFINE_SURFACE_CLASS",
  837. "DEFINE_SURFACE_CLASSES", "DEFINE_SURFACE_REGIONS",
  838. "DEGENERATE_POLYGONS", "DELAY", "DENSITY", "DIFFUSION_CONSTANT_2D",
  839. "DIFFUSION_CONSTANT_3D", "DIFFUSION_CONSTANT_REPORT", "DYNAMIC_GEOMETRY",
  840. "DYNAMIC_GEOMETRY_MOLECULE_PLACEMENT", "EFFECTOR_GRID_DENSITY",
  841. "ELEMENT_CONNECTIONS", "ELLIPTIC", "ELLIPTIC_RELEASE_SITE", "EQUAL",
  842. "ERROR", "ESTIMATE_CONCENTRATION", "EXCLUDE_ELEMENTS", "EXCLUDE_PATCH",
  843. "EXCLUDE_REGION", "EXIT", "EXP", "EXPRESSION", "EXTERN", "FALSE",
  844. "FCLOSE", "FILENAME", "FILENAME_PREFIX", "FILE_OUTPUT_REPORT",
  845. "FINAL_SUMMARY", "FLOOR", "FOPEN", "FORMAT", "FPRINTF", "FPRINT_TIME",
  846. "FRONT", "FRONT_CROSSINGS", "FRONT_HITS", "GAUSSIAN_RELEASE_NUMBER",
  847. "GEOMETRY", "GRAPH_PATTERN", "HEADER", "HIGH_PROBABILITY_THRESHOLD",
  848. "HIGH_REACTION_PROBABILITY", "IGNORED", "INCLUDE_ELEMENTS",
  849. "INCLUDE_FILE", "INCLUDE_PATCH", "INCLUDE_REGION", "INPUT_FILE",
  850. "INSTANTIATE", "LLINTEGER", "FULLY_RANDOM", "INTERACTION_RADIUS",
  851. "ITERATION_LIST", "ITERATION_NUMBERS", "ITERATION_REPORT", "ITERATIONS",
  852. "KEEP_CHECKPOINT_FILES", "LEFT", "LIFETIME_THRESHOLD",
  853. "LIFETIME_TOO_SHORT", "LIST", "LOCATION", "LOG", "LOG10", "MAX_TOK",
  854. "MAXIMUM_STEP_LENGTH", "MEAN_DIAMETER", "MEAN_NUMBER",
  855. "MEMORY_PARTITION_X", "MEMORY_PARTITION_Y", "MEMORY_PARTITION_Z",
  856. "MEMORY_PARTITION_POOL", "MICROSCOPIC_REVERSIBILITY", "MIN_TOK",
  857. "MISSED_REACTIONS", "MISSED_REACTION_THRESHOLD",
  858. "MISSING_SURFACE_ORIENTATION", "MOD", "MODE", "MODIFY_SURFACE_REGIONS",
  859. "MOLECULE", "MOLECULE_COLLISION_REPORT", "MOLECULE_DENSITY",
  860. "MOLECULE_NUMBER", "MOLECULE_POSITIONS", "MOLECULES",
  861. "MOLECULE_PLACEMENT_FAILURE", "NAME_LIST", "NEAREST_POINT",
  862. "NEAREST_TRIANGLE", "NEGATIVE_DIFFUSION_CONSTANT",
  863. "NEGATIVE_REACTION_RATE", "NO", "NOEXIT", "NONE", "NO_SPECIES",
  864. "NOT_EQUAL", "NOTIFICATIONS", "NUMBER_OF_SUBUNITS", "NUMBER_OF_TRAINS",
  865. "NUMBER_TO_RELEASE", "OBJECT", "OFF", "ON", "ORIENTATIONS",
  866. "OUTPUT_BUFFER_SIZE", "INVALID_OUTPUT_STEP_TIME",
  867. "LARGE_MOLECULAR_DISPLACEMENT", "ADD_REMOVE_MESH",
  868. "OVERWRITTEN_OUTPUT_FILE", "PARTITION_LOCATION_REPORT", "PARTITION_X",
  869. "PARTITION_Y", "PARTITION_Z", "PERIODIC_BOX", "PERIODIC_X", "PERIODIC_Y",
  870. "PERIODIC_Z", "PERIODIC_TRADITIONAL", "PI_TOK", "POLYGON_LIST",
  871. "POSITIONS", "PRINTF", "PRINT_TIME", "PROBABILITY_REPORT",
  872. "PROBABILITY_REPORT_THRESHOLD", "PROGRESS_REPORT", "RADIAL_DIRECTIONS",
  873. "RADIAL_SUBDIVISIONS", "RAND_GAUSSIAN", "RAND_UNIFORM",
  874. "REACTION_DATA_OUTPUT", "REACTION_OUTPUT_REPORT", "REAL",
  875. "RECTANGULAR_RELEASE_SITE", "RECTANGULAR_TOKEN", "REFLECTIVE",
  876. "RELEASE_EVENT_REPORT", "RELEASE_INTERVAL", "RELEASE_PATTERN",
  877. "RELEASE_PROBABILITY", "RELEASE_SITE", "REMOVE_ELEMENTS", "RIGHT",
  878. "ROTATE", "ROUND_OFF", "SCALE", "SEED", "SHAPE", "SHOW_EXACT_TIME",
  879. "SIN", "SITE_DIAMETER", "SITE_RADIUS", "SPACE_STEP", "SPHERICAL",
  880. "SPHERICAL_RELEASE_SITE", "SPHERICAL_SHELL", "SPHERICAL_SHELL_SITE",
  881. "SPRINTF", "SQRT", "STANDARD_DEVIATION", "PERIODIC_BOX_INITIAL", "STEP",
  882. "STRING_TO_NUM", "STR_VALUE", "SUBUNIT", "SUBUNIT_RELATIONSHIPS",
  883. "SUMMATION_OPERATOR", "SURFACE_CLASS", "SURFACE_ONLY", "TAN",
  884. "TARGET_ONLY", "TET_ELEMENT_CONNECTIONS", "THROUGHPUT_REPORT",
  885. "TIME_LIST", "TIME_POINTS", "TIME_STEP", "TIME_STEP_MAX", "TO", "TOP",
  886. "TRAIN_DURATION", "TRAIN_INTERVAL", "TRANSLATE", "TRANSPARENT",
  887. "TRIGGER", "TRUE", "UNLIMITED", "USELESS_VOLUME_ORIENTATION",
  888. "VACANCY_SEARCH_DISTANCE", "VAR", "VARYING_PROBABILITY_REPORT",
  889. "VERTEX_LIST", "VIZ_OUTPUT", "VIZ_OUTPUT_REPORT", "VIZ_VALUE",
  890. "VOLUME_DATA_OUTPUT", "VOLUME_OUTPUT_REPORT",
  891. "VOLUME_DEPENDENT_RELEASE_NUMBER", "VOLUME_ONLY", "VOXEL_COUNT",
  892. "VOXEL_LIST", "VOXEL_SIZE", "WARNING", "WARNINGS", "WORLD", "YES", "'='",
  893. "'&'", "':'", "'+'", "'-'", "'*'", "'/'", "UNARYMINUS", "'^'", "'['",
  894. "']'", "';'", "'\\''", "','", "'{'", "'}'", "'('", "')'", "'>'", "'<'",
  895. "'@'", "$accept", "mdl_format", "mdl_stmt_list", "mdl_stmt", "str_value",
  896. "var", "file_name", "existing_object", "existing_region", "point",
  897. "point_or_num", "boolean", "orientation_class", "list_orient_marks",
  898. "head_mark", "tail_mark", "orient_class_number", "list_range_specs",
  899. "range_spec", "include_stmt", "assignment_stmt", "assign_var",
  900. "existing_var_only", "array_value", "array_expr_only", "existing_array",
  901. "num_expr", "num_value", "intOrReal", "num_expr_only",
  902. "existing_num_var", "arith_expr", "str_expr", "str_expr_only",
  903. "existing_str_var", "io_stmt", "fopen_stmt", "new_file_stream",
  904. "file_mode", "fclose_stmt", "existing_file_stream", "format_string",
  905. "list_args", "list_arg", "printf_stmt", "fprintf_stmt", "sprintf_stmt",
  906. "print_time_stmt", "fprint_time_stmt", "notification_def",
  907. "notification_list", "notification_item_def", "notify_bilevel",
  908. "notify_level", "warnings_def", "warning_list", "warning_item_def",
  909. "warning_level", "chkpt_stmt", "exit_or_no", "time_expr",
  910. "parameter_def", "memory_partition_def", "partition_def",
  911. "partition_dimension", "molecules_def", "define_one_molecule",
  912. "define_multiple_molecules", "list_molecule_stmts", "molecule_stmt",
  913. "molecule_name", "new_molecule", "diffusion_def", "mol_timestep_def",
  914. "target_def", "maximum_step_length_def", "extern_def",
  915. "existing_molecule", "existing_surface_molecule",
  916. "existing_molecule_opt_orient", "surface_classes_def",
  917. "define_one_surface_class", "define_multiple_surface_classes",
  918. "list_surface_class_stmts", "surface_class_stmt", "$@1",
  919. "existing_surface_class", "list_surface_prop_stmts", "surface_prop_stmt",
  920. "surface_rxn_stmt", "surface_rxn_type", "equals_or_to",
  921. "surface_class_mol_stmt", "surface_mol_stmt", "list_surface_mol_density",
  922. "list_surface_mol_num", "surface_mol_quant", "rx_net_def",
  923. "list_rx_stmts", "rx_stmt", "list_dashes", "right_arrow", "left_arrow",
  924. "double_arrow", "right_cat_arrow", "double_cat_arrow", "reaction_arrow",
  925. "new_rxn_pathname", "rxn", "reactant_list", "reactant",
  926. "opt_reactant_surface_class", "reactant_surface_class", "product_list",
  927. "product", "rx_rate_syntax", "rx_rate1", "rx_rate2", "rx_dir_rate",
  928. "atomic_rate", "release_pattern_def", "new_release_pattern",
  929. "existing_release_pattern_xor_rxpn", "list_req_release_pattern_cmds",
  930. "train_count", "instance_def", "$@2", "physical_object_def",
  931. "object_def", "new_object", "start_object", "end_object",
  932. "list_opt_object_cmds", "opt_object_cmd", "transformation",
  933. "meta_object_def", "list_objects", "object_ref", "existing_object_ref",
  934. "$@3", "release_site_def", "release_site_def_new", "$@4",
  935. "release_site_geom", "release_region_expr", "release_site_def_old",
  936. "$@5", "release_site_geom_old", "list_release_site_cmds",
  937. "existing_num_or_array", "release_site_cmd", "site_size_cmd",
  938. "release_number_cmd", "constant_release_number_cmd",
  939. "gaussian_release_number_cmd", "volume_dependent_number_cmd",
  940. "concentration_dependent_release_cmd", "molecule_release_pos_list",
  941. "molecule_release_pos", "new_object_name", "polygon_list_def", "@6",
  942. "vertex_list_cmd", "single_vertex", "list_points",
  943. "element_connection_cmd", "list_element_connections",
  944. "element_connection", "list_opt_polygon_object_cmds",
  945. "opt_polygon_object_cmd", "remove_side", "$@7",
  946. "remove_element_specifier_list", "side_name", "element_specifier_list",
  947. "element_specifier", "incl_element_list_stmt", "excl_element_list_stmt",
  948. "just_an_element_list", "list_element_specs", "element_spec",
  949. "prev_region_stmt", "prev_region_type", "patch_statement", "patch_type",
  950. "in_obj_define_surface_regions", "list_in_obj_surface_region_defs",
  951. "in_obj_surface_region_def", "$@8", "$@9", "voxel_list_def", "$@10",
  952. "tet_element_connection_cmd", "element_connection_tet",
  953. "list_tet_arrays", "periodic_box_def", "$@11", "$@12", "box_def", "$@13",
  954. "$@14", "periodic_x_def", "periodic_y_def", "periodic_z_def",
  955. "periodic_traditional", "opt_aspect_ratio_def",
  956. "existing_obj_define_surface_regions",
  957. "list_existing_obj_surface_region_defs",
  958. "existing_obj_surface_region_def", "$@15", "$@16", "$@17", "new_region",
  959. "list_opt_surface_region_stmts", "opt_surface_region_stmt",
  960. "set_surface_class_stmt", "mod_surface_regions",
  961. "list_existing_surface_region_refs", "existing_surface_region_ref",
  962. "$@18", "output_def", "$@19", "output_buffer_size_def",
  963. "output_timer_def", "step_time_def", "iteration_time_def",
  964. "real_time_def", "list_count_cmds", "count_cmd", "count_stmt", "$@20",
  965. "custom_header_value", "custom_header", "exact_time_toggle",
  966. "list_count_exprs", "single_count_expr", "count_expr", "count_value",
  967. "$@21", "$@22", "file_arrow", "outfile_syntax",
  968. "existing_rxpn_or_molecule", "existing_molecule_required_orient_braces",
  969. "count_syntax", "count_syntax_1", "count_syntax_2", "count_syntax_3",
  970. "count_syntax_periodic_1", "count_syntax_periodic_2",
  971. "count_syntax_periodic_3", "count_location_specifier", "opt_hit_spec",
  972. "hit_spec", "opt_custom_header", "viz_output_def", "$@23",
  973. "list_viz_output_cmds", "viz_output_maybe_mode_cmd", "viz_mode_def",
  974. "viz_output_cmd", "viz_frames_def", "viz_filename_prefix_def",
  975. "viz_molecules_block_def", "list_viz_molecules_block_cmds",
  976. "viz_molecules_block_cmd", "viz_molecules_name_list_cmd",
  977. "optional_state", "viz_include_mols_cmd_list", "viz_include_mols_cmd",
  978. "existing_one_or_multiple_molecules", "viz_time_spec",
  979. "viz_molecules_time_points_def", "viz_molecules_time_points_cmds",
  980. "viz_molecules_time_points_one_cmd", "viz_iteration_spec",
  981. "viz_molecules_iteration_numbers_def",
  982. "viz_molecules_iteration_numbers_cmds",
  983. "viz_molecules_iteration_numbers_one_cmd", "viz_molecules_one_item",
  984. "volume_output_def", "volume_output_filename_prefix",
  985. "volume_output_molecule_list", "volume_output_molecule_decl",
  986. "volume_output_molecule", "volume_output_molecules",
  987. "volume_output_location", "volume_output_voxel_size",
  988. "volume_output_voxel_count", "volume_output_times_def", YY_NULLPTR
  989. };
  990. #endif
  991. # ifdef YYPRINT
  992. /* YYTOKNUM[NUM] -- (External) token number corresponding to the
  993. (internal) symbol number NUM (which must be that of a token). */
  994. static const yytype_uint16 yytoknum[] =
  995. {
  996. 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
  997. 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
  998. 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
  999. 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
  1000. 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
  1001. 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
  1002. 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
  1003. 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
  1004. 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
  1005. 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
  1006. 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
  1007. 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
  1008. 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
  1009. 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
  1010. 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
  1011. 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
  1012. 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
  1013. 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
  1014. 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
  1015. 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
  1016. 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
  1017. 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
  1018. 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
  1019. 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
  1020. 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
  1021. 505, 506, 507, 508, 509, 510, 511, 512, 513, 61,
  1022. 38, 58, 43, 45, 42, 47, 514, 94, 91, 93,
  1023. 59, 39, 44, 123, 125, 40, 41, 62, 60, 64
  1024. };
  1025. # endif
  1026. #define YYPACT_NINF -1031
  1027. #define yypact_value_is_default(Yystate) \
  1028. (!!((Yystate) == (-1031)))
  1029. #define YYTABLE_NINF -401
  1030. #define yytable_value_is_error(Yytable_value) \
  1031. 0
  1032. /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
  1033. STATE-NUM. */
  1034. static const yytype_int16 yypact[] =
  1035. {
  1036. 2559, -175, -162, -93, -41, -17, -6, -114, -138, 82,
  1037. -114, -114, 115, 135, 15, 178, 200, 177, 224, 228,
  1038. 246, -1031, 251, 254, 262, 274, 281, 288, 291, 300,
  1039. 282, 287, -1031, -1031, -1031, 292, 244, 279, 308, 310,
  1040. 301, 323, 309, 326, 327, 329, -1031, 316, 319, 322,
  1041. 596, 2559, -1031, -42, -1031, -1031, 339, -1031, -1031, 517,
  1042. -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031,
  1043. -1031, -1031, 342, -1031, -1031, -1031, -1031, -1031, -1031, -1031,
  1044. -1031, -1031, -1031, -1031, 165, -1031, -1031, -1031, -1031, 431,
  1045. -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, 144,
  1046. 144, -29, 2430, -29, 2430, -1031, -1031, 341, -114, -114,
  1047. -1031, 355, -1031, 358, -1031, -114, -114, -29, -51, 2430,
  1048. -114, -114, -114, -29, -114, 2430, 2430, 144, 2430, 2430,
  1049. 2430, 2430, 397, -114, 980, -1031, 576, -29, -29, 2029,
  1050. 2430, 458, 2430, -114, 2430, 2430, 2430, -1031, 555, 685,
  1051. -1031, -1031, 1873, 361, 104, 292, -1031, -1031, 292, -1031,
  1052. 292, -1031, -1031, 292, 292, 292, -1031, -1031, -1031, -1031,
  1053. -1031, -1031, -1031, -1031, 362, -1031, -1031, -1031, -1031, -1031,
  1054. 383, -1031, -1031, 369, 370, 374, 378, 379, 385, 387,
  1055. 389, -1031, 390, 391, 398, 399, 401, -1031, -1031, -1031,
  1056. -1031, 402, -1031, 410, 412, 413, 415, 2430, 2430, 2430,
  1057. -1031, -19, -1031, -1031, -1031, -1031, -1031, 1006, 4, 142,
  1058. -179, -1031, -1031, 350, -1031, -172, -1031, -1031, -116, -1031,
  1059. -1031, -1031, -71, -1031, -1031, -1031, 22, -1031, 383, 409,
  1060. -1031, -1031, 528, -1031, 396, 420, 423, 383, -1031, 543,
  1061. -1031, 528, 528, -1031, 528, 528, 528, 528, -1031, -1031,
  1062. -1031, 432, 426, 46, -1031, 443, 444, 448, 450, 451,
  1063. 455, 456, 459, 462, 465, 468, 469, 470, 473, 475,
  1064. 477, 478, 481, 351, -1031, 482, 383, -1031, 441, -1031,
  1065. 528, 528, 485, -1031, 528, -1031, 479, 528, 528, 528,
  1066. 624, 504, 627, 508, 521, 522, 523, 539, 542, 546,
  1067. 548, 550, 552, 559, 560, 567, 568, 572, 584, 590,
  1068. 599, 881, -1031, 2144, 638, -1031, -1031, 528, 764, -1031,
  1069. 841, 409, -29, -1031, -1031, -1031, -1031, 719, -114, -1031,
  1070. 532, -1031, 532, -29, -29, 2430, 2430, 2430, 2430, 2430,
  1071. 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430, 2430,
  1072. 2430, -29, 2430, 589, 589, 394, -1031, -1031, 2430, 2430,
  1073. 2430, 2430, 2430, -1031, 2430, -1031, 604, 608, 289, -1031,
  1074. -1031, -1031, -1031, -1031, 2430, -1031, 108, -1031, -1031, -1031,
  1075. -1031, -1031, -114, -114, -137, 1, -1031, -1031, -1031, 549,
  1076. -1031, -1031, -1031, -29, -29, -114, -1031, -1031, -1031, 144,
  1077. 144, 144, 39, 144, 144, 1680, 144, 144, 144, 2430,
  1078. 144, 39, 144, 144, 144, 39, 39, -1031, -1031, 104,
  1079. -25, -1031, 2430, -13, -29, 609, 17, -1031, -29, 611,
  1080. -32, -1031, -31, -31, -31, 2430, -31, 2430, -31, -31,
  1081. 2430, -31, -31, -31, -31, -31, -31, -31, -31, -31,
  1082. -1031, -1031, 2430, 102, -1031, 528, 603, 612, 713, -1031,
  1083. 296, -114, -1031, -1031, 687, 616, 666, 538, 833, -1031,
  1084. -1031, 417, 588, 614, 620, 665, 684, 805, 831, 848,
  1085. 872, 1102, 1108, 1114, 1135, 977, 984, -183, 999, -1031,
  1086. 260, 260, 589, 589, -1031, 1153, 2430, 2430, 648, 649,
  1087. 696, 811, -1031, -1031, -1031, -1031, 350, -1031, -1031, 668,
  1088. -159, -1031, -164, -1031, -1031, -1031, -81, 677, 678, 679,
  1089. 680, 686, -1031, 37, -114, -1031, 657, 681, -1031, -1031,
  1090. -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, 528, -1031,
  1091. -1031, -1031, -1031, 528, -1031, -1031, -1031, -1031, -1031, -1031,
  1092. -1031, 671, -1031, 1911, -1031, 528, 697, 698, 699, -24,
  1093. -1031, -1031, -1031, -1031, 28, 703, 682, -33, -1031, -1031,
  1094. -1031, -1031, 383, -114, 704, -1031, 710, -1031, -1031, -1031,
  1095. -1031, -1031, -1031, 528, -1031, 528, -1031, -1031, 528, -1031,
  1096. -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, 558, -1031,
  1097. 2144, -29, 104, 18, 152, -1031, 708, 538, 104, 700,
  1098. -1031, 717, 718, 715, 722, 724, 730, 729, 731, 732,
  1099. 736, -1031, -1031, 745, 738, 538, -1031, 746, -1031, -1031,
  1100. -1031, -1031, -1031, 740, -1031, 204, -1031, -1031, -1031, -1031,
  1101. -1031, -1031, -1031, -1031, -1031, -1031, 2430, 2430, 2430, 2430,
  1102. -1031, -1031, -1031, -1031, 2430, 528, 528, 2430, 2430, -1031,
  1103. 854, -1031, -1031, 751, -1031, -1031, 668, -1031, 668, -1031,
  1104. -1031, -181, -1031, 2430, 2182, 2430, 2430, 2430, -1031, -114,
  1105. 743, 748, -1031, -1031, -1031, -1031, -1031, 86, -1031, -1031,
  1106. -1031, 749, 215, -1031, -1031, -47, 104, -1031, -1031, 409,
  1107. -1031, 104, 2430, 104, 763, 771, -1031, 67, -1031, -1031,
  1108. -1031, -1031, 220, -1031, -1031, -1031, -29, -21, -1031, -1031,
  1109. -1031, -1031, 761, 104, 775, 785, 2430, -1031, 383, 768,
  1110. 767, 292, 786, 787, 791, -1031, -1031, -1031, -1031, -3,
  1111. 538, -1031, -1031, -63, 104, -1031, 2430, 2430, 931, -29,
  1112. 104, -114, -114, 2430, -114, 2430, 104, 933, 152, -1031,
  1113. 2300, 104, -1031, -1031, 1052, 1067, 1086, 1092, 1167, 528,
  1114. 528, 799, 987, -23, -1031, -1031, -81, 295, 801, -1031,
  1115. -1031, 528, -1031, 528, -1031, 528, 528, 528, 807, -114,
  1116. -114, -1031, -1031, 16, -1031, -1031, 818, -1031, -1031, -1031,
  1117. -1031, 893, -1031, 528, -1031, 306, 144, -4, -1031, -1031,
  1118. -1031, 383, 806, 809, 810, -64, -1031, -1031, -1031, -1031,
  1119. -114, -1031, 2300, 825, 55, 483, -1031, 104, -1031, 104,
  1120. 2300, 104, -1031, -1031, -1031, -1031, -1031, -1031, -168, 432,
  1121. -1031, 202, 152, -1031, -1031, -1031, -1031, -46, 152, 528,
  1122. 528, 827, 383, -1031, -1031, 104, 68, -1031, 528, -1031,
  1123. -1031, 528, -1031, 830, -1031, 1173, -1031, -1031, -1031, -1031,
  1124. 50, -1031, -14, -1031, -1031, -1031, -1031, 2430, 2430, -1031,
  1125. 816, -1031, 1911, 1911, -1031, -1031, 409, 163, -1031, -114,
  1126. -1031, 2430, 350, 832, 80, -1031, 154, -1031, 350, -1031,
  1127. 824, -114, 850, -1031, -1031, -1031, 383, -1031, -1031, -1031,
  1128. 851, 863, -1031, -4, -4, -1031, 21, -1031, 889, -1031,
  1129. 26, -1031, 26, -1031, -1031, -1031, 1173, -1031, -1031, -1031,
  1130. 2300, 857, 883, 901, 826, 2430, 1080, -1031, 868, -1031,
  1131. -1031, 193, -168, -168, -168, -1031, -1031, -1031, -1031, 2430,
  1132. -1031, -1031, -1031, 2430, -1031, -1031, 888, 895, 201, -1031,
  1133. -1031, -1031, 528, 528, -1031, -1031, -1031, -1031, 295, -1031,
  1134. 528, -1031, 2430, -1031, -1031, -1031, -1031, -1031, 447, -1031,
  1135. 144, 973, 894, 2430, -4, 907, -1031, 184, -4, 91,
  1136. -29, -4, -4, -4, -4, -1031, -1031, -1031, -1031, 12,
  1137. -1031, 890, 20, 13, -1031, 898, -1031, 104, 2430, 104,
  1138. -1031, 734, 919, -1031, 152, 2430, -1031, 915, 915, -1031,
  1139. 343, 510, -114, -1031, -1031, 911, 528, 922, -1031, -1031,
  1140. 925, -1031, -1031, 447, -1031, -1031, -1031, -1031, 942, -1031,
  1141. 945, -1031, 956, 1048, 95, 1030, 597, 95, -1031, -1031,
  1142. 941, 943, 944, -29, 383, 151, 151, -1031, -1031, -1031,
  1143. -1031, 10, 963, -1031, -1031, -1031, -1031, 963, -1031, -1031,
  1144. 8, -1031, 528, -1031, -1031, 2430, -1031, -1031, 528, 966,
  1145. -1031, 968, 171, -1031, 959, 1210, -1031, 965, 967, -1031,
  1146. -1031, -114, 104, 144, 978, 1066, 971, 972, 982, 985,
  1147. 983, -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, 989,
  1148. -1031, -1031, 979, -1031, -1031, -1031, -1031, -1031, 2430, -1031,
  1149. -1031, -1031, -1031, -1031, 528, -14, 2430, 2430, -1031, -1031,
  1150. -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, 571, 991,
  1151. -1031, 447, -1031, 1002, -1031, 1462, 1462, 145, -1031, 1004,
  1152. -1031, 144, 1018, -1031, 157, -1031, 157, 157, -1031, -1031,
  1153. -1031, 528, -1031, 882, 41, 447, 2430, -1031, 1462, 210,
  1154. 225, -1031, 104, -1031, 144, 1007, -1031, 432, -1031, 1011,
  1155. 1012, 1014, 152, -1031, 1029, 447, 528, -1031, -1031, -1031,
  1156. -1031, -1031, -1031, 89, -1031, 89, -1031, 89, -1031, -1031,
  1157. 2430, -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031,
  1158. 1017, -1031, 1017, 1017, 909, 212, 580, -1031, -1031, -1031,
  1159. -1031, -1031
  1160. };
  1161. /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
  1162. Performed when YYTABLE does not specify something else to do. Zero
  1163. means the default is an error. */
  1164. static const yytype_uint16 yydefact[] =
  1165. {
  1166. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1167. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1168. 0, 323, 0, 0, 0, 0, 0, 0, 0, 0,
  1169. 0, 0, 219, 220, 221, 0, 0, 0, 0, 0,
  1170. 0, 0, 0, 0, 0, 0, 27, 0, 0, 0,
  1171. 0, 2, 3, 331, 5, 6, 0, 7, 112, 0,
  1172. 113, 114, 115, 116, 117, 118, 8, 9, 10, 11,
  1173. 14, 12, 0, 15, 222, 223, 16, 245, 246, 17,
  1174. 18, 20, 19, 325, 0, 326, 327, 348, 347, 0,
  1175. 329, 330, 13, 328, 21, 22, 23, 24, 25, 0,
  1176. 0, 0, 0, 0, 0, 229, 224, 0, 0, 0,
  1177. 313, 0, 230, 0, 247, 0, 0, 0, 0, 0,
  1178. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1179. 0, 0, 0, 0, 0, 332, 0, 0, 0, 0,
  1180. 0, 494, 0, 0, 0, 0, 0, 567, 0, 0,
  1181. 1, 4, 0, 0, 0, 0, 367, 368, 0, 369,
  1182. 0, 366, 370, 0, 0, 0, 35, 37, 39, 38,
  1183. 34, 36, 201, 200, 0, 108, 26, 107, 111, 184,
  1184. 28, 105, 106, 0, 0, 0, 0, 0, 0, 0,
  1185. 0, 70, 0, 0, 0, 0, 0, 93, 95, 94,
  1186. 71, 0, 96, 0, 0, 0, 0, 0, 0, 0,
  1187. 74, 189, 66, 68, 69, 67, 185, 192, 189, 0,
  1188. 0, 226, 242, 40, 294, 0, 275, 277, 295, 292,
  1189. 315, 251, 0, 249, 29, 477, 0, 475, 0, 211,
  1190. 212, 213, 206, 123, 0, 0, 0, 55, 331, 0,
  1191. 324, 207, 199, 187, 214, 215, 216, 217, 209, 210,
  1192. 208, 0, 0, 0, 488, 0, 0, 0, 0, 0,
  1193. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1194. 0, 0, 0, 0, 136, 0, 124, 125, 0, 204,
  1195. 203, 205, 0, 492, 197, 60, 0, 196, 198, 202,
  1196. 571, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1197. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1198. 0, 0, 161, 0, 61, 58, 59, 0, 72, 56,
  1199. 73, 57, 0, 65, 218, 62, 63, 0, 0, 349,
  1200. 0, 364, 0, 0, 0, 0, 0, 0, 0, 0,
  1201. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1202. 0, 0, 0, 104, 103, 0, 191, 190, 0, 0,
  1203. 0, 0, 0, 186, 0, 188, 0, 0, 233, 225,
  1204. 227, 43, 48, 49, 0, 244, 41, 44, 45, 42,
  1205. 274, 276, 0, 0, 0, 0, 254, 248, 250, 0,
  1206. 474, 476, 122, 0, 0, 0, 490, 487, 489, 0,
  1207. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1208. 0, 0, 0, 0, 0, 0, 0, 135, 137, 0,
  1209. 0, 133, 0, 0, 0, 0, 0, 572, 0, 0,
  1210. 0, 612, 0, 0, 0, 0, 0, 0, 0, 0,
  1211. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1212. 160, 162, 0, 0, 51, 53, 0, 0, 331, 344,
  1213. 0, 334, 341, 343, 0, 0, 0, 0, 0, 125,
  1214. 109, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1215. 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,
  1216. 98, 99, 100, 101, 102, 193, 0, 0, 0, 0,
  1217. 236, 0, 46, 47, 293, 253, 40, 296, 278, 0,
  1218. 0, 285, 0, 287, 286, 288, 0, 0, 0, 0,
  1219. 0, 0, 312, 0, 0, 125, 0, 0, 482, 157,
  1220. 138, 145, 153, 159, 158, 140, 147, 148, 155, 154,
  1221. 156, 144, 141, 143, 139, 150, 146, 149, 142, 152,
  1222. 151, 0, 31, 0, 130, 495, 0, 0, 0, 502,
  1223. 496, 497, 498, 125, 0, 0, 0, 0, 569, 577,
  1224. 576, 578, 611, 0, 0, 613, 0, 183, 181, 182,
  1225. 163, 168, 169, 167, 166, 172, 171, 173, 174, 175,
  1226. 177, 164, 165, 178, 179, 180, 170, 176, 0, 64,
  1227. 0, 0, 0, 0, 0, 342, 0, 0, 0, 0,
  1228. 452, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1229. 0, 385, 386, 0, 0, 334, 371, 0, 376, 387,
  1230. 388, 389, 390, 0, 401, 0, 91, 88, 87, 89,
  1231. 83, 85, 76, 82, 77, 78, 0, 0, 0, 0,
  1232. 84, 90, 97, 86, 0, 232, 231, 0, 0, 237,
  1233. 238, 50, 297, 281, 279, 280, 0, 282, 0, 300,
  1234. 301, 0, 298, 0, 0, 0, 0, 0, 263, 0,
  1235. 0, 0, 261, 262, 252, 255, 256, 0, 257, 266,
  1236. 481, 0, 0, 134, 30, 0, 0, 129, 127, 128,
  1237. 126, 0, 0, 0, 0, 0, 508, 0, 503, 505,
  1238. 506, 507, 0, 574, 575, 573, 0, 0, 568, 570,
  1239. 615, 616, 614, 0, 0, 0, 0, 52, 121, 0,
  1240. 0, 0, 0, 0, 0, 333, 340, 335, 336, 0,
  1241. 334, 404, 405, 0, 0, 334, 0, 0, 0, 0,
  1242. 0, 0, 0, 0, 0, 0, 0, 0, 0, 372,
  1243. 0, 0, 411, 110, 0, 0, 0, 0, 194, 235,
  1244. 234, 0, 240, 0, 283, 284, 0, 0, 289, 302,
  1245. 303, 316, 322, 321, 320, 317, 319, 318, 0, 0,
  1246. 0, 265, 264, 0, 478, 131, 0, 491, 485, 483,
  1247. 484, 470, 500, 499, 501, 0, 0, 0, 493, 504,
  1248. 132, 579, 0, 0, 0, 0, 581, 583, 584, 585,
  1249. 0, 618, 0, 0, 621, 0, 119, 0, 345, 0,
  1250. 0, 0, 354, 355, 358, 356, 353, 357, 0, 352,
  1251. 359, 351, 0, 403, 406, 455, 456, 0, 0, 395,
  1252. 396, 0, 384, 374, 375, 0, 0, 397, 391, 314,
  1253. 382, 381, 380, 0, 365, 373, 378, 377, 379, 410,
  1254. 0, 408, 334, 79, 80, 92, 81, 0, 0, 241,
  1255. 0, 299, 0, 0, 311, 309, 310, 0, 306, 0,
  1256. 291, 0, 40, 0, 0, 269, 0, 271, 40, 258,
  1257. 0, 0, 0, 458, 510, 511, 512, 513, 514, 527,
  1258. 0, 0, 530, 0, 0, 518, 0, 515, 565, 519,
  1259. 0, 590, 0, 580, 582, 617, 65, 32, 619, 33,
  1260. 0, 0, 0, 0, 0, 0, 472, 334, 0, 338,
  1261. 337, 0, 0, 0, 0, 350, 454, 457, 453, 0,
  1262. 399, 383, 398, 0, 407, 409, 0, 0, 0, 412,
  1263. 413, 414, 195, 239, 228, 307, 308, 304, 0, 290,
  1264. 260, 243, 0, 267, 270, 268, 272, 259, 0, 486,
  1265. 0, 464, 0, 0, 0, 0, 525, 0, 0, 0,
  1266. 0, 0, 0, 0, 0, 517, 607, 609, 608, 0,
  1267. 604, 0, 0, 0, 598, 0, 620, 0, 0, 0,
  1268. 610, 0, 0, 461, 0, 0, 360, 361, 362, 363,
  1269. 0, 0, 0, 415, 402, 0, 273, 0, 445, 442,
  1270. 0, 444, 441, 479, 426, 428, 429, 430, 0, 431,
  1271. 0, 471, 0, 466, 0, 0, 0, 0, 520, 516,
  1272. 0, 0, 532, 0, 566, 521, 522, 523, 524, 603,
  1273. 605, 0, 588, 586, 594, 593, 589, 588, 597, 599,
  1274. 0, 623, 622, 624, 54, 0, 411, 346, 339, 0,
  1275. 392, 0, 0, 447, 0, 0, 305, 0, 0, 427,
  1276. 482, 0, 0, 0, 0, 468, 0, 538, 0, 0,
  1277. 0, 540, 541, 542, 543, 544, 545, 529, 526, 0,
  1278. 533, 536, 534, 537, 509, 601, 602, 606, 0, 592,
  1279. 591, 595, 596, 600, 473, 462, 0, 0, 446, 448,
  1280. 449, 425, 422, 420, 421, 423, 424, 419, 437, 0,
  1281. 439, 417, 418, 434, 435, 0, 0, 0, 440, 0,
  1282. 465, 0, 0, 459, 0, 539, 0, 0, 528, 531,
  1283. 535, 587, 334, 0, 0, 0, 0, 416, 0, 0,
  1284. 0, 480, 0, 467, 0, 0, 552, 554, 553, 555,
  1285. 555, 555, 0, 393, 0, 450, 438, 436, 433, 432,
  1286. 443, 469, 460, 0, 548, 0, 546, 0, 547, 463,
  1287. 0, 482, 562, 564, 559, 561, 558, 563, 560, 557,
  1288. 555, 556, 555, 555, 0, 0, 0, 551, 549, 550,
  1289. 394, 451
  1290. };
  1291. /* YYPGOTO[NTERM-NUM]. */
  1292. static const yytype_int16 yypgoto[] =
  1293. {
  1294. -1031, -1031, -1031, 1247, -845, 0, -102, -111, -131, -397,
  1295. -782, -96, -501, -1031, 914, 917, 194, -1031, 694, -1031,
  1296. -1031, 1162, -139, -145, -140, -1031, 840, -423, -136, -146,
  1297. -1031, -124, -76, -109, -1031, -1031, -1031, -1031, -1031, -1031,
  1298. 352, -120, -393, -1031, -1031, -1031, -1031, -1031, -1031, -1031,
  1299. -1031, 1024, 499, 63, -1031, -1031, 990, 674, -1031, 1095,
  1300. -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, -58,
  1301. -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, -496,
  1302. -1031, -1031, -1031, -1031, -67, -1031, 407, -1031, -1031, -1031,
  1303. -1031, -1031, -1031, 777, -1031, -1031, -649, -1031, -1031, 1096,
  1304. -322, -235, -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031,
  1305. 930, -1031, -1031, -1031, 537, -1031, -1031, -1031, 346, -384,
  1306. -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, -282, -107,
  1307. -16, -722, -621, -1031, -1031, 1209, -1031, 864, -1031, -1031,
  1308. -1031, -1031, -1031, -1031, -569, -1031, -1031, -1031, 720, -1031,
  1309. -582, -1031, -1031, -1031, -1031, -1031, -1031, -1031, 472, -1031,
  1310. -1031, -1031, 997, 591, -1031, -1031, -1031, 461, 256, -1031,
  1311. -1031, -1031, -1031, -1031, -1030, -994, -1031, -1031, -1031, -624,
  1312. 167, -1031, -1031, -1031, -1031, -1031, -1031, 266, -1031, -1031,
  1313. -1031, -1031, -1031, 495, -1031, -1031, -1031, -1031, -1031, -1031,
  1314. -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, 1124, -1031,
  1315. -1031, -1031, 829, -1020, -1031, -1031, -1031, -1031, 1098, -1031,
  1316. -1031, -1031, -1031, -1031, -1031, -1031, -1031, -1031, 667, -1031,
  1317. -1031, -1031, -1031, -1031, -1031, 392, -362, -1031, -1031, -1031,
  1318. -1031, -1031, -1031, -1031, 328, -1031, -1031, -1031, -1031, -1031,
  1319. -1031, -628, -800, -1031, -1031, -1031, -1031, -1031, -1031, -1031,
  1320. 812, -1031, -1031, -1031, -1031, 562, -1031, 311, -1031, -1031,
  1321. -1031, -1031, -1031, -1031, 381, -1031, -1031, -1031, 382, -873,
  1322. -1031, -1031, -1031, 955, 553, -1031, -1031, -1031, -1031, -1031
  1323. };
  1324. /* YYDEFGOTO[NTERM-NUM]. */
  1325. static const yytype_int16 yydefgoto[] =
  1326. {
  1327. -1, 50, 51, 52, 177, 210, 179, 261, 850, 937,
  1328. 938, 539, 385, 386, 387, 388, 389, 463, 464, 54,
  1329. 55, 56, 894, 562, 335, 336, 327, 212, 213, 895,
  1330. 214, 215, 238, 181, 182, 57, 58, 59, 739, 60,
  1331. 244, 287, 430, 710, 61, 62, 63, 64, 65, 66,
  1332. 283, 284, 540, 545, 67, 321, 322, 590, 68, 373,
  1333. 218, 69, 70, 71, 72, 73, 74, 75, 220, 106,
  1334. 107, 113, 378, 510, 670, 782, 890, 223, 903, 224,
  1335. 76, 77, 78, 232, 114, 396, 516, 533, 695, 696,
  1336. 697, 803, 698, 808, 904, 906, 905, 79, 225, 226,
  1337. 783, 521, 522, 523, 524, 525, 526, 900, 227, 228,
  1338. 229, 394, 517, 681, 682, 788, 789, 790, 897, 898,
  1339. 80, 111, 870, 395, 794, 81, 124, 82, 83, 84,
  1340. 338, 746, 614, 747, 748, 85, 471, 472, 473, 947,
  1341. 86, 87, 474, 617, 851, 88, 477, 164, 635, 878,
  1342. 636, 637, 638, 639, 640, 641, 642, 866, 867, 89,
  1343. 90, 772, 476, 752, 753, 644, 880, 881, 882, 969,
  1344. 970, 1095, 1149, 1150, 1043, 1044, 1045, 1046, 1152, 1153,
  1345. 1154, 1047, 1048, 1049, 1050, 971, 1092, 1093, 1175, 1211,
  1346. 91, 755, 620, 856, 857, 92, 991, 1185, 93, 1086,
  1347. 1172, 1053, 1105, 1163, 913, 1023, 94, 236, 237, 399,
  1348. 910, 1100, 1094, 705, 809, 810, 95, 263, 264, 538,
  1349. 96, 433, 293, 569, 570, 571, 572, 717, 718, 719,
  1350. 817, 917, 720, 721, 926, 927, 928, 929, 992, 995,
  1351. 1063, 1124, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115,
  1352. 1116, 1189, 1204, 1221, 1005, 97, 300, 577, 436, 437,
  1353. 578, 579, 580, 581, 825, 826, 827, 1129, 1012, 1076,
  1354. 1077, 1133, 828, 1013, 1014, 1127, 829, 1009, 1010, 1011,
  1355. 98, 302, 440, 441, 731, 732, 586, 735, 834, 944
  1356. };
  1357. /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
  1358. positive, shift that token. If negative, reduce the rule whose
  1359. number is the opposite. If YYTABLE_NINF, syntax error. */
  1360. static const yytype_int16 yytable[] =
  1361. {
  1362. 53, 216, 262, 172, 173, 235, 329, 105, 239, 334,
  1363. 110, 112, 326, 325, 768, 672, 328, 249, 288, 136,
  1364. 1006, 1006, 1125, 1131, 676, 180, 678, 180, 330, 908,
  1365. 680, 253, 561, 1072, 1006, 587, 260, 919, 966, 842,
  1366. -120, 688, 822, 331, 575, 723, 874, 247, 233, 1099,
  1367. 221, 53, 366, 769, 174, 527, 469, 724, 949, 1015,
  1368. 843, 286, 286, 46, 588, 1151, 543, 679, 714, 920,
  1369. 46, 175, 520, 689, 46, 366, 823, 344, 46, 1194,
  1370. 1157, 786, 584, 46, 99, 822, 645, 787, 690, 691,
  1371. 240, 241, 566, 662, 575, 379, 1212, 100, 191, 1213,
  1372. 1214, 178, 390, 178, 674, 576, 439, 848, 105, 222,
  1373. 844, 1215, 1216, 677, 166, 112, 234, 178, 675, 823,
  1374. 243, 243, 243, 178, 248, 235, 518, 367, 46, 852,
  1375. 955, -400, 262, 234, 858, 108, 958, 178, 178, 337,
  1376. 1015, 519, 702, 295, 339, 1195, 392, 340, 341, 342,
  1377. 367, 907, 324, 528, 333, 576, 1217, 1099, 1016, 714,
  1378. 941, 46, 380, 393, 824, 398, 101, 1074, 769, 1007,
  1379. 1007, 46, 690, 691, 806, 725, 1218, 1219, 715, 46,
  1380. 722, 967, 200, 1007, 167, 845, 1008, 1008, 176, 469,
  1381. 155, 1225, 529, 798, 168, 169, 46, 673, 376, 377,
  1382. 1008, 1099, 567, 397, 846, 323, 847, 824, 156, 1106,
  1383. 933, 853, 1106, 46, 568, 740, 921, -60, 102, 166,
  1384. 105, 751, 323, 479, 589, 222, 692, 807, 956, 157,
  1385. 466, 470, 112, 922, 530, 531, 234, 176, 46, 46,
  1386. 674, 728, 103, 368, 369, 370, 371, 563, 372, 716,
  1387. 46, 564, 46, 104, 675, 984, 180, 986, 46, 923,
  1388. 46, 968, 46, 234, 46, 864, 865, 286, 480, 715,
  1389. 942, 924, 848, 693, 117, 532, 323, 170, 323, 951,
  1390. 690, 691, 943, 535, 536, 497, 1069, 1078, 46, 167,
  1391. 680, 135, 46, 998, 1073, 999, 400, 171, 183, 168,
  1392. 169, 184, 1087, 368, 369, 370, 371, 909, 372, 811,
  1393. 46, 694, 176, 185, 573, 186, 544, 801, 323, 158,
  1394. 407, 155, 46, 187, 964, 544, 1024, 286, 286, 544,
  1395. 544, 46, 178, 508, 509, 188, 831, 46, 468, 156,
  1396. 716, 818, 961, 178, 178, 802, 46, 690, 691, 742,
  1397. 1060, 743, 159, 1061, 983, 109, 751, 323, 286, 160,
  1398. 157, 178, 582, 863, 470, 265, 806, 189, 1062, 872,
  1399. 865, 609, 323, 161, 610, 162, 190, 266, 174, 382,
  1400. 383, 166, 170, 1027, 1028, 1029, 267, 744, 115, 174,
  1401. 1206, 1208, 222, 515, 925, 175, 46, 191, 742, 46,
  1402. 743, 981, 171, 178, 178, 537, 175, 987, 116, 268,
  1403. 192, 193, 194, 46, 1186, 1003, 1004, 708, 163, 1181,
  1404. 1227, 195, 1228, 1229, 707, 196, 745, 328, 985, 333,
  1405. 269, 270, 977, 806, 178, 978, 744, 118, 178, 330,
  1406. 946, 784, 948, 785, 950, 1138, 1001, 1002, 1003, 1004,
  1407. 613, 167, 120, 914, 709, 952, 953, 954, 271, 119,
  1408. 1058, 168, 169, 1202, 952, 953, 954, 197, 960, 1026,
  1409. 1209, 468, 166, 245, 246, 1034, 563, 198, 199, 1198,
  1410. 773, 200, 1178, 159, 555, 272, 1231, 563, 559, 560,
  1411. 160, 805, 563, 201, 1199, 202, 820, 1178, 203, 121,
  1412. 925, 925, 741, 122, 161, 123, 162, 204, 975, 976,
  1413. 125, 205, 176, 126, 273, 1037, 1038, 1039, 206, 137,
  1414. 222, 127, 222, 176, 370, 371, 222, 372, 274, 275,
  1415. 276, 1179, 1180, 128, 700, 738, 277, 46, 1190, 1191,
  1416. 129, 278, 167, 1040, 170, 1041, 1042, 130, 46, 163,
  1417. 131, 1192, 168, 169, 138, 133, 1089, 207, 208, 132,
  1418. 134, 996, 997, 324, 171, 135, 812, 139, 814, 140,
  1419. 209, 925, 892, 893, 141, 925, 621, 279, 925, 925,
  1420. 925, 925, 142, 730, 143, 144, 145, 1212, 146, 147,
  1421. 1213, 1214, 148, 622, 280, 149, 150, 281, 152, 153,
  1422. 282, 154, 1215, 1216, 165, 368, 369, 370, 371, 855,
  1423. 372, 178, 333, 234, 219, 285, 292, 1090, 333, 258,
  1424. 381, 382, 383, 384, 877, 427, 879, 623, 230, 624,
  1425. 876, 231, 1056, 301, 328, 170, 332, 343, 849, 1065,
  1426. 1066, 1067, 1068, 344, 345, 346, 330, 1217, 259, 347,
  1427. 821, 328, 625, 348, 349, 171, 368, 369, 370, 371,
  1428. 350, 372, 351, 330, 352, 353, 354, 1218, 1219, -105,
  1429. 499, 626, 402, 355, 356, 627, 357, 358, 896, 368,
  1430. 369, 370, 371, 862, 372, 359, 939, 360, 361, 222,
  1431. 362, 628, 403, 646, 939, 404, 328, 158, 945, 406,
  1432. 405, 303, 409, 410, 328, 1159, 333, 411, 330, 412,
  1433. 413, 333, 855, 333, 414, 415, 330, 431, 416, 915,
  1434. 918, 417, 304, 1091, 418, 838, 178, 419, 420, 421,
  1435. 629, 630, 422, 333, 423, 879, 424, 425, 305, 916,
  1436. 426, 429, 631, 632, 432, 368, 369, 370, 371, 234,
  1437. 372, 434, 633, 333, 333, 435, 328, 328, 467, 178,
  1438. 333, 222, 222, 438, 869, 439, 333, 442, 330, 330,
  1439. 875, 333, 368, 369, 370, 371, 475, 372, 306, 307,
  1440. 443, 444, 445, 896, 896, 1200, 222, 324, 634, 736,
  1441. 368, 369, 370, 371, 939, 372, 308, 309, 446, 902,
  1442. 902, 447, 1176, 222, 328, 448, 1220, 449, 1222, 450,
  1443. 1223, 451, 310, 311, 312, 178, 330, 534, 452, 453,
  1444. 368, 369, 370, 371, 313, 372, 454, 455, 314, 315,
  1445. 730, 456, 936, 368, 369, 370, 371, 333, 372, 333,
  1446. 936, 333, 328, 457, 316, 317, 318, 319, 234, 458,
  1447. 368, 369, 370, 371, 330, 372, 372, 333, 459, 1001,
  1448. 1002, 1003, 1004, 506, 647, 333, 222, 507, 574, 896,
  1449. 583, 612, 1081, 1118, 1083, 611, 368, 369, 370, 371,
  1450. 333, 372, 368, 369, 370, 371, -400, 372, 616, 618,
  1451. 648, 619, 324, 324, 1051, 643, 649, 303, -111, 979,
  1452. -74, -74, -74, -74, 902, -74, 902, 667, 668, 541,
  1453. 542, 515, 546, 547, 549, 550, 551, 552, 304, 554,
  1454. 669, 556, 557, 558, 1064, 320, 1126, 368, 369, 370,
  1455. 371, 518, 372, 703, 305, 1132, 683, 684, 685, 686,
  1456. 936, 650, 211, 706, 217, 687, 368, 369, 370, 371,
  1457. 704, 372, 234, 234, 234, 727, 711, 712, 713, 242,
  1458. 651, 1123, 726, 733, 734, 251, 252, 749, 254, 255,
  1459. 256, 257, 781, 754, 306, 307, 756, 757, 324, 290,
  1460. 291, 759, 294, 760, 297, 298, 299, 180, 758, 761,
  1461. 763, 764, 308, 309, 265, 765, 368, 369, 370, 371,
  1462. 178, 372, 762, 1084, 766, 770, 266, 1160, 310, 311,
  1463. 312, 767, 1075, 771, 674, 267, 799, 333, 804, 333,
  1464. 313, 800, 815, 830, 314, 315, -68, -68, -68, -68,
  1465. 816, -68, 700, 1188, 832, 1188, 1188, 833, 268, 837,
  1466. 316, 317, 318, 319, 836, 839, 840, 363, 364, 365,
  1467. 841, 861, 873, 1187, 1107, 1187, 1187, 1107, 888, 269,
  1468. 270, 889, 899, 178, 912, 1183, 901, 368, 369, 370,
  1469. 371, 333, 372, 368, 369, 370, 371, 911, 372, 930,
  1470. 333, 652, 931, 932, 940, 671, 959, 271, 1201, 963,
  1471. 974, 982, 700, 368, 369, 370, 371, 988, 372, 1022,
  1472. 1020, 1158, 333, -67, -67, -67, -67, 653, -67, 990,
  1473. 368, 369, 370, 371, 272, 372, 1017, 591, 592, 993,
  1474. 594, 320, 596, 597, 654, 599, 600, 601, 602, 603,
  1475. 604, 605, 606, 607, 368, 369, 370, 371, 994, 372,
  1476. 1025, 1052, 1018, 273, 368, 369, 370, 371, 655, 372,
  1477. 1000, 1001, 1002, 1003, 1004, 460, 1193, 274, 275, 276,
  1478. 1019, 1032, 1054, 465, 234, 277, 234, 234, 1033, 1071,
  1479. 278, 368, 369, 370, 371, 1057, 372, 1080, 1085, 954,
  1480. 1096, 1097, 333, 1230, 1098, 481, 482, 483, 484, 485,
  1481. 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
  1482. 496, 1101, 498, 333, 1102, 333, 279, 333, 500, 501,
  1483. 502, 503, 504, 183, 505, 1103, 184, 1104, 1120, 1141,
  1484. 1121, 1122, 1128, 280, 511, 1136, 281, 1137, 185, 282,
  1485. 186, 1142, 1140, 1155, 1143, 1156, 1162, 1161, 187, 368,
  1486. 369, 370, 371, 1164, 372, 384, 368, 369, 370, 371,
  1487. 188, 372, 1168, 660, 1166, 548, 1170, 1167, 1169, 553,
  1488. 661, 368, 369, 370, 371, 1177, 372, 374, 368, 369,
  1489. 370, 371, 565, 372, 1178, 663, 1182, 1184, 1037, 1038,
  1490. 1039, 745, 189, 1203, 1205, 593, 1207, 595, 1210, 1226,
  1491. 598, 190, 368, 369, 370, 371, 1144, 372, 151, 1117,
  1492. 512, 1165, 608, 513, 737, 296, 1040, 428, 1041, 1042,
  1493. 699, 461, 191, 375, 368, 369, 370, 371, 989, 372,
  1494. 1145, 391, 514, 891, 1035, 192, 193, 194, 883, 368,
  1495. 369, 370, 371, 250, 372, 615, 195, 750, 962, 478,
  1496. 196, 965, 1135, 884, 854, 1197, 665, 666, 368, 369,
  1497. 370, 371, 957, 372, 368, 369, 370, 371, 1139, 372,
  1498. 401, 408, 885, 701, 368, 369, 370, 371, 886, 372,
  1499. 368, 369, 370, 371, 656, 372, 368, 369, 370, 371,
  1500. 657, 372, 197, 935, 819, 1119, 658, 934, 1130, 729,
  1501. 1059, 1070, 198, 199, 1079, 585, 200, 368, 369, 370,
  1502. 371, 0, 372, 0, 0, 0, 1146, 659, 201, 0,
  1503. 202, 0, 0, 203, 664, 368, 369, 370, 371, 0,
  1504. 372, 0, 204, 0, 0, 0, 205, 0, 887, 368,
  1505. 369, 370, 371, 206, 372, -74, -74, -74, -74, 0,
  1506. -74, 0, 1147, 0, 0, 0, 0, 0, 0, 0,
  1507. 465, 0, 46, 0, 0, 0, 0, 0, 0, 0,
  1508. 0, 0, 0, 0, 0, 183, 0, 0, 184, 0,
  1509. 0, 1141, 207, 208, 0, 0, 0, 0, 0, 0,
  1510. 185, 0, 186, 1142, 0, 209, 1143, 0, 0, 0,
  1511. 187, 0, 0, 0, 0, 0, 774, 775, 776, 777,
  1512. 0, 0, 188, 0, 778, 0, 0, 779, 780, 0,
  1513. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1514. 0, 0, 0, 791, 793, 795, 796, 797, 0, 0,
  1515. 0, 0, 0, 0, 189, 0, 0, 0, 0, 0,
  1516. 0, 0, 0, 190, 0, 0, 0, 0, 1144, 0,
  1517. 0, 0, 813, 0, 0, 0, 0, 0, 0, 0,
  1518. 0, 0, 0, 0, 191, 0, 0, 0, 0, 0,
  1519. 0, 0, 1145, 0, 0, 0, 835, 192, 193, 194,
  1520. 0, 0, 0, 0, 0, 0, 0, 0, 195, 0,
  1521. 0, 0, 196, 0, 0, 0, 859, 860, 0, 0,
  1522. 0, 0, 0, 868, 0, 871, 0, 0, 0, 0,
  1523. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1524. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1525. 0, 0, 0, 0, 197, 0, 0, 0, 0, 0,
  1526. 0, 0, 0, 0, 198, 199, 0, 0, 200, 0,
  1527. 0, 0, 0, 0, 0, 0, 0, 0, 1146, 0,
  1528. 201, 0, 202, 0, 0, 203, 0, 0, 0, 0,
  1529. 0, 0, 0, 0, 204, 0, 0, 0, 205, 0,
  1530. 0, 0, 0, 183, 0, 206, 184, 0, 0, 0,
  1531. 0, 0, 0, 0, 1147, 0, 0, 0, 185, 0,
  1532. 186, 0, 0, 0, 46, 0, 0, 0, 187, 0,
  1533. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1534. 188, 0, 0, 0, 207, 208, 0, 972, 973, 0,
  1535. 0, 0, 0, 0, 0, 0, 0, 209, 0, 0,
  1536. 0, 980, 0, 0, 0, 0, 0, 0, 0, 0,
  1537. 0, 0, 189, 0, 0, 166, 0, 0, 0, 0,
  1538. 0, 190, 0, 0, 0, 0, 0, 0, 0, 0,
  1539. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1540. 0, 0, 191, 0, 0, 1021, 0, 0, 0, 0,
  1541. 0, 0, 0, 0, 0, 192, 193, 194, 0, 1030,
  1542. 0, 0, 0, 1031, 0, 0, 195, 0, 0, 0,
  1543. 196, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1544. 0, 0, 1036, 0, 0, 167, 0, 0, 0, 0,
  1545. 0, 0, 0, 1055, 0, 168, 169, 0, 0, 0,
  1546. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1547. 0, 0, 197, 0, 0, 0, 0, 0, 1082, 0,
  1548. 0, 0, 198, 199, 0, 1088, 200, 0, 0, 0,
  1549. 0, 0, 0, 0, 0, 0, 183, 0, 201, 184,
  1550. 202, 0, 0, 203, 0, 0, 0, 0, 0, 0,
  1551. 0, 185, 204, 186, 0, 0, 205, 0, 0, 0,
  1552. 0, 187, 0, 206, 0, 0, 0, 0, 0, 0,
  1553. 0, 0, 0, 188, 183, 0, 0, 184, 170, 0,
  1554. 0, 0, 46, 0, 0, 1134, 0, 0, 0, 185,
  1555. 0, 186, 0, 0, 0, 1148, 0, 0, 171, 187,
  1556. 0, 0, 207, 208, 0, 189, 0, 0, 0, 0,
  1557. 0, 188, 0, 0, 190, 209, 174, 0, 0, 0,
  1558. 0, 0, 0, 0, 0, 0, 0, 0, 1171, 0,
  1559. 0, 0, 0, 175, 0, 191, 1173, 1174, 0, 0,
  1560. 0, 0, 0, 189, 0, 0, 0, 0, 192, 193,
  1561. 194, 0, 190, 0, 174, 1148, 1148, 0, 0, 195,
  1562. 0, 0, 0, 196, 0, 0, 0, 0, 0, 0,
  1563. 0, 175, 0, 191, 0, 0, 1196, 0, 1148, 0,
  1564. 0, 0, 0, 0, 0, 0, 192, 193, 194, 0,
  1565. 0, 0, 183, 0, 0, 184, 0, 195, 0, 0,
  1566. 0, 196, 0, 0, 0, 197, 0, 185, 0, 186,
  1567. 1224, 0, 0, 0, 0, 198, 199, 187, 0, 200,
  1568. 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
  1569. 0, 201, 0, 202, 0, 0, 203, 0, 0, 0,
  1570. 0, 0, 0, 197, 0, 204, 0, 0, 0, 205,
  1571. 176, 0, 0, 198, 199, 0, 206, 200, 0, 0,
  1572. 0, 189, 0, 0, 0, 0, 0, 0, 0, 201,
  1573. 190, 202, 0, 0, 203, 46, 0, 0, 0, 0,
  1574. 0, 0, 0, 204, 0, 0, 0, 205, 176, 0,
  1575. 0, 191, 289, 0, 206, 207, 208, 0, 0, 0,
  1576. 0, 323, 0, 0, 192, 193, 194, 183, 209, 0,
  1577. 184, 0, 0, 46, 0, 195, 0, 0, 0, 196,
  1578. 0, 0, 185, 0, 186, 0, 0, 0, 0, 0,
  1579. 0, 0, 187, 207, 208, 0, 0, 0, 0, 0,
  1580. 0, 0, 0, 0, 188, 183, 209, 0, 184, 0,
  1581. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1582. 185, 197, 186, 0, 0, 0, 0, 0, 0, 0,
  1583. 187, 198, 199, 0, 0, 200, 189, 0, 0, 0,
  1584. 0, 0, 188, 0, 0, 190, 0, 201, 0, 202,
  1585. 0, 0, 203, 0, 0, 0, 0, 0, 0, 0,
  1586. 0, 204, 0, 0, 0, 205, 191, 0, 0, 0,
  1587. 0, 0, 206, 0, 189, 0, 0, 0, 0, 192,
  1588. 193, 194, 0, 190, 0, 0, 0, 0, 0, 0,
  1589. 195, 46, 0, 0, 196, 0, 0, 0, 0, 0,
  1590. 0, 0, 0, 0, 191, 0, 0, 0, 0, 0,
  1591. 0, 207, 208, 0, 0, 0, 0, 192, 193, 194,
  1592. 0, 0, 0, 183, 209, 0, 184, 0, 195, 0,
  1593. 0, 0, 196, 0, 0, 0, 197, 0, 185, 0,
  1594. 186, 0, 0, 0, 0, 0, 198, 199, 187, 0,
  1595. 200, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1596. 188, 0, 201, 0, 202, 0, 0, 203, 0, 0,
  1597. 0, 0, 0, 0, 197, 0, 204, 0, 0, 0,
  1598. 205, 0, 0, 0, 198, 199, 0, 206, 200, 0,
  1599. 0, 0, 189, 0, 0, 0, 0, 0, 0, 0,
  1600. 201, 190, 202, 0, 0, 203, 46, 0, 0, 0,
  1601. 0, 0, 0, 0, 204, 0, 0, 0, 205, 0,
  1602. 0, 0, 191, 0, 0, 206, 207, 208, 0, 0,
  1603. 0, 0, 462, 0, 0, 192, 193, 194, 0, 209,
  1604. 0, 792, 0, 0, 46, 0, 195, 0, 0, 0,
  1605. 196, 0, 0, 183, 0, 0, 184, 0, 0, 0,
  1606. 0, 0, 0, 0, 207, 208, 0, 0, 185, 0,
  1607. 186, 0, 0, 0, 0, 0, 0, 209, 187, 0,
  1608. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1609. 188, 0, 197, 0, 0, 0, 0, 0, 0, 0,
  1610. 0, 0, 198, 199, 0, 0, 200, 0, 0, 0,
  1611. 0, 0, 0, 0, 0, 0, 0, 0, 201, 0,
  1612. 202, 0, 189, 203, 0, 0, 0, 0, 0, 0,
  1613. 0, 190, 204, 0, 0, 0, 205, 0, 0, 0,
  1614. 0, 0, 0, 206, 0, 0, 0, 0, 0, 0,
  1615. 0, 0, 191, 0, 0, 0, 0, 0, 0, 0,
  1616. 0, 0, 46, 0, 0, 192, 193, 194, 0, 0,
  1617. 0, 0, 0, 0, 0, 0, 195, 0, 0, 0,
  1618. 196, 0, 207, 208, 1, 0, 0, 0, 323, 0,
  1619. 0, 0, 0, 0, 0, 209, 0, 0, 0, 0,
  1620. 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
  1621. 3, 4, 5, 6, 0, 0, 0, 0, 0, 0,
  1622. 0, 0, 197, 0, 0, 7, 8, 9, 10, 11,
  1623. 12, 13, 198, 199, 0, 0, 200, 0, 14, 15,
  1624. 16, 0, 0, 0, 0, 0, 0, 0, 201, 0,
  1625. 202, 0, 0, 203, 0, 17, 0, 0, 0, 0,
  1626. 0, 0, 204, 18, 19, 0, 205, 0, 0, 0,
  1627. 0, 0, 0, 206, 0, 0, 20, 0, 0, 0,
  1628. 21, 0, 0, 22, 0, 0, 0, 23, 24, 0,
  1629. 0, 0, 46, 0, 0, 0, 0, 0, 0, 0,
  1630. 25, 26, 27, 28, 29, 0, 0, 0, 0, 0,
  1631. 0, 30, 207, 208, 0, 0, 0, 0, 0, 0,
  1632. 0, 0, 0, 0, 0, 209, 0, 0, 0, 31,
  1633. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1634. 0, 0, 0, 32, 33, 34, 35, 0, 0, 0,
  1635. 0, 0, 0, 0, 36, 37, 0, 0, 0, 38,
  1636. 39, 0, 0, 40, 0, 0, 0, 0, 0, 0,
  1637. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1638. 0, 0, 0, 0, 0, 41, 0, 0, 0, 0,
  1639. 42, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1640. 0, 0, 0, 0, 0, 0, 0, 0, 43, 44,
  1641. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1642. 45, 46, 0, 0, 47, 0, 0, 48, 0, 0,
  1643. 0, 0, 0, 0, 0, 49
  1644. };
  1645. static const yytype_int16 yycheck[] =
  1646. {
  1647. 0, 103, 133, 99, 100, 116, 152, 7, 117, 154,
  1648. 10, 11, 152, 152, 635, 516, 152, 124, 138, 35,
  1649. 8, 8, 12, 15, 520, 101, 522, 103, 152, 13,
  1650. 526, 127, 429, 13, 8, 66, 132, 41, 52, 42,
  1651. 82, 4, 106, 152, 77, 17, 768, 123, 115, 1043,
  1652. 108, 51, 71, 635, 83, 54, 338, 29, 840, 932,
  1653. 63, 137, 138, 242, 95, 1095, 27, 148, 92, 73,
  1654. 242, 100, 394, 36, 242, 71, 140, 260, 242, 38,
  1655. 1100, 262, 114, 242, 259, 106, 479, 268, 135, 136,
  1656. 141, 142, 105, 276, 77, 274, 7, 259, 102, 10,
  1657. 11, 101, 274, 103, 263, 138, 138, 275, 108, 109,
  1658. 113, 22, 23, 277, 75, 115, 116, 117, 277, 140,
  1659. 120, 121, 122, 123, 124, 236, 263, 146, 242, 750,
  1660. 852, 173, 263, 133, 755, 273, 858, 137, 138, 155,
  1661. 1013, 278, 535, 143, 160, 1175, 262, 163, 164, 165,
  1662. 146, 800, 152, 152, 154, 138, 67, 1151, 940, 92,
  1663. 105, 242, 220, 279, 228, 232, 259, 1012, 750, 157,
  1664. 157, 242, 135, 136, 221, 147, 87, 88, 202, 242,
  1665. 573, 195, 186, 157, 145, 188, 174, 174, 217, 471,
  1666. 25, 1211, 191, 689, 155, 156, 242, 519, 56, 57,
  1667. 174, 1195, 215, 274, 207, 268, 209, 228, 43, 1054,
  1668. 274, 274, 1057, 242, 227, 612, 220, 259, 259, 75,
  1669. 220, 618, 268, 343, 255, 225, 189, 274, 274, 64,
  1670. 332, 338, 232, 237, 233, 234, 236, 217, 242, 242,
  1671. 263, 274, 259, 262, 263, 264, 265, 272, 267, 273,
  1672. 242, 276, 242, 259, 277, 904, 332, 906, 242, 263,
  1673. 242, 882, 242, 263, 242, 761, 762, 343, 344, 202,
  1674. 215, 275, 275, 236, 259, 274, 268, 238, 268, 848,
  1675. 135, 136, 227, 403, 404, 361, 274, 274, 242, 145,
  1676. 786, 273, 242, 272, 274, 274, 274, 258, 3, 155,
  1677. 156, 6, 1024, 262, 263, 264, 265, 803, 267, 706,
  1678. 242, 274, 217, 18, 434, 20, 412, 231, 268, 154,
  1679. 274, 25, 242, 28, 274, 421, 947, 403, 404, 425,
  1680. 426, 242, 332, 44, 45, 40, 733, 242, 338, 43,
  1681. 273, 274, 274, 343, 344, 259, 242, 135, 136, 197,
  1682. 259, 199, 187, 262, 274, 273, 753, 268, 434, 194,
  1683. 64, 361, 438, 760, 471, 14, 221, 72, 277, 766,
  1684. 866, 269, 268, 208, 272, 210, 81, 26, 83, 271,
  1685. 272, 75, 238, 952, 953, 954, 35, 235, 273, 83,
  1686. 1190, 1191, 392, 393, 817, 100, 242, 102, 197, 242,
  1687. 199, 902, 258, 403, 404, 405, 100, 908, 273, 58,
  1688. 115, 116, 117, 242, 257, 264, 265, 563, 253, 274,
  1689. 1220, 126, 1222, 1223, 563, 130, 274, 563, 274, 429,
  1690. 79, 80, 269, 221, 434, 272, 235, 259, 438, 563,
  1691. 837, 676, 839, 678, 841, 274, 262, 263, 264, 265,
  1692. 154, 145, 275, 147, 563, 262, 263, 264, 107, 259,
  1693. 276, 155, 156, 1185, 262, 263, 264, 172, 865, 276,
  1694. 1192, 471, 75, 121, 122, 274, 272, 182, 183, 269,
  1695. 276, 186, 272, 187, 421, 134, 274, 272, 425, 426,
  1696. 194, 276, 272, 198, 269, 200, 276, 272, 203, 275,
  1697. 923, 924, 613, 275, 208, 259, 210, 212, 892, 893,
  1698. 259, 216, 217, 259, 163, 68, 69, 70, 223, 275,
  1699. 520, 259, 522, 217, 264, 265, 526, 267, 177, 178,
  1700. 179, 1155, 1156, 259, 534, 611, 185, 242, 1166, 1167,
  1701. 259, 190, 145, 96, 238, 98, 99, 259, 242, 253,
  1702. 259, 1172, 155, 156, 275, 273, 213, 262, 263, 259,
  1703. 273, 923, 924, 563, 258, 273, 711, 259, 713, 259,
  1704. 275, 994, 277, 278, 273, 998, 38, 226, 1001, 1002,
  1705. 1003, 1004, 259, 583, 275, 259, 259, 7, 259, 273,
  1706. 10, 11, 273, 55, 243, 273, 0, 246, 259, 82,
  1707. 249, 259, 22, 23, 173, 262, 263, 264, 265, 754,
  1708. 267, 611, 612, 613, 273, 39, 158, 274, 618, 222,
  1709. 270, 271, 272, 273, 770, 274, 771, 89, 273, 91,
  1710. 770, 273, 994, 78, 770, 238, 275, 275, 749, 1001,
  1711. 1002, 1003, 1004, 260, 275, 275, 770, 67, 251, 275,
  1712. 726, 787, 114, 275, 275, 258, 262, 263, 264, 265,
  1713. 275, 267, 275, 787, 275, 275, 275, 87, 88, 260,
  1714. 276, 133, 276, 275, 275, 137, 275, 275, 787, 262,
  1715. 263, 264, 265, 759, 267, 275, 832, 275, 275, 689,
  1716. 275, 153, 272, 276, 840, 272, 832, 154, 215, 273,
  1717. 268, 16, 259, 259, 840, 1102, 706, 259, 832, 259,
  1718. 259, 711, 857, 713, 259, 259, 840, 276, 259, 815,
  1719. 816, 259, 37, 213, 259, 741, 726, 259, 259, 259,
  1720. 192, 193, 259, 733, 259, 880, 259, 259, 53, 815,
  1721. 259, 259, 204, 205, 259, 262, 263, 264, 265, 749,
  1722. 267, 272, 214, 753, 754, 131, 892, 893, 39, 759,
  1723. 760, 761, 762, 259, 764, 138, 766, 259, 892, 893,
  1724. 770, 771, 262, 263, 264, 265, 244, 267, 93, 94,
  1725. 259, 259, 259, 892, 893, 1182, 786, 787, 250, 231,
  1726. 262, 263, 264, 265, 940, 267, 111, 112, 259, 799,
  1727. 800, 259, 231, 803, 940, 259, 1203, 259, 1205, 259,
  1728. 1207, 259, 127, 128, 129, 815, 940, 268, 259, 259,
  1729. 262, 263, 264, 265, 139, 267, 259, 259, 143, 144,
  1730. 830, 259, 832, 262, 263, 264, 265, 837, 267, 839,
  1731. 840, 841, 978, 259, 159, 160, 161, 162, 848, 259,
  1732. 262, 263, 264, 265, 978, 267, 267, 857, 259, 262,
  1733. 263, 264, 265, 259, 276, 865, 866, 259, 259, 978,
  1734. 259, 259, 1017, 276, 1019, 272, 262, 263, 264, 265,
  1735. 880, 267, 262, 263, 264, 265, 173, 267, 201, 273,
  1736. 276, 225, 892, 893, 990, 62, 276, 16, 260, 899,
  1737. 262, 263, 264, 265, 904, 267, 906, 259, 259, 410,
  1738. 411, 911, 413, 414, 415, 416, 417, 418, 37, 420,
  1739. 224, 422, 423, 424, 1000, 240, 1071, 262, 263, 264,
  1740. 265, 263, 267, 276, 53, 1080, 259, 259, 259, 259,
  1741. 940, 276, 102, 272, 104, 259, 262, 263, 264, 265,
  1742. 269, 267, 952, 953, 954, 273, 259, 259, 259, 119,
  1743. 276, 1063, 259, 259, 254, 125, 126, 259, 128, 129,
  1744. 130, 131, 118, 273, 93, 94, 259, 259, 978, 139,
  1745. 140, 259, 142, 259, 144, 145, 146, 1063, 273, 259,
  1746. 259, 259, 111, 112, 14, 259, 262, 263, 264, 265,
  1747. 1000, 267, 273, 269, 259, 259, 26, 1103, 127, 128,
  1748. 129, 273, 1012, 273, 263, 35, 273, 1017, 269, 1019,
  1749. 139, 273, 259, 262, 143, 144, 262, 263, 264, 265,
  1750. 259, 267, 1032, 1164, 259, 1166, 1167, 252, 58, 272,
  1751. 159, 160, 161, 162, 276, 259, 259, 207, 208, 209,
  1752. 259, 120, 119, 1164, 1054, 1166, 1167, 1057, 259, 79,
  1753. 80, 74, 261, 1063, 171, 1161, 259, 262, 263, 264,
  1754. 265, 1071, 267, 262, 263, 264, 265, 259, 267, 273,
  1755. 1080, 276, 273, 273, 259, 274, 259, 107, 1184, 259,
  1756. 274, 259, 1092, 262, 263, 264, 265, 273, 267, 19,
  1757. 274, 1101, 1102, 262, 263, 264, 265, 276, 267, 259,
  1758. 262, 263, 264, 265, 134, 267, 259, 443, 444, 268,
  1759. 446, 240, 448, 449, 276, 451, 452, 453, 454, 455,
  1760. 456, 457, 458, 459, 262, 263, 264, 265, 275, 267,
  1761. 272, 168, 259, 163, 262, 263, 264, 265, 276, 267,
  1762. 261, 262, 263, 264, 265, 274, 274, 177, 178, 179,
  1763. 259, 273, 268, 323, 1164, 185, 1166, 1167, 273, 279,
  1764. 190, 262, 263, 264, 265, 268, 267, 279, 259, 264,
  1765. 269, 259, 1182, 274, 259, 345, 346, 347, 348, 349,
  1766. 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
  1767. 360, 259, 362, 1203, 259, 1205, 226, 1207, 368, 369,
  1768. 370, 371, 372, 3, 374, 259, 6, 169, 277, 9,
  1769. 277, 277, 259, 243, 384, 259, 246, 259, 18, 249,
  1770. 20, 21, 273, 268, 24, 268, 170, 259, 28, 262,
  1771. 263, 264, 265, 272, 267, 273, 262, 263, 264, 265,
  1772. 40, 267, 269, 276, 272, 415, 277, 272, 269, 419,
  1773. 276, 262, 263, 264, 265, 274, 267, 261, 262, 263,
  1774. 264, 265, 432, 267, 272, 276, 272, 259, 68, 69,
  1775. 70, 274, 72, 272, 272, 445, 272, 447, 259, 272,
  1776. 450, 81, 262, 263, 264, 265, 86, 267, 51, 269,
  1777. 386, 1107, 462, 386, 610, 143, 96, 283, 98, 99,
  1778. 533, 321, 102, 218, 262, 263, 264, 265, 911, 267,
  1779. 110, 225, 392, 786, 978, 115, 116, 117, 276, 262,
  1780. 263, 264, 265, 124, 267, 471, 126, 617, 866, 342,
  1781. 130, 880, 1086, 276, 753, 1178, 506, 507, 262, 263,
  1782. 264, 265, 857, 267, 262, 263, 264, 265, 1092, 267,
  1783. 236, 263, 276, 534, 262, 263, 264, 265, 276, 267,
  1784. 262, 263, 264, 265, 272, 267, 262, 263, 264, 265,
  1785. 272, 267, 172, 830, 717, 1057, 272, 825, 1077, 577,
  1786. 998, 1009, 182, 183, 1013, 440, 186, 262, 263, 264,
  1787. 265, -1, 267, -1, -1, -1, 196, 272, 198, -1,
  1788. 200, -1, -1, 203, 261, 262, 263, 264, 265, -1,
  1789. 267, -1, 212, -1, -1, -1, 216, -1, 261, 262,
  1790. 263, 264, 265, 223, 267, 262, 263, 264, 265, -1,
  1791. 267, -1, 232, -1, -1, -1, -1, -1, -1, -1,
  1792. 610, -1, 242, -1, -1, -1, -1, -1, -1, -1,
  1793. -1, -1, -1, -1, -1, 3, -1, -1, 6, -1,
  1794. -1, 9, 262, 263, -1, -1, -1, -1, -1, -1,
  1795. 18, -1, 20, 21, -1, 275, 24, -1, -1, -1,
  1796. 28, -1, -1, -1, -1, -1, 656, 657, 658, 659,
  1797. -1, -1, 40, -1, 664, -1, -1, 667, 668, -1,
  1798. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1799. -1, -1, -1, 683, 684, 685, 686, 687, -1, -1,
  1800. -1, -1, -1, -1, 72, -1, -1, -1, -1, -1,
  1801. -1, -1, -1, 81, -1, -1, -1, -1, 86, -1,
  1802. -1, -1, 712, -1, -1, -1, -1, -1, -1, -1,
  1803. -1, -1, -1, -1, 102, -1, -1, -1, -1, -1,
  1804. -1, -1, 110, -1, -1, -1, 736, 115, 116, 117,
  1805. -1, -1, -1, -1, -1, -1, -1, -1, 126, -1,
  1806. -1, -1, 130, -1, -1, -1, 756, 757, -1, -1,
  1807. -1, -1, -1, 763, -1, 765, -1, -1, -1, -1,
  1808. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1809. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1810. -1, -1, -1, -1, 172, -1, -1, -1, -1, -1,
  1811. -1, -1, -1, -1, 182, 183, -1, -1, 186, -1,
  1812. -1, -1, -1, -1, -1, -1, -1, -1, 196, -1,
  1813. 198, -1, 200, -1, -1, 203, -1, -1, -1, -1,
  1814. -1, -1, -1, -1, 212, -1, -1, -1, 216, -1,
  1815. -1, -1, -1, 3, -1, 223, 6, -1, -1, -1,
  1816. -1, -1, -1, -1, 232, -1, -1, -1, 18, -1,
  1817. 20, -1, -1, -1, 242, -1, -1, -1, 28, -1,
  1818. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1819. 40, -1, -1, -1, 262, 263, -1, 887, 888, -1,
  1820. -1, -1, -1, -1, -1, -1, -1, 275, -1, -1,
  1821. -1, 901, -1, -1, -1, -1, -1, -1, -1, -1,
  1822. -1, -1, 72, -1, -1, 75, -1, -1, -1, -1,
  1823. -1, 81, -1, -1, -1, -1, -1, -1, -1, -1,
  1824. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1825. -1, -1, 102, -1, -1, 945, -1, -1, -1, -1,
  1826. -1, -1, -1, -1, -1, 115, 116, 117, -1, 959,
  1827. -1, -1, -1, 963, -1, -1, 126, -1, -1, -1,
  1828. 130, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1829. -1, -1, 982, -1, -1, 145, -1, -1, -1, -1,
  1830. -1, -1, -1, 993, -1, 155, 156, -1, -1, -1,
  1831. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1832. -1, -1, 172, -1, -1, -1, -1, -1, 1018, -1,
  1833. -1, -1, 182, 183, -1, 1025, 186, -1, -1, -1,
  1834. -1, -1, -1, -1, -1, -1, 3, -1, 198, 6,
  1835. 200, -1, -1, 203, -1, -1, -1, -1, -1, -1,
  1836. -1, 18, 212, 20, -1, -1, 216, -1, -1, -1,
  1837. -1, 28, -1, 223, -1, -1, -1, -1, -1, -1,
  1838. -1, -1, -1, 40, 3, -1, -1, 6, 238, -1,
  1839. -1, -1, 242, -1, -1, 1085, -1, -1, -1, 18,
  1840. -1, 20, -1, -1, -1, 1095, -1, -1, 258, 28,
  1841. -1, -1, 262, 263, -1, 72, -1, -1, -1, -1,
  1842. -1, 40, -1, -1, 81, 275, 83, -1, -1, -1,
  1843. -1, -1, -1, -1, -1, -1, -1, -1, 1128, -1,
  1844. -1, -1, -1, 100, -1, 102, 1136, 1137, -1, -1,
  1845. -1, -1, -1, 72, -1, -1, -1, -1, 115, 116,
  1846. 117, -1, 81, -1, 83, 1155, 1156, -1, -1, 126,
  1847. -1, -1, -1, 130, -1, -1, -1, -1, -1, -1,
  1848. -1, 100, -1, 102, -1, -1, 1176, -1, 1178, -1,
  1849. -1, -1, -1, -1, -1, -1, 115, 116, 117, -1,
  1850. -1, -1, 3, -1, -1, 6, -1, 126, -1, -1,
  1851. -1, 130, -1, -1, -1, 172, -1, 18, -1, 20,
  1852. 1210, -1, -1, -1, -1, 182, 183, 28, -1, 186,
  1853. -1, -1, -1, -1, -1, -1, -1, -1, -1, 40,
  1854. -1, 198, -1, 200, -1, -1, 203, -1, -1, -1,
  1855. -1, -1, -1, 172, -1, 212, -1, -1, -1, 216,
  1856. 217, -1, -1, 182, 183, -1, 223, 186, -1, -1,
  1857. -1, 72, -1, -1, -1, -1, -1, -1, -1, 198,
  1858. 81, 200, -1, -1, 203, 242, -1, -1, -1, -1,
  1859. -1, -1, -1, 212, -1, -1, -1, 216, 217, -1,
  1860. -1, 102, 103, -1, 223, 262, 263, -1, -1, -1,
  1861. -1, 268, -1, -1, 115, 116, 117, 3, 275, -1,
  1862. 6, -1, -1, 242, -1, 126, -1, -1, -1, 130,
  1863. -1, -1, 18, -1, 20, -1, -1, -1, -1, -1,
  1864. -1, -1, 28, 262, 263, -1, -1, -1, -1, -1,
  1865. -1, -1, -1, -1, 40, 3, 275, -1, 6, -1,
  1866. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1867. 18, 172, 20, -1, -1, -1, -1, -1, -1, -1,
  1868. 28, 182, 183, -1, -1, 186, 72, -1, -1, -1,
  1869. -1, -1, 40, -1, -1, 81, -1, 198, -1, 200,
  1870. -1, -1, 203, -1, -1, -1, -1, -1, -1, -1,
  1871. -1, 212, -1, -1, -1, 216, 102, -1, -1, -1,
  1872. -1, -1, 223, -1, 72, -1, -1, -1, -1, 115,
  1873. 116, 117, -1, 81, -1, -1, -1, -1, -1, -1,
  1874. 126, 242, -1, -1, 130, -1, -1, -1, -1, -1,
  1875. -1, -1, -1, -1, 102, -1, -1, -1, -1, -1,
  1876. -1, 262, 263, -1, -1, -1, -1, 115, 116, 117,
  1877. -1, -1, -1, 3, 275, -1, 6, -1, 126, -1,
  1878. -1, -1, 130, -1, -1, -1, 172, -1, 18, -1,
  1879. 20, -1, -1, -1, -1, -1, 182, 183, 28, -1,
  1880. 186, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1881. 40, -1, 198, -1, 200, -1, -1, 203, -1, -1,
  1882. -1, -1, -1, -1, 172, -1, 212, -1, -1, -1,
  1883. 216, -1, -1, -1, 182, 183, -1, 223, 186, -1,
  1884. -1, -1, 72, -1, -1, -1, -1, -1, -1, -1,
  1885. 198, 81, 200, -1, -1, 203, 242, -1, -1, -1,
  1886. -1, -1, -1, -1, 212, -1, -1, -1, 216, -1,
  1887. -1, -1, 102, -1, -1, 223, 262, 263, -1, -1,
  1888. -1, -1, 268, -1, -1, 115, 116, 117, -1, 275,
  1889. -1, 239, -1, -1, 242, -1, 126, -1, -1, -1,
  1890. 130, -1, -1, 3, -1, -1, 6, -1, -1, -1,
  1891. -1, -1, -1, -1, 262, 263, -1, -1, 18, -1,
  1892. 20, -1, -1, -1, -1, -1, -1, 275, 28, -1,
  1893. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1894. 40, -1, 172, -1, -1, -1, -1, -1, -1, -1,
  1895. -1, -1, 182, 183, -1, -1, 186, -1, -1, -1,
  1896. -1, -1, -1, -1, -1, -1, -1, -1, 198, -1,
  1897. 200, -1, 72, 203, -1, -1, -1, -1, -1, -1,
  1898. -1, 81, 212, -1, -1, -1, 216, -1, -1, -1,
  1899. -1, -1, -1, 223, -1, -1, -1, -1, -1, -1,
  1900. -1, -1, 102, -1, -1, -1, -1, -1, -1, -1,
  1901. -1, -1, 242, -1, -1, 115, 116, 117, -1, -1,
  1902. -1, -1, -1, -1, -1, -1, 126, -1, -1, -1,
  1903. 130, -1, 262, 263, 5, -1, -1, -1, 268, -1,
  1904. -1, -1, -1, -1, -1, 275, -1, -1, -1, -1,
  1905. -1, -1, -1, -1, -1, -1, -1, -1, -1, 30,
  1906. 31, 32, 33, 34, -1, -1, -1, -1, -1, -1,
  1907. -1, -1, 172, -1, -1, 46, 47, 48, 49, 50,
  1908. 51, 52, 182, 183, -1, -1, 186, -1, 59, 60,
  1909. 61, -1, -1, -1, -1, -1, -1, -1, 198, -1,
  1910. 200, -1, -1, 203, -1, 76, -1, -1, -1, -1,
  1911. -1, -1, 212, 84, 85, -1, 216, -1, -1, -1,
  1912. -1, -1, -1, 223, -1, -1, 97, -1, -1, -1,
  1913. 101, -1, -1, 104, -1, -1, -1, 108, 109, -1,
  1914. -1, -1, 242, -1, -1, -1, -1, -1, -1, -1,
  1915. 121, 122, 123, 124, 125, -1, -1, -1, -1, -1,
  1916. -1, 132, 262, 263, -1, -1, -1, -1, -1, -1,
  1917. -1, -1, -1, -1, -1, 275, -1, -1, -1, 150,
  1918. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1919. -1, -1, -1, 164, 165, 166, 167, -1, -1, -1,
  1920. -1, -1, -1, -1, 175, 176, -1, -1, -1, 180,
  1921. 181, -1, -1, 184, -1, -1, -1, -1, -1, -1,
  1922. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1923. -1, -1, -1, -1, -1, 206, -1, -1, -1, -1,
  1924. 211, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1925. -1, -1, -1, -1, -1, -1, -1, -1, 229, 230,
  1926. -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
  1927. 241, 242, -1, -1, 245, -1, -1, 248, -1, -1,
  1928. -1, -1, -1, -1, -1, 256
  1929. };
  1930. /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
  1931. symbol of state STATE-NUM. */
  1932. static const yytype_uint16 yystos[] =
  1933. {
  1934. 0, 5, 30, 31, 32, 33, 34, 46, 47, 48,
  1935. 49, 50, 51, 52, 59, 60, 61, 76, 84, 85,
  1936. 97, 101, 104, 108, 109, 121, 122, 123, 124, 125,
  1937. 132, 150, 164, 165, 166, 167, 175, 176, 180, 181,
  1938. 184, 206, 211, 229, 230, 241, 242, 245, 248, 256,
  1939. 281, 282, 283, 285, 299, 300, 301, 315, 316, 317,
  1940. 319, 324, 325, 326, 327, 328, 329, 334, 338, 341,
  1941. 342, 343, 344, 345, 346, 347, 360, 361, 362, 377,
  1942. 400, 405, 407, 408, 409, 415, 420, 421, 425, 439,
  1943. 440, 470, 475, 478, 486, 496, 500, 535, 560, 259,
  1944. 259, 259, 259, 259, 259, 285, 349, 350, 273, 273,
  1945. 285, 401, 285, 351, 364, 273, 273, 259, 259, 259,
  1946. 275, 275, 275, 259, 406, 259, 259, 259, 259, 259,
  1947. 259, 259, 259, 273, 273, 273, 410, 275, 275, 259,
  1948. 259, 273, 259, 275, 259, 259, 259, 273, 273, 273,
  1949. 0, 283, 259, 82, 259, 25, 43, 64, 154, 187,
  1950. 194, 208, 210, 253, 427, 173, 75, 145, 155, 156,
  1951. 238, 258, 291, 291, 83, 100, 217, 284, 285, 286,
  1952. 312, 313, 314, 3, 6, 18, 20, 28, 40, 72,
  1953. 81, 102, 115, 116, 117, 126, 130, 172, 182, 183,
  1954. 186, 198, 200, 203, 212, 216, 223, 262, 263, 275,
  1955. 285, 306, 307, 308, 310, 311, 286, 306, 340, 273,
  1956. 348, 349, 285, 357, 359, 378, 379, 388, 389, 390,
  1957. 273, 273, 363, 364, 285, 287, 487, 488, 312, 313,
  1958. 141, 142, 306, 285, 320, 320, 320, 312, 285, 409,
  1959. 415, 306, 306, 291, 306, 306, 306, 306, 222, 251,
  1960. 291, 287, 288, 497, 498, 14, 26, 35, 58, 79,
  1961. 80, 107, 134, 163, 177, 178, 179, 185, 190, 226,
  1962. 243, 246, 249, 330, 331, 39, 312, 321, 321, 103,
  1963. 306, 306, 158, 502, 306, 285, 301, 306, 306, 306,
  1964. 536, 78, 561, 16, 37, 53, 93, 94, 111, 112,
  1965. 127, 128, 129, 139, 143, 144, 159, 160, 161, 162,
  1966. 240, 335, 336, 268, 285, 302, 304, 306, 308, 309,
  1967. 311, 313, 275, 285, 303, 304, 305, 410, 410, 410,
  1968. 410, 410, 410, 275, 260, 275, 275, 275, 275, 275,
  1969. 275, 275, 275, 275, 275, 275, 275, 275, 275, 275,
  1970. 275, 275, 275, 306, 306, 306, 71, 146, 262, 263,
  1971. 264, 265, 267, 339, 261, 339, 56, 57, 352, 274,
  1972. 349, 270, 271, 272, 273, 292, 293, 294, 295, 296,
  1973. 274, 379, 262, 279, 391, 403, 365, 274, 364, 489,
  1974. 274, 488, 276, 272, 272, 268, 273, 274, 498, 259,
  1975. 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
  1976. 259, 259, 259, 259, 259, 259, 259, 274, 331, 259,
  1977. 322, 276, 259, 501, 272, 131, 538, 539, 259, 138,
  1978. 562, 563, 259, 259, 259, 259, 259, 259, 259, 259,
  1979. 259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
  1980. 274, 336, 268, 297, 298, 306, 286, 39, 285, 408,
  1981. 409, 416, 417, 418, 422, 244, 442, 426, 442, 321,
  1982. 312, 306, 306, 306, 306, 306, 306, 306, 306, 306,
  1983. 306, 306, 306, 306, 306, 306, 306, 312, 306, 276,
  1984. 306, 306, 306, 306, 306, 306, 259, 259, 44, 45,
  1985. 353, 306, 294, 295, 390, 285, 366, 392, 263, 278,
  1986. 380, 381, 382, 383, 384, 385, 386, 54, 152, 191,
  1987. 233, 234, 274, 367, 268, 321, 321, 285, 499, 291,
  1988. 332, 332, 332, 27, 291, 333, 332, 332, 306, 332,
  1989. 332, 332, 332, 306, 332, 333, 332, 332, 332, 333,
  1990. 333, 289, 303, 272, 276, 306, 105, 215, 227, 503,
  1991. 504, 505, 506, 321, 259, 77, 138, 537, 540, 541,
  1992. 542, 543, 312, 259, 114, 563, 566, 66, 95, 255,
  1993. 337, 337, 337, 306, 337, 306, 337, 337, 306, 337,
  1994. 337, 337, 337, 337, 337, 337, 337, 337, 306, 269,
  1995. 272, 272, 259, 154, 412, 417, 201, 423, 273, 225,
  1996. 472, 38, 55, 89, 91, 114, 133, 137, 153, 192,
  1997. 193, 204, 205, 214, 250, 428, 430, 431, 432, 433,
  1998. 434, 435, 436, 62, 445, 322, 276, 276, 276, 276,
  1999. 276, 276, 276, 276, 276, 276, 272, 272, 272, 272,
  2000. 276, 276, 276, 276, 261, 306, 306, 259, 259, 224,
  2001. 354, 274, 292, 380, 263, 277, 359, 277, 359, 148,
  2002. 359, 393, 394, 259, 259, 259, 259, 259, 4, 36,
  2003. 135, 136, 189, 236, 274, 368, 369, 370, 372, 373,
  2004. 285, 492, 322, 276, 269, 493, 272, 302, 309, 313,
  2005. 323, 259, 259, 259, 92, 202, 273, 507, 508, 509,
  2006. 512, 513, 322, 17, 29, 147, 259, 273, 274, 540,
  2007. 285, 564, 565, 259, 254, 567, 231, 298, 312, 318,
  2008. 289, 287, 197, 199, 235, 274, 411, 413, 414, 259,
  2009. 428, 289, 443, 444, 273, 471, 259, 259, 273, 259,
  2010. 259, 259, 273, 259, 259, 259, 259, 273, 412, 430,
  2011. 259, 273, 441, 276, 306, 306, 306, 306, 306, 306,
  2012. 306, 118, 355, 380, 381, 381, 262, 268, 395, 396,
  2013. 397, 306, 239, 306, 404, 306, 306, 306, 359, 273,
  2014. 273, 231, 259, 371, 269, 276, 221, 274, 373, 494,
  2015. 495, 289, 303, 306, 303, 259, 259, 510, 274, 508,
  2016. 276, 312, 106, 140, 228, 544, 545, 546, 552, 556,
  2017. 262, 289, 259, 252, 568, 306, 276, 272, 410, 259,
  2018. 259, 259, 42, 63, 113, 188, 207, 209, 275, 287,
  2019. 288, 424, 412, 274, 443, 303, 473, 474, 412, 306,
  2020. 306, 120, 312, 289, 359, 359, 437, 438, 306, 285,
  2021. 402, 306, 289, 119, 411, 285, 304, 309, 429, 303,
  2022. 446, 447, 448, 276, 276, 276, 276, 261, 259, 74,
  2023. 356, 394, 277, 278, 302, 309, 313, 398, 399, 261,
  2024. 387, 259, 285, 358, 374, 376, 375, 376, 13, 359,
  2025. 490, 259, 171, 484, 147, 291, 312, 511, 291, 41,
  2026. 73, 220, 237, 263, 275, 307, 514, 515, 516, 517,
  2027. 273, 273, 273, 274, 545, 564, 285, 289, 290, 309,
  2028. 259, 105, 215, 227, 569, 215, 289, 419, 289, 290,
  2029. 289, 424, 262, 263, 264, 411, 274, 473, 411, 259,
  2030. 289, 274, 438, 259, 274, 447, 52, 195, 412, 449,
  2031. 450, 465, 306, 306, 274, 399, 399, 269, 272, 285,
  2032. 306, 292, 259, 274, 376, 274, 376, 292, 273, 366,
  2033. 259, 476, 518, 268, 275, 519, 516, 516, 272, 274,
  2034. 261, 262, 263, 264, 265, 534, 8, 157, 174, 557,
  2035. 558, 559, 548, 553, 554, 559, 290, 259, 259, 259,
  2036. 274, 306, 19, 485, 412, 272, 276, 424, 424, 424,
  2037. 306, 306, 273, 273, 274, 398, 306, 68, 69, 70,
  2038. 96, 98, 99, 454, 455, 456, 457, 461, 462, 463,
  2039. 464, 291, 168, 481, 268, 306, 516, 268, 276, 515,
  2040. 259, 262, 277, 520, 312, 516, 516, 516, 516, 274,
  2041. 558, 279, 13, 274, 284, 285, 549, 550, 274, 554,
  2042. 279, 303, 306, 303, 269, 259, 479, 411, 306, 213,
  2043. 274, 213, 466, 467, 492, 451, 269, 259, 259, 455,
  2044. 491, 259, 259, 259, 169, 482, 284, 285, 522, 523,
  2045. 524, 525, 526, 527, 528, 529, 530, 269, 276, 524,
  2046. 277, 277, 277, 286, 521, 12, 303, 555, 259, 547,
  2047. 547, 15, 303, 551, 306, 448, 259, 259, 274, 467,
  2048. 273, 9, 21, 24, 86, 110, 196, 232, 306, 452,
  2049. 453, 454, 458, 459, 460, 268, 268, 493, 285, 289,
  2050. 291, 259, 170, 483, 272, 296, 272, 272, 269, 269,
  2051. 277, 306, 480, 306, 306, 468, 231, 274, 272, 459,
  2052. 459, 274, 272, 291, 259, 477, 257, 287, 288, 531,
  2053. 531, 531, 412, 274, 38, 454, 306, 460, 269, 269,
  2054. 289, 291, 411, 272, 532, 272, 532, 272, 532, 411,
  2055. 259, 469, 7, 10, 11, 22, 23, 67, 87, 88,
  2056. 289, 533, 289, 289, 306, 493, 272, 532, 532, 532,
  2057. 274, 274
  2058. };
  2059. /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
  2060. static const yytype_uint16 yyr1[] =
  2061. {
  2062. 0, 280, 281, 282, 282, 283, 283, 283, 283, 283,
  2063. 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,
  2064. 283, 283, 283, 283, 283, 283, 284, 285, 286, 287,
  2065. 288, 289, 290, 290, 291, 291, 291, 291, 291, 291,
  2066. 292, 292, 292, 292, 293, 293, 293, 293, 294, 295,
  2067. 296, 297, 297, 298, 298, 299, 300, 300, 300, 300,
  2068. 301, 302, 303, 303, 304, 305, 306, 306, 307, 307,
  2069. 308, 308, 309, 309, 310, 311, 311, 311, 311, 311,
  2070. 311, 311, 311, 311, 311, 311, 311, 311, 311, 311,
  2071. 311, 311, 311, 311, 311, 311, 311, 311, 311, 311,
  2072. 311, 311, 311, 311, 311, 312, 312, 313, 313, 313,
  2073. 313, 314, 315, 315, 315, 315, 315, 315, 315, 316,
  2074. 317, 318, 319, 320, 321, 322, 322, 323, 323, 323,
  2075. 324, 325, 326, 327, 328, 329, 330, 330, 331, 331,
  2076. 331, 331, 331, 331, 331, 331, 331, 331, 331, 331,
  2077. 331, 331, 331, 331, 331, 331, 331, 332, 333, 333,
  2078. 334, 335, 335, 336, 336, 336, 336, 336, 336, 336,
  2079. 336, 336, 336, 336, 336, 336, 336, 336, 336, 336,
  2080. 336, 337, 337, 337, 338, 338, 338, 338, 338, 339,
  2081. 339, 339, 340, 340, 340, 340, 341, 341, 341, 341,
  2082. 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
  2083. 341, 341, 341, 341, 342, 342, 342, 342, 343, 344,
  2084. 344, 344, 345, 345, 346, 347, 348, 348, 349, 350,
  2085. 351, 352, 352, 353, 353, 353, 354, 354, 355, 355,
  2086. 356, 356, 357, 358, 359, 360, 360, 361, 362, 363,
  2087. 363, 365, 364, 366, 367, 367, 368, 368, 369, 369,
  2088. 369, 370, 370, 370, 371, 371, 372, 373, 373, 374,
  2089. 374, 375, 375, 376, 377, 378, 378, 379, 380, 380,
  2090. 381, 382, 383, 384, 385, 386, 386, 386, 386, 387,
  2091. 387, 388, 389, 389, 390, 391, 391, 392, 393, 393,
  2092. 394, 394, 395, 395, 396, 397, 398, 398, 398, 399,
  2093. 399, 399, 400, 401, 402, 403, 403, 403, 403, 403,
  2094. 403, 404, 404, 406, 405, 407, 408, 408, 408, 408,
  2095. 408, 409, 410, 411, 412, 412, 413, 414, 414, 414,
  2096. 415, 416, 416, 417, 417, 419, 418, 420, 420, 422,
  2097. 421, 423, 423, 423, 423, 423, 423, 423, 423, 424,
  2098. 424, 424, 424, 424, 426, 425, 427, 427, 427, 427,
  2099. 427, 428, 428, 429, 430, 430, 430, 430, 430, 430,
  2100. 430, 430, 430, 430, 430, 431, 431, 432, 432, 432,
  2101. 432, 433, 433, 434, 435, 436, 436, 437, 437, 438,
  2102. 439, 441, 440, 442, 443, 444, 444, 445, 446, 446,
  2103. 447, 448, 448, 449, 449, 451, 450, 452, 452, 453,
  2104. 453, 453, 453, 453, 453, 453, 454, 454, 455, 455,
  2105. 455, 455, 456, 457, 458, 459, 459, 460, 460, 460,
  2106. 461, 462, 462, 463, 464, 464, 465, 466, 466, 468,
  2107. 469, 467, 471, 470, 472, 473, 474, 474, 476, 477,
  2108. 475, 479, 480, 478, 481, 481, 482, 482, 483, 483,
  2109. 484, 484, 485, 485, 486, 487, 487, 489, 490, 491,
  2110. 488, 492, 493, 493, 494, 494, 495, 496, 497, 497,
  2111. 499, 498, 501, 500, 502, 502, 503, 503, 503, 504,
  2112. 505, 506, 507, 507, 507, 508, 508, 508, 510, 509,
  2113. 511, 511, 511, 512, 513, 514, 514, 515, 516, 516,
  2114. 516, 516, 516, 516, 516, 516, 516, 518, 517, 517,
  2115. 519, 517, 520, 520, 520, 520, 520, 521, 522, 523,
  2116. 524, 524, 524, 524, 524, 524, 525, 526, 527, 528,
  2117. 529, 530, 531, 531, 531, 532, 532, 533, 533, 533,
  2118. 533, 533, 533, 533, 533, 534, 534, 536, 535, 537,
  2119. 537, 538, 538, 539, 539, 539, 540, 540, 541, 542,
  2120. 543, 544, 544, 545, 545, 545, 546, 547, 547, 548,
  2121. 548, 549, 549, 550, 550, 551, 551, 552, 553, 553,
  2122. 554, 555, 555, 556, 557, 557, 558, 559, 559, 559,
  2123. 560, 561, 562, 562, 563, 564, 565, 565, 566, 567,
  2124. 568, 569, 569, 569, 569
  2125. };
  2126. /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
  2127. static const yytype_uint8 yyr2[] =
  2128. {
  2129. 0, 2, 1, 1, 2, 1, 1, 1, 1, 1,
  2130. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  2131. 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  2132. 4, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  2133. 0, 1, 1, 1, 1, 1, 2, 2, 1, 1,
  2134. 3, 1, 3, 1, 7, 3, 3, 3, 3, 3,
  2135. 1, 1, 1, 1, 3, 1, 1, 1, 1, 1,
  2136. 1, 1, 1, 1, 1, 3, 4, 4, 4, 6,
  2137. 6, 6, 4, 4, 4, 4, 4, 4, 4, 4,
  2138. 4, 4, 6, 1, 1, 1, 1, 4, 3, 3,
  2139. 3, 3, 3, 2, 2, 1, 1, 1, 1, 3,
  2140. 5, 1, 1, 1, 1, 1, 1, 1, 1, 7,
  2141. 1, 1, 4, 1, 1, 0, 3, 1, 1, 1,
  2142. 5, 7, 7, 4, 6, 4, 1, 2, 3, 3,
  2143. 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  2144. 3, 3, 3, 3, 3, 3, 3, 1, 1, 1,
  2145. 4, 1, 2, 3, 3, 3, 3, 3, 3, 3,
  2146. 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  2147. 3, 1, 1, 1, 3, 3, 4, 3, 4, 0,
  2148. 1, 1, 1, 3, 5, 7, 3, 3, 3, 3,
  2149. 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  2150. 3, 3, 3, 3, 3, 3, 3, 3, 3, 1,
  2151. 1, 1, 1, 1, 2, 4, 1, 2, 8, 1,
  2152. 1, 3, 3, 0, 3, 3, 0, 1, 0, 3,
  2153. 0, 1, 1, 2, 2, 1, 1, 2, 4, 1,
  2154. 2, 0, 5, 1, 0, 2, 1, 1, 3, 4,
  2155. 4, 1, 1, 1, 1, 1, 1, 4, 4, 1,
  2156. 2, 1, 2, 3, 4, 1, 2, 1, 1, 2,
  2157. 2, 2, 2, 3, 3, 1, 1, 1, 1, 0,
  2158. 2, 6, 1, 3, 1, 0, 2, 2, 1, 3,
  2159. 1, 1, 1, 1, 3, 5, 1, 2, 2, 1,
  2160. 1, 1, 5, 1, 1, 0, 4, 4, 4, 4,
  2161. 4, 1, 1, 0, 3, 1, 1, 1, 1, 1,
  2162. 1, 1, 1, 1, 0, 2, 1, 3, 3, 5,
  2163. 6, 1, 2, 1, 1, 0, 7, 1, 1, 0,
  2164. 8, 3, 3, 3, 3, 3, 3, 3, 3, 1,
  2165. 3, 3, 3, 3, 0, 7, 1, 1, 1, 1,
  2166. 1, 1, 2, 1, 3, 3, 1, 3, 3, 3,
  2167. 3, 3, 3, 4, 3, 1, 1, 1, 1, 1,
  2168. 1, 3, 6, 9, 12, 3, 3, 1, 2, 2,
  2169. 1, 0, 9, 4, 1, 1, 2, 4, 1, 2,
  2170. 1, 0, 2, 1, 1, 0, 5, 1, 1, 1,
  2171. 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
  2172. 1, 1, 5, 5, 1, 1, 3, 1, 3, 1,
  2173. 3, 1, 1, 5, 1, 1, 4, 1, 2, 0,
  2174. 0, 7, 0, 8, 4, 1, 1, 2, 0, 0,
  2175. 14, 0, 0, 14, 0, 3, 0, 3, 0, 3,
  2176. 0, 3, 0, 3, 4, 1, 2, 0, 0, 0,
  2177. 11, 1, 0, 2, 1, 1, 3, 4, 1, 2,
  2178. 0, 5, 0, 7, 0, 3, 1, 1, 1, 3,
  2179. 3, 3, 0, 1, 2, 1, 1, 1, 0, 6,
  2180. 1, 1, 1, 3, 3, 1, 3, 2, 1, 1,
  2181. 3, 3, 3, 3, 3, 2, 4, 0, 5, 4,
  2182. 0, 5, 1, 2, 2, 3, 2, 1, 1, 2,
  2183. 1, 1, 1, 1, 1, 1, 4, 4, 4, 6,
  2184. 6, 6, 1, 1, 1, 0, 2, 1, 1, 1,
  2185. 1, 1, 1, 1, 1, 0, 2, 0, 6, 1,
  2186. 2, 0, 1, 3, 3, 3, 1, 1, 1, 3,
  2187. 4, 1, 2, 1, 1, 1, 4, 2, 0, 2,
  2188. 0, 2, 2, 1, 1, 1, 1, 4, 1, 2,
  2189. 3, 1, 1, 4, 1, 2, 3, 1, 1, 1,
  2190. 9, 3, 1, 2, 3, 1, 1, 3, 3, 3,
  2191. 3, 0, 3, 3, 3
  2192. };
  2193. #define yyerrok (yyerrstatus = 0)
  2194. #define yyclearin (yychar = YYEMPTY)
  2195. #define YYEMPTY (-2)
  2196. #define YYEOF 0
  2197. #define YYACCEPT goto yyacceptlab
  2198. #define YYABORT goto yyabortlab
  2199. #define YYERROR goto yyerrorlab
  2200. #define YYRECOVERING() (!!yyerrstatus)
  2201. #define YYBACKUP(Token, Value) \
  2202. do \
  2203. if (yychar == YYEMPTY) \
  2204. { \
  2205. yychar = (Token); \
  2206. yylval = (Value); \
  2207. YYPOPSTACK (yylen); \
  2208. yystate = *yyssp; \
  2209. goto yybackup; \
  2210. } \
  2211. else \
  2212. { \
  2213. yyerror (parse_state, scanner, YY_("syntax error: cannot back up")); \
  2214. YYERROR; \
  2215. } \
  2216. while (0)
  2217. /* Error token number */
  2218. #define YYTERROR 1
  2219. #define YYERRCODE 256
  2220. /* Enable debugging if requested. */
  2221. #if YYDEBUG
  2222. # ifndef YYFPRINTF
  2223. # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
  2224. # define YYFPRINTF fprintf
  2225. # endif
  2226. # define YYDPRINTF(Args) \
  2227. do { \
  2228. if (yydebug) \
  2229. YYFPRINTF Args; \
  2230. } while (0)
  2231. /* This macro is provided for backward compatibility. */
  2232. #ifndef YY_LOCATION_PRINT
  2233. # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
  2234. #endif
  2235. # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
  2236. do { \
  2237. if (yydebug) \
  2238. { \
  2239. YYFPRINTF (stderr, "%s ", Title); \
  2240. yy_symbol_print (stderr, \
  2241. Type, Value, parse_state, scanner); \
  2242. YYFPRINTF (stderr, "\n"); \
  2243. } \
  2244. } while (0)
  2245. /*----------------------------------------.
  2246. | Print this symbol's value on YYOUTPUT. |
  2247. `----------------------------------------*/
  2248. static void
  2249. yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct mdlparse_vars *parse_state, yyscan_t scanner)
  2250. {
  2251. FILE *yyo = yyoutput;
  2252. YYUSE (yyo);
  2253. YYUSE (parse_state);
  2254. YYUSE (scanner);
  2255. if (!yyvaluep)
  2256. return;
  2257. # ifdef YYPRINT
  2258. if (yytype < YYNTOKENS)
  2259. YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
  2260. # endif
  2261. YYUSE (yytype);
  2262. }
  2263. /*--------------------------------.
  2264. | Print this symbol on YYOUTPUT. |
  2265. `--------------------------------*/
  2266. static void
  2267. yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct mdlparse_vars *parse_state, yyscan_t scanner)
  2268. {
  2269. YYFPRINTF (yyoutput, "%s %s (",
  2270. yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
  2271. yy_symbol_value_print (yyoutput, yytype, yyvaluep, parse_state, scanner);
  2272. YYFPRINTF (yyoutput, ")");
  2273. }
  2274. /*------------------------------------------------------------------.
  2275. | yy_stack_print -- Print the state stack from its BOTTOM up to its |
  2276. | TOP (included). |
  2277. `------------------------------------------------------------------*/
  2278. static void
  2279. yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
  2280. {
  2281. YYFPRINTF (stderr, "Stack now");
  2282. for (; yybottom <= yytop; yybottom++)
  2283. {
  2284. int yybot = *yybottom;
  2285. YYFPRINTF (stderr, " %d", yybot);
  2286. }
  2287. YYFPRINTF (stderr, "\n");
  2288. }
  2289. # define YY_STACK_PRINT(Bottom, Top) \
  2290. do { \
  2291. if (yydebug) \
  2292. yy_stack_print ((Bottom), (Top)); \
  2293. } while (0)
  2294. /*------------------------------------------------.
  2295. | Report that the YYRULE is going to be reduced. |
  2296. `------------------------------------------------*/
  2297. static void
  2298. yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, struct mdlparse_vars *parse_state, yyscan_t scanner)
  2299. {
  2300. unsigned long int yylno = yyrline[yyrule];
  2301. int yynrhs = yyr2[yyrule];
  2302. int yyi;
  2303. YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
  2304. yyrule - 1, yylno);
  2305. /* The symbols being reduced. */
  2306. for (yyi = 0; yyi < yynrhs; yyi++)
  2307. {
  2308. YYFPRINTF (stderr, " $%d = ", yyi + 1);
  2309. yy_symbol_print (stderr,
  2310. yystos[yyssp[yyi + 1 - yynrhs]],
  2311. &(yyvsp[(yyi + 1) - (yynrhs)])
  2312. , parse_state, scanner);
  2313. YYFPRINTF (stderr, "\n");
  2314. }
  2315. }
  2316. # define YY_REDUCE_PRINT(Rule) \
  2317. do { \
  2318. if (yydebug) \
  2319. yy_reduce_print (yyssp, yyvsp, Rule, parse_state, scanner); \
  2320. } while (0)
  2321. /* Nonzero means print parse trace. It is left uninitialized so that
  2322. multiple parsers can coexist. */
  2323. int yydebug;
  2324. #else /* !YYDEBUG */
  2325. # define YYDPRINTF(Args)
  2326. # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
  2327. # define YY_STACK_PRINT(Bottom, Top)
  2328. # define YY_REDUCE_PRINT(Rule)
  2329. #endif /* !YYDEBUG */
  2330. /* YYINITDEPTH -- initial size of the parser's stacks. */
  2331. #ifndef YYINITDEPTH
  2332. # define YYINITDEPTH 200
  2333. #endif
  2334. /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
  2335. if the built-in stack extension method is used).
  2336. Do not make this value too large; the results are undefined if
  2337. YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
  2338. evaluated with infinite-precision integer arithmetic. */
  2339. #ifndef YYMAXDEPTH
  2340. # define YYMAXDEPTH 10000
  2341. #endif
  2342. #if YYERROR_VERBOSE
  2343. # ifndef yystrlen
  2344. # if defined __GLIBC__ && defined _STRING_H
  2345. # define yystrlen strlen
  2346. # else
  2347. /* Return the length of YYSTR. */
  2348. static YYSIZE_T
  2349. yystrlen (const char *yystr)
  2350. {
  2351. YYSIZE_T yylen;
  2352. for (yylen = 0; yystr[yylen]; yylen++)
  2353. continue;
  2354. return yylen;
  2355. }
  2356. # endif
  2357. # endif
  2358. # ifndef yystpcpy
  2359. # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
  2360. # define yystpcpy stpcpy
  2361. # else
  2362. /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
  2363. YYDEST. */
  2364. static char *
  2365. yystpcpy (char *yydest, const char *yysrc)
  2366. {
  2367. char *yyd = yydest;
  2368. const char *yys = yysrc;
  2369. while ((*yyd++ = *yys++) != '\0')
  2370. continue;
  2371. return yyd - 1;
  2372. }
  2373. # endif
  2374. # endif
  2375. # ifndef yytnamerr
  2376. /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
  2377. quotes and backslashes, so that it's suitable for yyerror. The
  2378. heuristic is that double-quoting is unnecessary unless the string
  2379. contains an apostrophe, a comma, or backslash (other than
  2380. backslash-backslash). YYSTR is taken from yytname. If YYRES is
  2381. null, do not copy; instead, return the length of what the result
  2382. would have been. */
  2383. static YYSIZE_T
  2384. yytnamerr (char *yyres, const char *yystr)
  2385. {
  2386. if (*yystr == '"')
  2387. {
  2388. YYSIZE_T yyn = 0;
  2389. char const *yyp = yystr;
  2390. for (;;)
  2391. switch (*++yyp)
  2392. {
  2393. case '\'':
  2394. case ',':
  2395. goto do_not_strip_quotes;
  2396. case '\\':
  2397. if (*++yyp != '\\')
  2398. goto do_not_strip_quotes;
  2399. /* Fall through. */
  2400. default:
  2401. if (yyres)
  2402. yyres[yyn] = *yyp;
  2403. yyn++;
  2404. break;
  2405. case '"':
  2406. if (yyres)
  2407. yyres[yyn] = '\0';
  2408. return yyn;
  2409. }
  2410. do_not_strip_quotes: ;
  2411. }
  2412. if (! yyres)
  2413. return yystrlen (yystr);
  2414. return yystpcpy (yyres, yystr) - yyres;
  2415. }
  2416. # endif
  2417. /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
  2418. about the unexpected token YYTOKEN for the state stack whose top is
  2419. YYSSP.
  2420. Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
  2421. not large enough to hold the message. In that case, also set
  2422. *YYMSG_ALLOC to the required number of bytes. Return 2 if the
  2423. required number of bytes is too large to store. */
  2424. static int
  2425. yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
  2426. yytype_int16 *yyssp, int yytoken)
  2427. {
  2428. YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
  2429. YYSIZE_T yysize = yysize0;
  2430. enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
  2431. /* Internationalized format string. */
  2432. const char *yyformat = YY_NULLPTR;
  2433. /* Arguments of yyformat. */
  2434. char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
  2435. /* Number of reported tokens (one for the "unexpected", one per
  2436. "expected"). */
  2437. int yycount = 0;
  2438. /* There are many possibilities here to consider:
  2439. - If this state is a consistent state with a default action, then
  2440. the only way this function was invoked is if the default action
  2441. is an error action. In that case, don't check for expected
  2442. tokens because there are none.
  2443. - The only way there can be no lookahead present (in yychar) is if
  2444. this state is a consistent state with a default action. Thus,
  2445. detecting the absence of a lookahead is sufficient to determine
  2446. that there is no unexpected or expected token to report. In that
  2447. case, just report a simple "syntax error".
  2448. - Don't assume there isn't a lookahead just because this state is a
  2449. consistent state with a default action. There might have been a
  2450. previous inconsistent state, consistent state with a non-default
  2451. action, or user semantic action that manipulated yychar.
  2452. - Of course, the expected token list depends on states to have
  2453. correct lookahead information, and it depends on the parser not
  2454. to perform extra reductions after fetching a lookahead from the
  2455. scanner and before detecting a syntax error. Thus, state merging
  2456. (from LALR or IELR) and default reductions corrupt the expected
  2457. token list. However, the list is correct for canonical LR with
  2458. one exception: it will still contain any token that will not be
  2459. accepted due to an error action in a later state.
  2460. */
  2461. if (yytoken != YYEMPTY)
  2462. {
  2463. int yyn = yypact[*yyssp];
  2464. yyarg[yycount++] = yytname[yytoken];
  2465. if (!yypact_value_is_default (yyn))
  2466. {
  2467. /* Start YYX at -YYN if negative to avoid negative indexes in
  2468. YYCHECK. In other words, skip the first -YYN actions for
  2469. this state because they are default actions. */
  2470. int yyxbegin = yyn < 0 ? -yyn : 0;
  2471. /* Stay within bounds of both yycheck and yytname. */
  2472. int yychecklim = YYLAST - yyn + 1;
  2473. int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
  2474. int yyx;
  2475. for (yyx = yyxbegin; yyx < yyxend; ++yyx)
  2476. if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
  2477. && !yytable_value_is_error (yytable[yyx + yyn]))
  2478. {
  2479. if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
  2480. {
  2481. yycount = 1;
  2482. yysize = yysize0;
  2483. break;
  2484. }
  2485. yyarg[yycount++] = yytname[yyx];
  2486. {
  2487. YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
  2488. if (! (yysize <= yysize1
  2489. && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
  2490. return 2;
  2491. yysize = yysize1;
  2492. }
  2493. }
  2494. }
  2495. }
  2496. switch (yycount)
  2497. {
  2498. # define YYCASE_(N, S) \
  2499. case N: \
  2500. yyformat = S; \
  2501. break
  2502. YYCASE_(0, YY_("syntax error"));
  2503. YYCASE_(1, YY_("syntax error, unexpected %s"));
  2504. YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
  2505. YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
  2506. YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
  2507. YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
  2508. # undef YYCASE_
  2509. }
  2510. {
  2511. YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
  2512. if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
  2513. return 2;
  2514. yysize = yysize1;
  2515. }
  2516. if (*yymsg_alloc < yysize)
  2517. {
  2518. *yymsg_alloc = 2 * yysize;
  2519. if (! (yysize <= *yymsg_alloc
  2520. && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
  2521. *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
  2522. return 1;
  2523. }
  2524. /* Avoid sprintf, as that infringes on the user's name space.
  2525. Don't have undefined behavior even if the translation
  2526. produced a string with the wrong number of "%s"s. */
  2527. {
  2528. char *yyp = *yymsg;
  2529. int yyi = 0;
  2530. while ((*yyp = *yyformat) != '\0')
  2531. if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
  2532. {
  2533. yyp += yytnamerr (yyp, yyarg[yyi++]);
  2534. yyformat += 2;
  2535. }
  2536. else
  2537. {
  2538. yyp++;
  2539. yyformat++;
  2540. }
  2541. }
  2542. return 0;
  2543. }
  2544. #endif /* YYERROR_VERBOSE */
  2545. /*-----------------------------------------------.
  2546. | Release the memory associated to this symbol. |
  2547. `-----------------------------------------------*/
  2548. static void
  2549. yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct mdlparse_vars *parse_state, yyscan_t scanner)
  2550. {
  2551. YYUSE (yyvaluep);
  2552. YYUSE (parse_state);
  2553. YYUSE (scanner);
  2554. if (!yymsg)
  2555. yymsg = "Deleting";
  2556. YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
  2557. YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  2558. YYUSE (yytype);
  2559. YY_IGNORE_MAYBE_UNINITIALIZED_END
  2560. }
  2561. /*----------.
  2562. | yyparse. |
  2563. `----------*/
  2564. int
  2565. yyparse (struct mdlparse_vars *parse_state, yyscan_t scanner)
  2566. {
  2567. /* The lookahead symbol. */
  2568. int yychar;
  2569. /* The semantic value of the lookahead symbol. */
  2570. /* Default value used for initialization, for pacifying older GCCs
  2571. or non-GCC compilers. */
  2572. YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
  2573. YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
  2574. /* Number of syntax errors so far. */
  2575. int yynerrs;
  2576. int yystate;
  2577. /* Number of tokens to shift before error messages enabled. */
  2578. int yyerrstatus;
  2579. /* The stacks and their tools:
  2580. 'yyss': related to states.
  2581. 'yyvs': related to semantic values.
  2582. Refer to the stacks through separate pointers, to allow yyoverflow
  2583. to reallocate them elsewhere. */
  2584. /* The state stack. */
  2585. yytype_int16 yyssa[YYINITDEPTH];
  2586. yytype_int16 *yyss;
  2587. yytype_int16 *yyssp;
  2588. /* The semantic value stack. */
  2589. YYSTYPE yyvsa[YYINITDEPTH];
  2590. YYSTYPE *yyvs;
  2591. YYSTYPE *yyvsp;
  2592. YYSIZE_T yystacksize;
  2593. int yyn;
  2594. int yyresult;
  2595. /* Lookahead token as an internal (translated) token number. */
  2596. int yytoken = 0;
  2597. /* The variables used to return semantic value and location from the
  2598. action routines. */
  2599. YYSTYPE yyval;
  2600. #if YYERROR_VERBOSE
  2601. /* Buffer for error messages, and its allocated size. */
  2602. char yymsgbuf[128];
  2603. char *yymsg = yymsgbuf;
  2604. YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
  2605. #endif
  2606. #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
  2607. /* The number of symbols on the RHS of the reduced rule.
  2608. Keep to zero when no symbol should be popped. */
  2609. int yylen = 0;
  2610. yyssp = yyss = yyssa;
  2611. yyvsp = yyvs = yyvsa;
  2612. yystacksize = YYINITDEPTH;
  2613. YYDPRINTF ((stderr, "Starting parse\n"));
  2614. yystate = 0;
  2615. yyerrstatus = 0;
  2616. yynerrs = 0;
  2617. yychar = YYEMPTY; /* Cause a token to be read. */
  2618. goto yysetstate;
  2619. /*------------------------------------------------------------.
  2620. | yynewstate -- Push a new state, which is found in yystate. |
  2621. `------------------------------------------------------------*/
  2622. yynewstate:
  2623. /* In all cases, when you get here, the value and location stacks
  2624. have just been pushed. So pushing a state here evens the stacks. */
  2625. yyssp++;
  2626. yysetstate:
  2627. *yyssp = yystate;
  2628. if (yyss + yystacksize - 1 <= yyssp)
  2629. {
  2630. /* Get the current used size of the three stacks, in elements. */
  2631. YYSIZE_T yysize = yyssp - yyss + 1;
  2632. #ifdef yyoverflow
  2633. {
  2634. /* Give user a chance to reallocate the stack. Use copies of
  2635. these so that the &'s don't force the real ones into
  2636. memory. */
  2637. YYSTYPE *yyvs1 = yyvs;
  2638. yytype_int16 *yyss1 = yyss;
  2639. /* Each stack pointer address is followed by the size of the
  2640. data in use in that stack, in bytes. This used to be a
  2641. conditional around just the two extra args, but that might
  2642. be undefined if yyoverflow is a macro. */
  2643. yyoverflow (YY_("memory exhausted"),
  2644. &yyss1, yysize * sizeof (*yyssp),
  2645. &yyvs1, yysize * sizeof (*yyvsp),
  2646. &yystacksize);
  2647. yyss = yyss1;
  2648. yyvs = yyvs1;
  2649. }
  2650. #else /* no yyoverflow */
  2651. # ifndef YYSTACK_RELOCATE
  2652. goto yyexhaustedlab;
  2653. # else
  2654. /* Extend the stack our own way. */
  2655. if (YYMAXDEPTH <= yystacksize)
  2656. goto yyexhaustedlab;
  2657. yystacksize *= 2;
  2658. if (YYMAXDEPTH < yystacksize)
  2659. yystacksize = YYMAXDEPTH;
  2660. {
  2661. yytype_int16 *yyss1 = yyss;
  2662. union yyalloc *yyptr =
  2663. (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
  2664. if (! yyptr)
  2665. goto yyexhaustedlab;
  2666. YYSTACK_RELOCATE (yyss_alloc, yyss);
  2667. YYSTACK_RELOCATE (yyvs_alloc, yyvs);
  2668. # undef YYSTACK_RELOCATE
  2669. if (yyss1 != yyssa)
  2670. YYSTACK_FREE (yyss1);
  2671. }
  2672. # endif
  2673. #endif /* no yyoverflow */
  2674. yyssp = yyss + yysize - 1;
  2675. yyvsp = yyvs + yysize - 1;
  2676. YYDPRINTF ((stderr, "Stack size increased to %lu\n",
  2677. (unsigned long int) yystacksize));
  2678. if (yyss + yystacksize - 1 <= yyssp)
  2679. YYABORT;
  2680. }
  2681. YYDPRINTF ((stderr, "Entering state %d\n", yystate));
  2682. if (yystate == YYFINAL)
  2683. YYACCEPT;
  2684. goto yybackup;
  2685. /*-----------.
  2686. | yybackup. |
  2687. `-----------*/
  2688. yybackup:
  2689. /* Do appropriate processing given the current state. Read a
  2690. lookahead token if we need one and don't already have one. */
  2691. /* First try to decide what to do without reference to lookahead token. */
  2692. yyn = yypact[yystate];
  2693. if (yypact_value_is_default (yyn))
  2694. goto yydefault;
  2695. /* Not known => get a lookahead token if don't already have one. */
  2696. /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
  2697. if (yychar == YYEMPTY)
  2698. {
  2699. YYDPRINTF ((stderr, "Reading a token: "));
  2700. yychar = yylex (&yylval, parse_state, scanner);
  2701. }
  2702. if (yychar <= YYEOF)
  2703. {
  2704. yychar = yytoken = YYEOF;
  2705. YYDPRINTF ((stderr, "Now at end of input.\n"));
  2706. }
  2707. else
  2708. {
  2709. yytoken = YYTRANSLATE (yychar);
  2710. YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
  2711. }
  2712. /* If the proper action on seeing token YYTOKEN is to reduce or to
  2713. detect an error, take that action. */
  2714. yyn += yytoken;
  2715. if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
  2716. goto yydefault;
  2717. yyn = yytable[yyn];
  2718. if (yyn <= 0)
  2719. {
  2720. if (yytable_value_is_error (yyn))
  2721. goto yyerrlab;
  2722. yyn = -yyn;
  2723. goto yyreduce;
  2724. }
  2725. /* Count tokens shifted since error; after three, turn off error
  2726. status. */
  2727. if (yyerrstatus)
  2728. yyerrstatus--;
  2729. /* Shift the lookahead token. */
  2730. YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
  2731. /* Discard the shifted token. */
  2732. yychar = YYEMPTY;
  2733. yystate = yyn;
  2734. YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  2735. *++yyvsp = yylval;
  2736. YY_IGNORE_MAYBE_UNINITIALIZED_END
  2737. goto yynewstate;
  2738. /*-----------------------------------------------------------.
  2739. | yydefault -- do the default action for the current state. |
  2740. `-----------------------------------------------------------*/
  2741. yydefault:
  2742. yyn = yydefact[yystate];
  2743. if (yyn == 0)
  2744. goto yyerrlab;
  2745. goto yyreduce;
  2746. /*-----------------------------.
  2747. | yyreduce -- Do a reduction. |
  2748. `-----------------------------*/
  2749. yyreduce:
  2750. /* yyn is the number of a rule to reduce with. */
  2751. yylen = yyr2[yyn];
  2752. /* If YYLEN is nonzero, implement the default value of the action:
  2753. '$$ = $1'.
  2754. Otherwise, the following line sets YYVAL to garbage.
  2755. This behavior is undocumented and Bison
  2756. users should not rely upon it. Assigning to YYVAL
  2757. unconditionally makes the parser a bit smaller, and it avoids a
  2758. GCC warning that YYVAL may be used uninitialized. */
  2759. yyval = yyvsp[1-yylen];
  2760. YY_REDUCE_PRINT (yyn);
  2761. switch (yyn)
  2762. {
  2763. case 29:
  2764. #line 646 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2765. { CHECKN((yyval.sym) = mdl_existing_object(parse_state, (yyvsp[0].str))); }
  2766. #line 2981 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2767. break;
  2768. case 30:
  2769. #line 649 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2770. { CHECKN((yyval.sym) = mdl_existing_region(parse_state, (yyvsp[-3].sym), (yyvsp[-1].str))); }
  2771. #line 2987 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2772. break;
  2773. case 31:
  2774. #line 652 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2775. { CHECKN((yyval.vec3) = mdl_point(parse_state, &(yyvsp[0].nlist))); }
  2776. #line 2993 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2777. break;
  2778. case 33:
  2779. #line 656 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2780. { CHECKN((yyval.vec3) = mdl_point_scalar((yyvsp[0].dbl))); }
  2781. #line 2999 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2782. break;
  2783. case 34:
  2784. #line 659 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2785. { (yyval.tok) = 1; }
  2786. #line 3005 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2787. break;
  2788. case 35:
  2789. #line 660 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2790. { (yyval.tok) = 0; }
  2791. #line 3011 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2792. break;
  2793. case 36:
  2794. #line 661 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2795. { (yyval.tok) = 1; }
  2796. #line 3017 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2797. break;
  2798. case 37:
  2799. #line 662 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2800. { (yyval.tok) = 0; }
  2801. #line 3023 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2802. break;
  2803. case 38:
  2804. #line 663 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2805. { (yyval.tok) = 1; }
  2806. #line 3029 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2807. break;
  2808. case 39:
  2809. #line 664 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2810. { (yyval.tok) = 0; }
  2811. #line 3035 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2812. break;
  2813. case 40:
  2814. #line 667 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2815. { (yyval.mol_type).orient_set = 0; }
  2816. #line 3041 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2817. break;
  2818. case 43:
  2819. #line 670 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2820. { (yyval.mol_type).orient_set = 1; (yyval.mol_type).orient = 0; }
  2821. #line 3047 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2822. break;
  2823. case 44:
  2824. #line 674 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2825. { (yyval.mol_type).orient = 1; (yyval.mol_type).orient_set = 1; }
  2826. #line 3053 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2827. break;
  2828. case 45:
  2829. #line 675 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2830. { (yyval.mol_type).orient = -1; (yyval.mol_type).orient_set = 1; }
  2831. #line 3059 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2832. break;
  2833. case 46:
  2834. #line 676 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2835. {
  2836. (yyval.mol_type) = (yyvsp[-1].mol_type);
  2837. if ((yyval.mol_type).orient >= 32767)
  2838. {
  2839. /* Seriously? Wow. */
  2840. mdlerror(parse_state, "molecule orientation must not be greater than 32767");
  2841. return 1;
  2842. }
  2843. ++ (yyval.mol_type).orient;
  2844. }
  2845. #line 3074 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2846. break;
  2847. case 47:
  2848. #line 686 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2849. {
  2850. (yyval.mol_type) = (yyvsp[-1].mol_type);
  2851. if ((yyval.mol_type).orient <= -32768)
  2852. {
  2853. /* Seriously? Wow. */
  2854. mdlerror(parse_state, "molecule orientation must not be less than -32768");
  2855. return 1;
  2856. }
  2857. -- (yyval.mol_type).orient;
  2858. }
  2859. #line 3089 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2860. break;
  2861. case 50:
  2862. #line 704 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2863. {
  2864. (yyval.mol_type).orient = (int) (yyvsp[-1].dbl);
  2865. (yyval.mol_type).orient_set = 1;
  2866. if ((yyval.mol_type).orient != (yyvsp[-1].dbl))
  2867. {
  2868. mdlerror(parse_state, "molecule orientation specified inside braces must be an integer between -32768 and 32767.");
  2869. return 1;
  2870. }
  2871. }
  2872. #line 3103 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2873. break;
  2874. case 52:
  2875. #line 717 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2876. {
  2877. if ((yyvsp[-2].nlist).value_tail)
  2878. {
  2879. (yyval.nlist) = (yyvsp[-2].nlist);
  2880. (yyval.nlist).value_count += (yyvsp[0].nlist).value_count;
  2881. (yyval.nlist).value_tail->next = (yyvsp[0].nlist).value_head;
  2882. (yyval.nlist).value_tail = (yyvsp[0].nlist).value_tail;
  2883. }
  2884. else
  2885. (yyval.nlist) = (yyvsp[0].nlist);
  2886. }
  2887. #line 3119 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2888. break;
  2889. case 53:
  2890. #line 730 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2891. { CHECK(mcell_generate_range_singleton(&(yyval.nlist), (yyvsp[0].dbl))); }
  2892. #line 3125 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2893. break;
  2894. case 54:
  2895. #line 731 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2896. { CHECK(mdl_generate_range(parse_state, &(yyval.nlist), (yyvsp[-5].dbl), (yyvsp[-3].dbl), (yyvsp[-1].dbl))); }
  2897. #line 3131 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2898. break;
  2899. case 55:
  2900. #line 737 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2901. {
  2902. char *include_path = mcell_find_include_file((yyvsp[0].str), parse_state->vol->curr_file);
  2903. if (include_path == NULL)
  2904. {
  2905. mdlerror_fmt(parse_state, "Out of memory while trying to open include file '%s'", (yyvsp[0].str));
  2906. free((yyvsp[0].str));
  2907. return 1;
  2908. }
  2909. if (mdlparse_file(parse_state, include_path))
  2910. {
  2911. free(include_path);
  2912. free((yyvsp[0].str));
  2913. return 1;
  2914. }
  2915. free(include_path);
  2916. free((yyvsp[0].str));
  2917. }
  2918. #line 3153 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2919. break;
  2920. case 56:
  2921. #line 760 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2922. { CHECK(mdl_assign_variable_double(parse_state, (yyvsp[-2].sym), (yyvsp[0].dbl))); }
  2923. #line 3159 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2924. break;
  2925. case 57:
  2926. #line 761 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2927. { CHECK(mdl_assign_variable_string(parse_state, (yyvsp[-2].sym), (yyvsp[0].str))); }
  2928. #line 3165 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2929. break;
  2930. case 58:
  2931. #line 762 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2932. { CHECK(mdl_assign_variable(parse_state, (yyvsp[-2].sym), (yyvsp[0].sym))); }
  2933. #line 3171 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2934. break;
  2935. case 59:
  2936. #line 763 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2937. { CHECK(mdl_assign_variable_array(parse_state, (yyvsp[-2].sym), (yyvsp[0].nlist).value_head)); }
  2938. #line 3177 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2939. break;
  2940. case 60:
  2941. #line 766 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2942. { CHECKN((yyval.sym) = mdl_get_or_create_variable(parse_state, (yyvsp[0].str))); }
  2943. #line 3183 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2944. break;
  2945. case 61:
  2946. #line 769 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2947. { CHECKN((yyval.sym) = mdl_existing_variable(parse_state, (yyvsp[0].str))); }
  2948. #line 3189 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2949. break;
  2950. case 63:
  2951. #line 773 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2952. {
  2953. struct num_expr_list *elp;
  2954. (yyval.nlist).value_head = (struct num_expr_list *) (yyvsp[0].sym)->value;
  2955. (yyval.nlist).value_count = 1;
  2956. for (elp = (yyval.nlist).value_head; elp->next != NULL; elp = elp->next)
  2957. ++ (yyval.nlist).value_count;
  2958. (yyval.nlist).value_tail = elp;
  2959. (yyval.nlist).shared = 1;
  2960. }
  2961. #line 3203 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2962. break;
  2963. case 64:
  2964. #line 784 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2965. { mdl_debug_dump_array((yyvsp[-1].nlist).value_head); (yyval.nlist) = (yyvsp[-1].nlist); }
  2966. #line 3209 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2967. break;
  2968. case 65:
  2969. #line 787 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2970. { CHECKN((yyval.sym) = mdl_existing_array(parse_state, (yyvsp[0].str))); }
  2971. #line 3215 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2972. break;
  2973. case 69:
  2974. #line 795 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2975. { (yyval.dbl) = *(double *) (yyvsp[0].sym)->value; }
  2976. #line 3221 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2977. break;
  2978. case 70:
  2979. #line 798 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2980. { (yyval.dbl) = (yyvsp[0].llival); }
  2981. #line 3227 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2982. break;
  2983. case 74:
  2984. #line 806 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2985. { CHECKN((yyval.sym) = mdl_existing_double(parse_state, (yyvsp[0].str))); }
  2986. #line 3233 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2987. break;
  2988. case 75:
  2989. #line 810 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2990. { (yyval.dbl) = (yyvsp[-1].dbl); }
  2991. #line 3239 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2992. break;
  2993. case 76:
  2994. #line 811 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  2995. { CHECKF((yyval.dbl) = exp((yyvsp[-1].dbl))); }
  2996. #line 3245 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  2997. break;
  2998. case 77:
  2999. #line 812 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3000. { CHECK(mdl_expr_log(parse_state, (yyvsp[-1].dbl), &(yyval.dbl))); }
  3001. #line 3251 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3002. break;
  3003. case 78:
  3004. #line 813 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3005. { CHECK(mdl_expr_log10(parse_state, (yyvsp[-1].dbl), &(yyval.dbl))); }
  3006. #line 3257 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3007. break;
  3008. case 79:
  3009. #line 814 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3010. { (yyval.dbl) = max2d((yyvsp[-3].dbl), (yyvsp[-1].dbl)); }
  3011. #line 3263 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3012. break;
  3013. case 80:
  3014. #line 815 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3015. { (yyval.dbl) = min2d((yyvsp[-3].dbl), (yyvsp[-1].dbl)); }
  3016. #line 3269 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3017. break;
  3018. case 81:
  3019. #line 816 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3020. { (yyval.dbl) = mdl_expr_roundoff((yyvsp[-1].dbl), (int) (yyvsp[-3].dbl)); }
  3021. #line 3275 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3022. break;
  3023. case 82:
  3024. #line 817 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3025. { (yyval.dbl) = floor((yyvsp[-1].dbl)); }
  3026. #line 3281 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3027. break;
  3028. case 83:
  3029. #line 818 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3030. { (yyval.dbl) = ceil((yyvsp[-1].dbl)); }
  3031. #line 3287 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3032. break;
  3033. case 84:
  3034. #line 819 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3035. { (yyval.dbl) = sin((yyvsp[-1].dbl)); }
  3036. #line 3293 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3037. break;
  3038. case 85:
  3039. #line 820 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3040. { (yyval.dbl) = cos((yyvsp[-1].dbl)); }
  3041. #line 3299 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3042. break;
  3043. case 86:
  3044. #line 821 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3045. { CHECKF((yyval.dbl) = tan((yyvsp[-1].dbl))); }
  3046. #line 3305 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3047. break;
  3048. case 87:
  3049. #line 822 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3050. { CHECKF((yyval.dbl) = asin((yyvsp[-1].dbl))); }
  3051. #line 3311 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3052. break;
  3053. case 88:
  3054. #line 823 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3055. { CHECKF((yyval.dbl) = acos((yyvsp[-1].dbl))); }
  3056. #line 3317 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3057. break;
  3058. case 89:
  3059. #line 824 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3060. { (yyval.dbl) = atan((yyvsp[-1].dbl)); }
  3061. #line 3323 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3062. break;
  3063. case 90:
  3064. #line 825 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3065. { CHECKF((yyval.dbl) = sqrt((yyvsp[-1].dbl))); }
  3066. #line 3329 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3067. break;
  3068. case 91:
  3069. #line 826 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3070. { (yyval.dbl) = fabs((yyvsp[-1].dbl)); }
  3071. #line 3335 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3072. break;
  3073. case 92:
  3074. #line 827 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3075. { CHECK(mdl_expr_mod(parse_state, (yyvsp[-3].dbl), (yyvsp[-1].dbl), &(yyval.dbl))); }
  3076. #line 3341 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3077. break;
  3078. case 93:
  3079. #line 828 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3080. { (yyval.dbl) = MY_PI; }
  3081. #line 3347 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3082. break;
  3083. case 94:
  3084. #line 829 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3085. { (yyval.dbl) = mdl_expr_rng_uniform(parse_state); }
  3086. #line 3353 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3087. break;
  3088. case 95:
  3089. #line 830 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3090. { (yyval.dbl) = rng_gauss(parse_state->vol->rng); }
  3091. #line 3359 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3092. break;
  3093. case 96:
  3094. #line 831 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3095. { (yyval.dbl) = parse_state->vol->seed_seq; }
  3096. #line 3365 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3097. break;
  3098. case 97:
  3099. #line 832 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3100. { CHECK(mdl_expr_string_to_double(parse_state, (yyvsp[-1].str), &(yyval.dbl))); }
  3101. #line 3371 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3102. break;
  3103. case 98:
  3104. #line 833 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3105. { CHECKF((yyval.dbl) = (yyvsp[-2].dbl) + (yyvsp[0].dbl)); }
  3106. #line 3377 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3107. break;
  3108. case 99:
  3109. #line 834 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3110. { CHECKF((yyval.dbl) = (yyvsp[-2].dbl) - (yyvsp[0].dbl)); }
  3111. #line 3383 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3112. break;
  3113. case 100:
  3114. #line 835 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3115. { CHECKF((yyval.dbl) = (yyvsp[-2].dbl) * (yyvsp[0].dbl)); }
  3116. #line 3389 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3117. break;
  3118. case 101:
  3119. #line 836 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3120. { CHECK(mdl_expr_div(parse_state, (yyvsp[-2].dbl), (yyvsp[0].dbl), &(yyval.dbl))); }
  3121. #line 3395 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3122. break;
  3123. case 102:
  3124. #line 837 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3125. { CHECK(mdl_expr_pow(parse_state, (yyvsp[-2].dbl), (yyvsp[0].dbl), &(yyval.dbl))); }
  3126. #line 3401 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3127. break;
  3128. case 103:
  3129. #line 838 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3130. { (yyval.dbl) = -(yyvsp[0].dbl); }
  3131. #line 3407 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3132. break;
  3133. case 104:
  3134. #line 839 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3135. { (yyval.dbl) = (yyvsp[0].dbl); }
  3136. #line 3413 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3137. break;
  3138. case 106:
  3139. #line 844 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3140. { CHECKN((yyval.str) = mdl_strdup((char const *) (yyvsp[0].sym)->value)); }
  3141. #line 3419 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3142. break;
  3143. case 107:
  3144. #line 848 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3145. { CHECKN((yyval.str) = mdl_strip_quotes((yyvsp[0].str))); }
  3146. #line 3425 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3147. break;
  3148. case 108:
  3149. #line 849 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3150. { CHECKN((yyval.str) = mdl_strdup(parse_state->vol->mdl_infile_name)); }
  3151. #line 3431 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3152. break;
  3153. case 109:
  3154. #line 850 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3155. { CHECKN((yyval.str) = mdl_strcat((yyvsp[-2].str), (yyvsp[0].str))); }
  3156. #line 3437 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3157. break;
  3158. case 110:
  3159. #line 851 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3160. { CHECKN((yyval.str) = mdl_string_format(parse_state, (yyvsp[-2].str), (yyvsp[-1].printfargs).arg_head)); }
  3161. #line 3443 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3162. break;
  3163. case 111:
  3164. #line 854 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3165. { CHECKN((yyval.sym) = mdl_existing_string(parse_state, (yyvsp[0].str))); }
  3166. #line 3449 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3167. break;
  3168. case 119:
  3169. #line 870 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3170. { CHECK(mdl_fopen(parse_state, (yyvsp[-6].sym), (yyvsp[-3].str), (yyvsp[-1].str))); }
  3171. #line 3455 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3172. break;
  3173. case 120:
  3174. #line 873 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3175. { CHECKN((yyval.sym) = mdl_new_filehandle(parse_state, (yyvsp[0].str))); }
  3176. #line 3461 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3177. break;
  3178. case 121:
  3179. #line 876 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3180. { (yyval.str) = (yyvsp[0].str); CHECK(mdl_valid_file_mode(parse_state, (yyvsp[0].str))); }
  3181. #line 3467 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3182. break;
  3183. case 122:
  3184. #line 879 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3185. { CHECK(mdl_fclose(parse_state, (yyvsp[-1].sym))); }
  3186. #line 3473 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3187. break;
  3188. case 123:
  3189. #line 882 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3190. { CHECKN((yyval.sym) = mdl_existing_file_stream(parse_state, (yyvsp[0].str))); }
  3191. #line 3479 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3192. break;
  3193. case 124:
  3194. #line 885 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3195. { CHECKN((yyval.str) = mdl_expand_string_escapes((yyvsp[0].str))); }
  3196. #line 3485 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3197. break;
  3198. case 125:
  3199. #line 888 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3200. { (yyval.printfargs).arg_head = (yyval.printfargs).arg_tail = NULL; }
  3201. #line 3491 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3202. break;
  3203. case 126:
  3204. #line 889 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3205. {
  3206. (yyval.printfargs) = (yyvsp[-2].printfargs);
  3207. if ((yyval.printfargs).arg_tail)
  3208. (yyval.printfargs).arg_tail = (yyval.printfargs).arg_tail->next = (yyvsp[0].printfarg);
  3209. else
  3210. (yyval.printfargs).arg_tail = (yyval.printfargs).arg_head = (yyvsp[0].printfarg);
  3211. (yyvsp[0].printfarg)->next = NULL;
  3212. }
  3213. #line 3504 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3214. break;
  3215. case 127:
  3216. #line 899 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3217. { CHECKN((yyval.printfarg) = mdl_new_printf_arg_double((yyvsp[0].dbl))); }
  3218. #line 3510 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3219. break;
  3220. case 128:
  3221. #line 900 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3222. { CHECKN((yyval.printfarg) = mdl_new_printf_arg_string((yyvsp[0].str))); }
  3223. #line 3516 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3224. break;
  3225. case 129:
  3226. #line 901 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3227. {
  3228. switch ((yyvsp[0].sym)->sym_type)
  3229. {
  3230. case DBL: CHECKN((yyval.printfarg) = mdl_new_printf_arg_double(*(double *) (yyvsp[0].sym)->value)); break;
  3231. case STR: CHECKN((yyval.printfarg) = mdl_new_printf_arg_string((char *) (yyvsp[0].sym)->value)); break;
  3232. default:
  3233. mdlerror(parse_state, "invalid variable type referenced");
  3234. return 1;
  3235. }
  3236. }
  3237. #line 3531 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3238. break;
  3239. case 130:
  3240. #line 913 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3241. { CHECK(mdl_printf(parse_state, (yyvsp[-2].str), (yyvsp[-1].printfargs).arg_head)); }
  3242. #line 3537 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3243. break;
  3244. case 131:
  3245. #line 919 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3246. { CHECK(mdl_fprintf(parse_state, (struct file_stream *) (yyvsp[-4].sym)->value, (yyvsp[-2].str), (yyvsp[-1].printfargs).arg_head)); }
  3247. #line 3543 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3248. break;
  3249. case 132:
  3250. #line 925 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3251. { CHECK(mdl_sprintf(parse_state, (yyvsp[-4].sym), (yyvsp[-2].str), (yyvsp[-1].printfargs).arg_head)); }
  3252. #line 3549 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3253. break;
  3254. case 133:
  3255. #line 928 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3256. { mdl_print_time(parse_state, (yyvsp[-1].str)); }
  3257. #line 3555 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3258. break;
  3259. case 134:
  3260. #line 934 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3261. { CHECK(mdl_fprint_time(parse_state, (yyvsp[-3].sym), (yyvsp[-1].str))); }
  3262. #line 3561 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3263. break;
  3264. case 138:
  3265. #line 950 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3266. { if (!parse_state->vol->quiet_flag) mdl_set_all_notifications(parse_state->vol, (yyvsp[0].tok)); }
  3267. #line 3567 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3268. break;
  3269. case 139:
  3270. #line 951 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3271. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->progress_report = (yyvsp[0].tok); }
  3272. #line 3573 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3273. break;
  3274. case 140:
  3275. #line 952 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3276. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->diffusion_constants = (yyvsp[0].tok); }
  3277. #line 3579 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3278. break;
  3279. case 141:
  3280. #line 953 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3281. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->reaction_probabilities = (yyvsp[0].tok); }
  3282. #line 3585 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3283. break;
  3284. case 142:
  3285. #line 954 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3286. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->time_varying_reactions = (yyvsp[0].tok); }
  3287. #line 3591 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3288. break;
  3289. case 143:
  3290. #line 955 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3291. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->reaction_prob_notify = (yyvsp[0].dbl); }
  3292. #line 3597 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3293. break;
  3294. case 144:
  3295. #line 956 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3296. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->partition_location = (yyvsp[0].tok); }
  3297. #line 3603 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3298. break;
  3299. case 145:
  3300. #line 957 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3301. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->box_triangulation = (yyvsp[0].tok); }
  3302. #line 3609 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3303. break;
  3304. case 146:
  3305. #line 958 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3306. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->release_events = (yyvsp[0].tok); }
  3307. #line 3615 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3308. break;
  3309. case 147:
  3310. #line 959 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3311. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->file_writes = (yyvsp[0].tok); }
  3312. #line 3621 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3313. break;
  3314. case 148:
  3315. #line 960 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3316. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->final_summary = (yyvsp[0].tok); }
  3317. #line 3627 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3318. break;
  3319. case 149:
  3320. #line 961 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3321. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->throughput_report = (yyvsp[0].tok); }
  3322. #line 3633 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3323. break;
  3324. case 150:
  3325. #line 962 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3326. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->reaction_output_report = (yyvsp[0].tok); }
  3327. #line 3639 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3328. break;
  3329. case 151:
  3330. #line 963 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3331. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->volume_output_report = (yyvsp[0].tok); }
  3332. #line 3645 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3333. break;
  3334. case 152:
  3335. #line 964 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3336. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->viz_output_report = (yyvsp[0].tok); }
  3337. #line 3651 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3338. break;
  3339. case 153:
  3340. #line 965 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3341. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->checkpoint_report = (yyvsp[0].tok); }
  3342. #line 3657 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3343. break;
  3344. case 154:
  3345. #line 966 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3346. {
  3347. if (!parse_state->vol->quiet_flag && parse_state->vol->log_freq == ULONG_MAX)
  3348. parse_state->vol->notify->iteration_report = (yyvsp[0].tok);
  3349. }
  3350. #line 3666 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3351. break;
  3352. case 155:
  3353. #line 970 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3354. { if (!parse_state->vol->quiet_flag) CHECK(mdl_set_iteration_report_freq(parse_state, (long long) (yyvsp[0].dbl))); }
  3355. #line 3672 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3356. break;
  3357. case 156:
  3358. #line 971 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3359. { if (!parse_state->vol->quiet_flag) parse_state->vol->notify->molecule_collision_report = (yyvsp[0].tok); }
  3360. #line 3678 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3361. break;
  3362. case 157:
  3363. #line 975 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3364. { (yyval.tok) = ((yyvsp[0].tok) ? NOTIFY_FULL : NOTIFY_NONE); }
  3365. #line 3684 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3366. break;
  3367. case 158:
  3368. #line 979 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3369. { (yyval.tok) = ((yyvsp[0].tok) ? NOTIFY_FULL : NOTIFY_NONE); }
  3370. #line 3690 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3371. break;
  3372. case 159:
  3373. #line 980 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3374. { (yyval.tok) = NOTIFY_BRIEF; }
  3375. #line 3696 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3376. break;
  3377. case 163:
  3378. #line 996 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3379. { mdl_set_all_warnings(parse_state->vol, (byte) (yyvsp[0].tok)); }
  3380. #line 3702 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3381. break;
  3382. case 164:
  3383. #line 997 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3384. { parse_state->vol->notify->neg_diffusion = (byte)(yyvsp[0].tok); }
  3385. #line 3708 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3386. break;
  3387. case 165:
  3388. #line 998 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3389. { parse_state->vol->notify->neg_reaction = (byte)(yyvsp[0].tok); }
  3390. #line 3714 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3391. break;
  3392. case 166:
  3393. #line 999 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3394. { parse_state->vol->notify->high_reaction_prob = (byte)(yyvsp[0].tok); }
  3395. #line 3720 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3396. break;
  3397. case 167:
  3398. #line 1000 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3399. { parse_state->vol->notify->reaction_prob_warn = (yyvsp[0].dbl); }
  3400. #line 3726 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3401. break;
  3402. case 168:
  3403. #line 1001 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3404. { parse_state->vol->notify->close_partitions = (byte)(yyvsp[0].tok); }
  3405. #line 3732 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3406. break;
  3407. case 169:
  3408. #line 1002 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3409. { parse_state->vol->notify->degenerate_polys = (byte)(yyvsp[0].tok); }
  3410. #line 3738 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3411. break;
  3412. case 170:
  3413. #line 1003 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3414. { parse_state->vol->notify->overwritten_file = (byte)(yyvsp[0].tok); }
  3415. #line 3744 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3416. break;
  3417. case 171:
  3418. #line 1004 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3419. { parse_state->vol->notify->short_lifetime = (byte)(yyvsp[0].tok); }
  3420. #line 3750 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3421. break;
  3422. case 172:
  3423. #line 1005 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3424. { CHECK(mdl_set_lifetime_warning_threshold(parse_state, (long long) (yyvsp[0].dbl))); }
  3425. #line 3756 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3426. break;
  3427. case 173:
  3428. #line 1006 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3429. { parse_state->vol->notify->missed_reactions = (byte)(yyvsp[0].tok); }
  3430. #line 3762 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3431. break;
  3432. case 174:
  3433. #line 1007 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3434. { CHECK(mdl_set_missed_reaction_warning_threshold(parse_state, (yyvsp[0].dbl))); }
  3435. #line 3768 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3436. break;
  3437. case 175:
  3438. #line 1008 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3439. { parse_state->vol->notify->missed_surf_orient = (byte)(yyvsp[0].tok); }
  3440. #line 3774 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3441. break;
  3442. case 176:
  3443. #line 1009 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3444. { parse_state->vol->notify->useless_vol_orient = (byte)(yyvsp[0].tok); }
  3445. #line 3780 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3446. break;
  3447. case 177:
  3448. #line 1010 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3449. { parse_state->vol->notify->mol_placement_failure = (byte) (yyvsp[0].tok); }
  3450. #line 3786 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3451. break;
  3452. case 178:
  3453. #line 1011 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3454. { parse_state->vol->notify->invalid_output_step_time = (byte) (yyvsp[0].tok); }
  3455. #line 3792 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3456. break;
  3457. case 179:
  3458. #line 1012 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3459. { parse_state->vol->notify->large_molecular_displacement = (byte) (yyvsp[0].tok); }
  3460. #line 3798 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3461. break;
  3462. case 180:
  3463. #line 1013 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3464. { parse_state->vol->notify->add_remove_mesh_warning = (byte) (yyvsp[0].tok); }
  3465. #line 3804 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3466. break;
  3467. case 181:
  3468. #line 1017 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3469. { (yyval.tok) = WARN_COPE; }
  3470. #line 3810 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3471. break;
  3472. case 182:
  3473. #line 1018 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3474. { (yyval.tok) = WARN_WARN; }
  3475. #line 3816 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3476. break;
  3477. case 183:
  3478. #line 1019 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3479. { (yyval.tok) = WARN_ERROR; }
  3480. #line 3822 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3481. break;
  3482. case 184:
  3483. #line 1025 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3484. { CHECK(mdl_set_checkpoint_infile(parse_state, (yyvsp[0].str))); }
  3485. #line 3828 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3486. break;
  3487. case 185:
  3488. #line 1026 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3489. { CHECK(mdl_set_checkpoint_outfile(parse_state, (yyvsp[0].str))); }
  3490. #line 3834 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3491. break;
  3492. case 186:
  3493. #line 1027 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3494. { CHECK(mdl_set_checkpoint_interval(parse_state, (yyvsp[-1].dbl), (yyvsp[0].tok))); }
  3495. #line 3840 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3496. break;
  3497. case 187:
  3498. #line 1028 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3499. { CHECK(mdl_keep_checkpoint_files(parse_state, (yyvsp[0].tok))); }
  3500. #line 3846 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3501. break;
  3502. case 188:
  3503. #line 1030 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3504. { CHECK(mdl_set_realtime_checkpoint(parse_state, (long) (yyvsp[-1].dbl), (yyvsp[0].tok))); }
  3505. #line 3852 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3506. break;
  3507. case 189:
  3508. #line 1033 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3509. { (yyval.tok) = 0; }
  3510. #line 3858 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3511. break;
  3512. case 190:
  3513. #line 1034 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3514. { (yyval.tok) = 1; }
  3515. #line 3864 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3516. break;
  3517. case 191:
  3518. #line 1035 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3519. { (yyval.tok) = 0; }
  3520. #line 3870 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3521. break;
  3522. case 192:
  3523. #line 1039 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3524. { /* seconds */ (yyval.dbl) = (yyvsp[0].dbl); }
  3525. #line 3876 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3526. break;
  3527. case 193:
  3528. #line 1040 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3529. { /* mm:ss */ (yyval.dbl) = (yyvsp[-2].dbl) * 60 + (yyvsp[0].dbl); }
  3530. #line 3882 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3531. break;
  3532. case 194:
  3533. #line 1041 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3534. { /* hh:mm:ss */ (yyval.dbl) = (yyvsp[-4].dbl) * 3600 + (yyvsp[-2].dbl) * 60 + (yyvsp[0].dbl); }
  3535. #line 3888 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3536. break;
  3537. case 195:
  3538. #line 1043 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3539. { /* dd:hh:mm:ss */ (yyval.dbl) = (yyvsp[-6].dbl) * 86400 + (yyvsp[-4].dbl) * 3600 + (yyvsp[-2].dbl) * 60 + (yyvsp[0].dbl); }
  3540. #line 3894 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3541. break;
  3542. case 196:
  3543. #line 1050 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3544. { CHECK(mdl_set_time_step(parse_state, (yyvsp[0].dbl))); }
  3545. #line 3900 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3546. break;
  3547. case 197:
  3548. #line 1051 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3549. { CHECK(mdl_set_space_step(parse_state, (yyvsp[0].dbl))); }
  3550. #line 3906 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3551. break;
  3552. case 198:
  3553. #line 1052 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3554. { CHECK(mdl_set_max_time_step(parse_state, (yyvsp[0].dbl))); }
  3555. #line 3912 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3556. break;
  3557. case 199:
  3558. #line 1053 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3559. { CHECK(mdl_set_num_iterations(parse_state, (long long) (yyvsp[0].dbl))); }
  3560. #line 3918 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3561. break;
  3562. case 200:
  3563. #line 1054 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3564. { parse_state->vol->randomize_smol_pos = !((yyvsp[0].tok)); }
  3565. #line 3924 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3566. break;
  3567. case 201:
  3568. #line 1055 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3569. { parse_state->vol->use_expanded_list = (yyvsp[0].tok); }
  3570. #line 3930 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3571. break;
  3572. case 202:
  3573. #line 1056 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3574. { parse_state->vol->vacancy_search_dist2 = max2d((yyvsp[0].dbl), 0.0); }
  3575. #line 3936 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3576. break;
  3577. case 203:
  3578. #line 1057 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3579. { CHECK(mdl_set_num_radial_directions(parse_state, (int) (yyvsp[0].dbl))); }
  3580. #line 3942 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3581. break;
  3582. case 204:
  3583. #line 1058 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3584. { parse_state->vol->fully_random = 1; }
  3585. #line 3948 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3586. break;
  3587. case 205:
  3588. #line 1059 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3589. { CHECK(mdl_set_num_radial_subdivisions(parse_state, (int) (yyvsp[0].dbl))); }
  3590. #line 3954 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3591. break;
  3592. case 206:
  3593. #line 1060 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3594. { CHECK(mdl_set_grid_density(parse_state, (yyvsp[0].dbl))); }
  3595. #line 3960 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3596. break;
  3597. case 207:
  3598. #line 1061 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3599. { CHECK(mdl_set_interaction_radius(parse_state, (yyvsp[0].dbl))); }
  3600. #line 3966 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3601. break;
  3602. case 208:
  3603. #line 1062 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3604. { parse_state->vol->surface_reversibility=(yyvsp[0].tok); parse_state->vol->volume_reversibility=(yyvsp[0].tok); }
  3605. #line 3972 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3606. break;
  3607. case 209:
  3608. #line 1063 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3609. { parse_state->vol->surface_reversibility=1; parse_state->vol->volume_reversibility=0; }
  3610. #line 3978 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3611. break;
  3612. case 210:
  3613. #line 1064 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3614. { parse_state->vol->surface_reversibility=0; parse_state->vol->volume_reversibility=1; }
  3615. #line 3984 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3616. break;
  3617. case 211:
  3618. #line 1065 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3619. { CHECK(mcell_add_dynamic_geometry_file((yyvsp[0].str), parse_state)); }
  3620. #line 3990 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3621. break;
  3622. case 212:
  3623. #line 1066 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3624. { parse_state->vol->dynamic_geometry_molecule_placement = 0; }
  3625. #line 3996 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3626. break;
  3627. case 213:
  3628. #line 1067 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3629. { parse_state->vol->dynamic_geometry_molecule_placement = 1; }
  3630. #line 4002 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3631. break;
  3632. case 214:
  3633. #line 1074 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3634. { parse_state->vol->mem_part_x = (int) (yyvsp[0].dbl); }
  3635. #line 4008 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3636. break;
  3637. case 215:
  3638. #line 1075 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3639. { parse_state->vol->mem_part_y = (int) (yyvsp[0].dbl); }
  3640. #line 4014 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3641. break;
  3642. case 216:
  3643. #line 1076 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3644. { parse_state->vol->mem_part_z = (int) (yyvsp[0].dbl); }
  3645. #line 4020 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3646. break;
  3647. case 217:
  3648. #line 1077 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3649. { parse_state->vol->mem_part_pool = (int) (yyvsp[0].dbl); }
  3650. #line 4026 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3651. break;
  3652. case 218:
  3653. #line 1081 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3654. { CHECK(mcell_set_partition(parse_state->vol, (yyvsp[-2].tok), & (yyvsp[0].nlist))); }
  3655. #line 4032 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3656. break;
  3657. case 219:
  3658. #line 1085 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3659. { (yyval.tok) = X_PARTS; }
  3660. #line 4038 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3661. break;
  3662. case 220:
  3663. #line 1086 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3664. { (yyval.tok) = Y_PARTS; }
  3665. #line 4044 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3666. break;
  3667. case 221:
  3668. #line 1087 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3669. { (yyval.tok) = Z_PARTS; }
  3670. #line 4050 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3671. break;
  3672. case 224:
  3673. #line 1098 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3674. { mdl_print_species_summary(parse_state->vol, (yyvsp[0].mcell_mol_spec)); }
  3675. #line 4056 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3676. break;
  3677. case 225:
  3678. #line 1102 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3679. { mdl_print_species_summaries(parse_state->vol, (yyvsp[-1].mcell_species_lst).species_head); }
  3680. #line 4062 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3681. break;
  3682. case 226:
  3683. #line 1106 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3684. { (yyval.mcell_species_lst).species_count = 0; CHECK(mdl_add_to_species_list(&(yyval.mcell_species_lst), (yyvsp[0].mcell_mol_spec))); }
  3685. #line 4068 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3686. break;
  3687. case 227:
  3688. #line 1107 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3689. { (yyval.mcell_species_lst) = (yyvsp[-1].mcell_species_lst); CHECK(mdl_add_to_species_list(&(yyval.mcell_species_lst), (yyvsp[0].mcell_mol_spec))); }
  3690. #line 4074 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3691. break;
  3692. case 228:
  3693. #line 1117 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3694. { CHECKN((yyval.mcell_mol_spec) = mdl_create_species(parse_state, (yyvsp[-7].str), (yyvsp[-5].diff_const).D, (yyvsp[-5].diff_const).is_2d, (yyvsp[-4].dbl), (yyvsp[-3].ival), (yyvsp[-2].dbl), (yyvsp[-1].ival) )); }
  3695. #line 4080 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3696. break;
  3697. case 230:
  3698. #line 1123 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3699. { CHECKN((yyval.sym) = mdl_new_mol_species(parse_state, (yyvsp[0].str))); }
  3700. #line 4086 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3701. break;
  3702. case 231:
  3703. #line 1127 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3704. { (yyval.diff_const).is_2d = 0; (yyval.diff_const).D = (yyvsp[0].dbl); CHECK(mdl_check_diffusion_constant(parse_state, & (yyval.diff_const).D)); }
  3705. #line 4092 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3706. break;
  3707. case 232:
  3708. #line 1128 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3709. { (yyval.diff_const).is_2d = 1; (yyval.diff_const).D = (yyvsp[0].dbl); CHECK(mdl_check_diffusion_constant(parse_state, & (yyval.diff_const).D)); }
  3710. #line 4098 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3711. break;
  3712. case 233:
  3713. #line 1132 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3714. { (yyval.dbl) = 0.0; }
  3715. #line 4104 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3716. break;
  3717. case 234:
  3718. #line 1133 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3719. {
  3720. if ((yyvsp[0].dbl) <= 0)
  3721. {
  3722. mdlerror_fmt(parse_state, "Requested custom time step of %.15g; custom time step must be positive.", (yyvsp[0].dbl));
  3723. return 1;
  3724. }
  3725. (yyval.dbl) = (yyvsp[0].dbl);
  3726. }
  3727. #line 4118 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3728. break;
  3729. case 235:
  3730. #line 1142 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3731. {
  3732. if ((yyvsp[0].dbl) <= 0)
  3733. {
  3734. mdlerror_fmt(parse_state, "Requested custom space step of %.15g; custom space step must be positive.", (yyvsp[0].dbl));
  3735. return 1;
  3736. }
  3737. (yyval.dbl) = -(yyvsp[0].dbl);
  3738. }
  3739. #line 4132 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3740. break;
  3741. case 236:
  3742. #line 1153 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3743. { (yyval.ival) = 0; }
  3744. #line 4138 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3745. break;
  3746. case 237:
  3747. #line 1154 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3748. { (yyval.ival) = 1; }
  3749. #line 4144 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3750. break;
  3751. case 238:
  3752. #line 1158 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3753. { (yyval.dbl) = 0; }
  3754. #line 4150 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3755. break;
  3756. case 239:
  3757. #line 1159 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3758. {
  3759. if ((yyvsp[0].dbl) <= 0)
  3760. {
  3761. mdlerror_fmt(parse_state, "Requested maximum step length of %.15g; maximum step length must be positive.", (yyvsp[0].dbl));
  3762. return 1;
  3763. }
  3764. (yyval.dbl) = (yyvsp[0].dbl);
  3765. }
  3766. #line 4163 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3767. break;
  3768. case 240:
  3769. #line 1169 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3770. {(yyval.ival) = 0;}
  3771. #line 4169 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3772. break;
  3773. case 241:
  3774. #line 1170 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3775. {(yyval.ival) = 1;}
  3776. #line 4175 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3777. break;
  3778. case 242:
  3779. #line 1173 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3780. { CHECKN((yyval.sym) = mdl_existing_molecule(parse_state, (yyvsp[0].str))); }
  3781. #line 4181 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3782. break;
  3783. case 243:
  3784. #line 1177 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3785. { (yyval.mol_type) = (yyvsp[0].mol_type); CHECKN((yyval.mol_type).mol_type = mdl_existing_surface_molecule(parse_state, (yyvsp[-1].str))); }
  3786. #line 4187 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3787. break;
  3788. case 244:
  3789. #line 1181 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3790. {
  3791. (yyval.mol_type) = (yyvsp[0].mol_type);
  3792. if (! (yyval.mol_type).orient_set)
  3793. (yyval.mol_type).orient = 0;
  3794. (yyval.mol_type).mol_type = (yyvsp[-1].sym);
  3795. }
  3796. #line 4198 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3797. break;
  3798. case 251:
  3799. #line 1216 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3800. { mdl_start_surface_class(parse_state, (yyvsp[-1].sym)); }
  3801. #line 4204 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3802. break;
  3803. case 252:
  3804. #line 1218 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3805. { mdl_finish_surface_class(parse_state); }
  3806. #line 4210 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3807. break;
  3808. case 253:
  3809. #line 1221 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3810. { CHECKN((yyval.sym) = mdl_existing_surface_class(parse_state, (yyvsp[0].str))); }
  3811. #line 4216 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3812. break;
  3813. case 258:
  3814. #line 1238 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3815. { CHECKN(mdl_assemble_surface_reaction(parse_state, (yyvsp[-2].tok), parse_state->current_surface_class, (yyvsp[0].mol_type).mol_type, (yyvsp[0].mol_type).orient)); }
  3816. #line 4222 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3817. break;
  3818. case 259:
  3819. #line 1241 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3820. {
  3821. struct sym_entry *mol_sym = retrieve_sym("ALL_MOLECULES", parse_state->vol->mol_sym_table);
  3822. if(!(yyvsp[0].mol_type).orient_set) (yyvsp[0].mol_type).orient = 0;
  3823. CHECKN(mdl_assemble_surface_reaction(parse_state, (yyvsp[-3].tok), parse_state->current_surface_class, mol_sym, (yyvsp[0].mol_type).orient));}
  3824. #line 4231 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3825. break;
  3826. case 260:
  3827. #line 1247 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3828. { CHECKN(mdl_assemble_concentration_clamp_reaction(parse_state, parse_state->current_surface_class, (yyvsp[-2].mol_type).mol_type, (yyvsp[-2].mol_type).orient, (yyvsp[0].dbl))); }
  3829. #line 4237 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3830. break;
  3831. case 261:
  3832. #line 1250 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3833. { (yyval.tok) = RFLCT; }
  3834. #line 4243 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3835. break;
  3836. case 262:
  3837. #line 1251 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3838. { (yyval.tok) = TRANSP; }
  3839. #line 4249 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3840. break;
  3841. case 263:
  3842. #line 1252 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3843. { (yyval.tok) = SINK; }
  3844. #line 4255 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3845. break;
  3846. case 266:
  3847. #line 1259 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3848. { parse_state->current_surface_class->sm_dat_head = (yyvsp[0].surf_mol_dat_list).sm_head; }
  3849. #line 4261 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3850. break;
  3851. case 267:
  3852. #line 1266 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3853. { (yyval.surf_mol_dat_list) = (yyvsp[-1].surf_mol_dat_list); }
  3854. #line 4267 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3855. break;
  3856. case 268:
  3857. #line 1270 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3858. { (yyval.surf_mol_dat_list) = (yyvsp[-1].surf_mol_dat_list); }
  3859. #line 4273 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3860. break;
  3861. case 269:
  3862. #line 1274 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3863. {
  3864. (yyvsp[0].surf_mol_dat)->quantity_type = SURFMOLDENS;
  3865. (yyval.surf_mol_dat_list).sm_tail = (yyval.surf_mol_dat_list).sm_head = (yyvsp[0].surf_mol_dat);
  3866. }
  3867. #line 4282 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3868. break;
  3869. case 270:
  3870. #line 1279 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3871. {
  3872. (yyval.surf_mol_dat_list) = (yyvsp[-1].surf_mol_dat_list);
  3873. (yyvsp[0].surf_mol_dat)->quantity_type = SURFMOLDENS;
  3874. (yyval.surf_mol_dat_list).sm_tail = (yyval.surf_mol_dat_list).sm_tail->next = (yyvsp[0].surf_mol_dat);
  3875. }
  3876. #line 4292 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3877. break;
  3878. case 271:
  3879. #line 1287 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3880. {
  3881. (yyvsp[0].surf_mol_dat)->quantity_type = SURFMOLNUM;
  3882. (yyval.surf_mol_dat_list).sm_tail = (yyval.surf_mol_dat_list).sm_head = (yyvsp[0].surf_mol_dat);
  3883. }
  3884. #line 4301 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3885. break;
  3886. case 272:
  3887. #line 1292 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3888. {
  3889. (yyval.surf_mol_dat_list) = (yyvsp[-1].surf_mol_dat_list);
  3890. (yyvsp[0].surf_mol_dat)->quantity_type = SURFMOLNUM;
  3891. (yyval.surf_mol_dat_list).sm_tail = (yyval.surf_mol_dat_list).sm_tail->next = (yyvsp[0].surf_mol_dat);
  3892. }
  3893. #line 4311 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3894. break;
  3895. case 273:
  3896. #line 1300 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3897. { CHECKN((yyval.surf_mol_dat) = mdl_new_surf_mol_data(parse_state, &(yyvsp[-2].mol_type), (yyvsp[0].dbl))); }
  3898. #line 4317 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3899. break;
  3900. case 283:
  3901. #line 1329 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3902. { (yyval.react_arrow).catalyst = (yyvsp[-1].mol_type); (yyval.react_arrow).flags = ARROW_CATALYTIC; }
  3903. #line 4323 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3904. break;
  3905. case 284:
  3906. #line 1334 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3907. { (yyval.react_arrow).catalyst = (yyvsp[-1].mol_type); (yyval.react_arrow).flags = ARROW_CATALYTIC | ARROW_BIDIRECTIONAL; }
  3908. #line 4329 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3909. break;
  3910. case 285:
  3911. #line 1339 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3912. { (yyval.react_arrow).catalyst.mol_type = NULL; (yyval.react_arrow).flags = 0; }
  3913. #line 4335 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3914. break;
  3915. case 287:
  3916. #line 1341 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3917. { (yyval.react_arrow).catalyst.mol_type = NULL; (yyval.react_arrow).flags = ARROW_BIDIRECTIONAL; }
  3918. #line 4341 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3919. break;
  3920. case 289:
  3921. #line 1345 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3922. { (yyval.sym) = NULL; }
  3923. #line 4347 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3924. break;
  3925. case 290:
  3926. #line 1346 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3927. { CHECKN((yyval.sym) = mdl_new_rxn_pathname(parse_state, (yyvsp[0].str))); }
  3928. #line 4353 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3929. break;
  3930. case 291:
  3931. #line 1352 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3932. { CHECKN(mdl_assemble_reaction(parse_state, (yyvsp[-5].mol_type_list).mol_type_head, &(yyvsp[-4].mol_type), &(yyvsp[-3].react_arrow), (yyvsp[-2].mol_type_list).mol_type_head, &(yyvsp[-1].react_rates), (yyvsp[0].sym))); }
  3933. #line 4359 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3934. break;
  3935. case 292:
  3936. #line 1355 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3937. { CHECK(mdl_reaction_player_singleton(parse_state, & (yyval.mol_type_list), & (yyvsp[0].mol_type))); }
  3938. #line 4365 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3939. break;
  3940. case 293:
  3941. #line 1356 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3942. { (yyval.mol_type_list) = (yyvsp[-2].mol_type_list); CHECK(mdl_add_reaction_player(parse_state, & (yyval.mol_type_list), & (yyvsp[0].mol_type))); }
  3943. #line 4371 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3944. break;
  3945. case 295:
  3946. #line 1363 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3947. { (yyval.mol_type).mol_type = NULL; }
  3948. #line 4377 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3949. break;
  3950. case 296:
  3951. #line 1364 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3952. { (yyval.mol_type) = (yyvsp[0].mol_type); }
  3953. #line 4383 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3954. break;
  3955. case 297:
  3956. #line 1368 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3957. { (yyval.mol_type) = (yyvsp[0].mol_type); (yyval.mol_type).mol_type = (yyvsp[-1].sym); }
  3958. #line 4389 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3959. break;
  3960. case 298:
  3961. #line 1371 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3962. { CHECK(mdl_reaction_player_singleton(parse_state, & (yyval.mol_type_list), & (yyvsp[0].mol_type))); }
  3963. #line 4395 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3964. break;
  3965. case 299:
  3966. #line 1372 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3967. { (yyval.mol_type_list) = (yyvsp[-2].mol_type_list); CHECK(mdl_add_reaction_player(parse_state, & (yyval.mol_type_list), & (yyvsp[0].mol_type))); }
  3968. #line 4401 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3969. break;
  3970. case 300:
  3971. #line 1375 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3972. { (yyval.mol_type).mol_type = NULL; (yyval.mol_type).orient_set = 0; }
  3973. #line 4407 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3974. break;
  3975. case 304:
  3976. #line 1384 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3977. {
  3978. if ((yyvsp[-1].react_rates).forward_rate.rate_type == RATE_UNSET)
  3979. {
  3980. mdlerror(parse_state, "invalid reaction rate specification: must specify a forward rate.");
  3981. return 1;
  3982. }
  3983. (yyval.react_rates) = (yyvsp[-1].react_rates);
  3984. }
  3985. #line 4421 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  3986. break;
  3987. case 305:
  3988. #line 1395 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  3989. {
  3990. if (((yyvsp[-3].react_rates).forward_rate.rate_type != RATE_UNSET && (yyvsp[-1].react_rates).forward_rate.rate_type != RATE_UNSET) ||
  3991. ((yyvsp[-3].react_rates).backward_rate.rate_type != RATE_UNSET && (yyvsp[-1].react_rates).backward_rate.rate_type != RATE_UNSET))
  3992. {
  3993. mdlerror_fmt(parse_state, "when two reaction rates are specified, one must be a forward rate, and one must be a reverse rate");
  3994. return 1;
  3995. }
  3996. (yyval.react_rates) = (yyvsp[-3].react_rates);
  3997. if ((yyvsp[-1].react_rates).forward_rate.rate_type != RATE_UNSET)
  3998. (yyval.react_rates).forward_rate = (yyvsp[-1].react_rates).forward_rate;
  3999. else
  4000. (yyval.react_rates).backward_rate = (yyvsp[-1].react_rates).backward_rate;
  4001. }
  4002. #line 4440 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4003. break;
  4004. case 306:
  4005. #line 1412 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4006. { (yyval.react_rates).forward_rate = (yyvsp[0].react_rate); (yyval.react_rates).backward_rate.rate_type = RATE_UNSET; CHECK(mdl_valid_rate(parse_state, &(yyvsp[0].react_rate))); }
  4007. #line 4446 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4008. break;
  4009. case 307:
  4010. #line 1413 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4011. { (yyval.react_rates).forward_rate = (yyvsp[0].react_rate); (yyval.react_rates).backward_rate.rate_type = RATE_UNSET; CHECK(mdl_valid_rate(parse_state, &(yyvsp[0].react_rate))); }
  4012. #line 4452 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4013. break;
  4014. case 308:
  4015. #line 1414 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4016. { (yyval.react_rates).backward_rate = (yyvsp[0].react_rate); (yyval.react_rates).forward_rate.rate_type = RATE_UNSET; CHECK(mdl_valid_rate(parse_state, &(yyvsp[0].react_rate))); }
  4017. #line 4458 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4018. break;
  4019. case 309:
  4020. #line 1418 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4021. { (yyval.react_rate).rate_type = RATE_CONSTANT; (yyval.react_rate).v.rate_constant = (yyvsp[0].dbl); }
  4022. #line 4464 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4023. break;
  4024. case 310:
  4025. #line 1419 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4026. { (yyval.react_rate).rate_type = RATE_FILE; (yyval.react_rate).v.rate_file = (yyvsp[0].str); }
  4027. #line 4470 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4028. break;
  4029. case 311:
  4030. #line 1420 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4031. { CHECK(mdl_reaction_rate_from_var(parse_state, & (yyval.react_rate), (yyvsp[0].sym))); }
  4032. #line 4476 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4033. break;
  4034. case 312:
  4035. #line 1431 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4036. { CHECK(mdl_set_release_pattern(parse_state, (yyvsp[-3].sym), &(yyvsp[-1].rpat))); }
  4037. #line 4482 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4038. break;
  4039. case 313:
  4040. #line 1434 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4041. { CHECKN((yyval.sym) = mdl_new_release_pattern(parse_state, (yyvsp[0].str))); }
  4042. #line 4488 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4043. break;
  4044. case 314:
  4045. #line 1437 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4046. { CHECKN((yyval.sym) = mdl_existing_release_pattern_or_rxn_pathname(parse_state, (yyvsp[0].str))); }
  4047. #line 4494 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4048. break;
  4049. case 315:
  4050. #line 1441 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4051. {
  4052. (yyval.rpat).delay = 0;
  4053. (yyval.rpat).release_interval = FOREVER;
  4054. (yyval.rpat).train_interval = FOREVER;
  4055. (yyval.rpat).train_duration = FOREVER;
  4056. (yyval.rpat).number_of_trains = 1;
  4057. }
  4058. #line 4506 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4059. break;
  4060. case 316:
  4061. #line 1449 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4062. { (yyval.rpat) = (yyvsp[-3].rpat); (yyval.rpat).delay = (yyvsp[0].dbl) / parse_state->vol->time_unit; }
  4063. #line 4512 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4064. break;
  4065. case 317:
  4066. #line 1451 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4067. { (yyval.rpat) = (yyvsp[-3].rpat); (yyval.rpat).release_interval = (yyvsp[0].dbl) / parse_state->vol->time_unit; }
  4068. #line 4518 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4069. break;
  4070. case 318:
  4071. #line 1453 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4072. { (yyval.rpat) = (yyvsp[-3].rpat); (yyval.rpat).train_interval = (yyvsp[0].dbl) / parse_state->vol->time_unit; }
  4073. #line 4524 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4074. break;
  4075. case 319:
  4076. #line 1455 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4077. { (yyval.rpat) = (yyvsp[-3].rpat); (yyval.rpat).train_duration = (yyvsp[0].dbl) / parse_state->vol->time_unit; }
  4078. #line 4530 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4079. break;
  4080. case 320:
  4081. #line 1457 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4082. { (yyval.rpat) = (yyvsp[-3].rpat); (yyval.rpat).number_of_trains = (yyvsp[0].ival); }
  4083. #line 4536 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4084. break;
  4085. case 321:
  4086. #line 1460 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4087. { (yyval.ival) = (int) (yyvsp[0].dbl); }
  4088. #line 4542 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4089. break;
  4090. case 322:
  4091. #line 1461 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4092. { (yyval.ival) = INT_MAX; }
  4093. #line 4548 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4094. break;
  4095. case 323:
  4096. #line 1468 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4097. { parse_state->current_object = parse_state->vol->root_instance; }
  4098. #line 4554 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4099. break;
  4100. case 324:
  4101. #line 1469 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4102. {
  4103. check_regions(parse_state->vol->root_instance, (yyvsp[0].obj));
  4104. add_child_objects(parse_state->vol->root_instance, (yyvsp[0].obj), (yyvsp[0].obj));
  4105. parse_state->current_object = parse_state->vol->root_object;
  4106. }
  4107. #line 4564 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4108. break;
  4109. case 325:
  4110. #line 1479 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4111. { add_child_objects(parse_state->vol->root_object, (yyvsp[0].obj), (yyvsp[0].obj)); }
  4112. #line 4570 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4113. break;
  4114. case 331:
  4115. #line 1495 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4116. { CHECKN((yyval.sym) = mdl_start_object(parse_state, (yyvsp[0].str))); }
  4117. #line 4576 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4118. break;
  4119. case 333:
  4120. #line 1501 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4121. { mdl_finish_object(parse_state); }
  4122. #line 4582 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4123. break;
  4124. case 337:
  4125. #line 1514 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4126. { transform_translate(parse_state->vol, parse_state->current_object->t_matrix, (yyvsp[0].vec3)); }
  4127. #line 4588 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4128. break;
  4129. case 338:
  4130. #line 1515 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4131. { transform_scale(parse_state->current_object->t_matrix, (yyvsp[0].vec3)); }
  4132. #line 4594 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4133. break;
  4134. case 339:
  4135. #line 1516 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4136. { CHECK(mdl_transform_rotate(parse_state, parse_state->current_object->t_matrix, (yyvsp[-2].vec3), (yyvsp[0].dbl))); }
  4137. #line 4600 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4138. break;
  4139. case 340:
  4140. #line 1525 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4141. {
  4142. struct object *the_object = (struct object *) (yyvsp[-5].sym)->value;
  4143. the_object->object_type = META_OBJ;
  4144. add_child_objects(the_object, (yyvsp[-2].obj_list).obj_head, (yyvsp[-2].obj_list).obj_tail);
  4145. (yyval.obj) = the_object;
  4146. }
  4147. #line 4611 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4148. break;
  4149. case 341:
  4150. #line 1534 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4151. { mdl_object_list_singleton(& (yyval.obj_list), (yyvsp[0].obj)); }
  4152. #line 4617 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4153. break;
  4154. case 342:
  4155. #line 1535 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4156. { (yyval.obj_list) = (yyvsp[-1].obj_list); mdl_add_object_to_list(& (yyval.obj_list), (yyvsp[0].obj)); }
  4157. #line 4623 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4158. break;
  4159. case 345:
  4160. #line 1544 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4161. { CHECK(mdl_deep_copy_object(parse_state, (struct object *) (yyvsp[-3].sym)->value, (struct object *) (yyvsp[-1].sym)->value)); }
  4162. #line 4629 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4163. break;
  4164. case 346:
  4165. #line 1546 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4166. { (yyval.obj) = (struct object *) (yyvsp[-6].sym)->value; }
  4167. #line 4635 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4168. break;
  4169. case 349:
  4170. #line 1556 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4171. { CHECK(mdl_start_release_site(parse_state, (yyvsp[-2].sym), SHAPE_UNDEFINED)); }
  4172. #line 4641 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4173. break;
  4174. case 350:
  4175. #line 1560 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4176. { CHECKN((yyval.obj) = mdl_finish_release_site(parse_state, (yyvsp[-7].sym))); }
  4177. #line 4647 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4178. break;
  4179. case 351:
  4180. #line 1563 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4181. { CHECK(mdl_set_release_site_geometry_region(parse_state, parse_state->current_release_site, parse_state->current_object, (yyvsp[0].rev))); }
  4182. #line 4653 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4183. break;
  4184. case 352:
  4185. #line 1564 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4186. { CHECK(mdl_set_release_site_geometry_object(parse_state, parse_state->current_release_site, (struct object *) (yyvsp[0].sym)->value)); }
  4187. #line 4659 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4188. break;
  4189. case 353:
  4190. #line 1565 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4191. { parse_state->current_release_site->release_shape = SHAPE_SPHERICAL; }
  4192. #line 4665 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4193. break;
  4194. case 354:
  4195. #line 1566 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4196. { parse_state->current_release_site->release_shape = SHAPE_CUBIC; }
  4197. #line 4671 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4198. break;
  4199. case 355:
  4200. #line 1567 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4201. { parse_state->current_release_site->release_shape = SHAPE_ELLIPTIC; }
  4202. #line 4677 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4203. break;
  4204. case 356:
  4205. #line 1568 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4206. { parse_state->current_release_site->release_shape = SHAPE_RECTANGULAR; }
  4207. #line 4683 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4208. break;
  4209. case 357:
  4210. #line 1569 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4211. { parse_state->current_release_site->release_shape = SHAPE_SPHERICAL_SHELL; }
  4212. #line 4689 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4213. break;
  4214. case 358:
  4215. #line 1570 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4216. {
  4217. parse_state->current_release_site->release_shape = SHAPE_LIST;
  4218. parse_state->current_release_site->release_number_method = CONSTNUM;
  4219. }
  4220. #line 4698 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4221. break;
  4222. case 359:
  4223. #line 1577 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4224. { CHECKN((yyval.rev) = new_release_region_expr_term((yyvsp[0].sym))); }
  4225. #line 4704 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4226. break;
  4227. case 360:
  4228. #line 1578 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4229. { (yyval.rev) = (yyvsp[-1].rev); }
  4230. #line 4710 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4231. break;
  4232. case 361:
  4233. #line 1579 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4234. { CHECKN((yyval.rev) = new_release_region_expr_binary((yyvsp[-2].rev), (yyvsp[0].rev), REXP_UNION)); }
  4235. #line 4716 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4236. break;
  4237. case 362:
  4238. #line 1580 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4239. { CHECKN((yyval.rev) = new_release_region_expr_binary((yyvsp[-2].rev), (yyvsp[0].rev), REXP_SUBTRACTION)); }
  4240. #line 4722 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4241. break;
  4242. case 363:
  4243. #line 1581 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4244. { CHECKN((yyval.rev) = new_release_region_expr_binary((yyvsp[-2].rev), (yyvsp[0].rev), REXP_INTERSECTION)); }
  4245. #line 4728 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4246. break;
  4247. case 364:
  4248. #line 1586 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4249. { CHECK(mdl_start_release_site(parse_state, (yyvsp[-2].sym), (yyvsp[-1].tok))); }
  4250. #line 4734 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4251. break;
  4252. case 365:
  4253. #line 1589 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4254. { CHECKN((yyval.obj) = mdl_finish_release_site(parse_state, (yyvsp[-6].sym))); }
  4255. #line 4740 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4256. break;
  4257. case 366:
  4258. #line 1592 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4259. { (yyval.tok) = SHAPE_SPHERICAL; }
  4260. #line 4746 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4261. break;
  4262. case 367:
  4263. #line 1593 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4264. { (yyval.tok) = SHAPE_CUBIC; }
  4265. #line 4752 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4266. break;
  4267. case 368:
  4268. #line 1594 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4269. { (yyval.tok) = SHAPE_ELLIPTIC; }
  4270. #line 4758 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4271. break;
  4272. case 369:
  4273. #line 1595 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4274. { (yyval.tok) = SHAPE_RECTANGULAR; }
  4275. #line 4764 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4276. break;
  4277. case 370:
  4278. #line 1596 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4279. { (yyval.tok) = SHAPE_SPHERICAL_SHELL; }
  4280. #line 4770 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4281. break;
  4282. case 373:
  4283. #line 1604 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4284. { CHECKN((yyval.sym) = mdl_existing_num_or_array(parse_state, (yyvsp[0].str))); }
  4285. #line 4776 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4286. break;
  4287. case 374:
  4288. #line 1608 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4289. { set_release_site_location(parse_state->vol, parse_state->current_release_site, (yyvsp[0].vec3)); }
  4290. #line 4782 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4291. break;
  4292. case 375:
  4293. #line 1609 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4294. { CHECK(mdl_set_release_site_molecule(parse_state, parse_state->current_release_site, & (yyvsp[0].mol_type))); }
  4295. #line 4788 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4296. break;
  4297. case 376:
  4298. #line 1610 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4299. {
  4300. if (parse_state->current_release_site->release_shape == SHAPE_LIST)
  4301. {
  4302. mdlerror(parse_state, "molecules are already specified in a list--cannot set number or density.");
  4303. return 1;
  4304. }
  4305. }
  4306. #line 4800 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4307. break;
  4308. case 377:
  4309. #line 1617 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4310. { CHECK(mdl_set_release_site_diameter(parse_state, parse_state->current_release_site, (yyvsp[0].dbl) * (((yyvsp[-2].tok) == SITE_RADIUS) ? 2.0 : 1.0))); }
  4311. #line 4806 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4312. break;
  4313. case 378:
  4314. #line 1618 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4315. { CHECK(mdl_set_release_site_diameter_array(parse_state, parse_state->current_release_site, (yyvsp[0].nlist).value_count, (yyvsp[0].nlist).value_head, ((yyvsp[-2].tok) == SITE_RADIUS) ? 2.0 : 1.0)); }
  4316. #line 4812 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4317. break;
  4318. case 379:
  4319. #line 1619 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4320. { CHECK(mdl_set_release_site_diameter_var(parse_state, parse_state->current_release_site, ((yyvsp[-2].tok) == SITE_RADIUS) ? 2.0 : 1.0, (yyvsp[0].sym))); }
  4321. #line 4818 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4322. break;
  4323. case 380:
  4324. #line 1620 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4325. { CHECK(mdl_set_release_site_periodic_box(parse_state, parse_state->current_release_site, (yyvsp[0].vec3))); }
  4326. #line 4824 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4327. break;
  4328. case 381:
  4329. #line 1621 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4330. { CHECK(mdl_set_release_site_probability(parse_state, parse_state->current_release_site, (yyvsp[0].dbl))); }
  4331. #line 4830 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4332. break;
  4333. case 382:
  4334. #line 1623 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4335. { CHECK(mdl_set_release_site_pattern(parse_state, parse_state->current_release_site, (yyvsp[0].sym))); }
  4336. #line 4836 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4337. break;
  4338. case 383:
  4339. #line 1625 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4340. { CHECK(mdl_set_release_site_molecule_positions(parse_state, parse_state->current_release_site, & (yyvsp[-1].rsm_list))); }
  4341. #line 4842 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4342. break;
  4343. case 384:
  4344. #line 1626 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4345. {CHECK(mdl_set_release_site_graph_pattern(parse_state, parse_state->current_release_site, (yyvsp[0].str))); }
  4346. #line 4848 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4347. break;
  4348. case 385:
  4349. #line 1630 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4350. { (yyval.tok) = SITE_DIAMETER; }
  4351. #line 4854 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4352. break;
  4353. case 386:
  4354. #line 1631 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4355. { (yyval.tok) = SITE_RADIUS; }
  4356. #line 4860 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4357. break;
  4358. case 391:
  4359. #line 1643 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4360. { set_release_site_constant_number(parse_state->current_release_site, (yyvsp[0].dbl)); }
  4361. #line 4866 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4362. break;
  4363. case 392:
  4364. #line 1646 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4365. { set_release_site_constant_number(parse_state->current_release_site, (yyvsp[-1].dbl)); }
  4366. #line 4872 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4367. break;
  4368. case 393:
  4369. #line 1653 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4370. { set_release_site_gaussian_number(parse_state->current_release_site, (yyvsp[-4].dbl), (yyvsp[-1].dbl)); }
  4371. #line 4878 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4372. break;
  4373. case 394:
  4374. #line 1661 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4375. { set_release_site_volume_dependent_number(parse_state->current_release_site, (yyvsp[-7].dbl), (yyvsp[-4].dbl), (yyvsp[-1].dbl)); }
  4376. #line 4884 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4377. break;
  4378. case 395:
  4379. #line 1665 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4380. { CHECK(mdl_set_release_site_concentration(parse_state, parse_state->current_release_site, (yyvsp[0].dbl))); }
  4381. #line 4890 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4382. break;
  4383. case 396:
  4384. #line 1666 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4385. { CHECK(set_release_site_density(parse_state->current_release_site, (yyvsp[0].dbl))); }
  4386. #line 4896 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4387. break;
  4388. case 397:
  4389. #line 1670 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4390. { release_single_molecule_singleton(& (yyval.rsm_list), (yyvsp[0].rsm)); }
  4391. #line 4902 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4392. break;
  4393. case 398:
  4394. #line 1672 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4395. { (yyval.rsm_list) = (yyvsp[-1].rsm_list); add_release_single_molecule_to_list(& (yyval.rsm_list), (yyvsp[0].rsm)); }
  4396. #line 4908 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4397. break;
  4398. case 399:
  4399. #line 1676 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4400. { CHECKN((yyval.rsm) = mdl_new_release_single_molecule(parse_state, &(yyvsp[-1].mol_type), (yyvsp[0].vec3))); }
  4401. #line 4914 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4402. break;
  4403. case 401:
  4404. #line 1687 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4405. {
  4406. CHECKN((yyval.obj) = mdl_new_polygon_list(
  4407. parse_state, (yyvsp[-4].str), (yyvsp[-1].vertlist).vertex_count, (yyvsp[-1].vertlist).vertex_head,
  4408. (yyvsp[0].ecl).connection_count, (yyvsp[0].ecl).connection_head));
  4409. }
  4410. #line 4924 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4411. break;
  4412. case 402:
  4413. #line 1696 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4414. {
  4415. (yyval.obj) = (struct object *) (yyvsp[-3].obj);
  4416. CHECK(mdl_finish_polygon_list(parse_state, (yyval.obj)));
  4417. }
  4418. #line 4933 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4419. break;
  4420. case 403:
  4421. #line 1702 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4422. { (yyval.vertlist) = (yyvsp[-1].vertlist); }
  4423. #line 4939 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4424. break;
  4425. case 404:
  4426. #line 1705 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4427. { CHECKN((yyval.vertlistitem) = mdl_new_vertex_list_item((yyvsp[0].vec3))); }
  4428. #line 4945 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4429. break;
  4430. case 405:
  4431. #line 1708 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4432. { mdl_vertex_list_singleton(& (yyval.vertlist), (yyvsp[0].vertlistitem)); }
  4433. #line 4951 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4434. break;
  4435. case 406:
  4436. #line 1709 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4437. { (yyval.vertlist) = (yyvsp[-1].vertlist); mdl_add_vertex_to_list(& (yyval.vertlist), (yyvsp[0].vertlistitem)); }
  4438. #line 4957 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4439. break;
  4440. case 407:
  4441. #line 1714 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4442. { (yyval.ecl) = (yyvsp[-1].ecl); }
  4443. #line 4963 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4444. break;
  4445. case 408:
  4446. #line 1718 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4447. { mdl_element_connection_list_singleton(& (yyval.ecl), (yyvsp[0].elem_conn)); }
  4448. #line 4969 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4449. break;
  4450. case 409:
  4451. #line 1720 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4452. { (yyval.ecl) = (yyvsp[-1].ecl); mdl_add_element_connection_to_list(& (yyval.ecl), (yyvsp[0].elem_conn)); }
  4453. #line 4975 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4454. break;
  4455. case 410:
  4456. #line 1723 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4457. { CHECKN((yyval.elem_conn) = mdl_new_element_connection(parse_state, & (yyvsp[0].nlist))); }
  4458. #line 4981 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4459. break;
  4460. case 415:
  4461. #line 1739 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4462. { CHECKN(parse_state->current_region = mdl_get_region(parse_state, parse_state->current_object, "REMOVED")); }
  4463. #line 4987 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4464. break;
  4465. case 416:
  4466. #line 1741 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4467. {
  4468. parse_state->current_region->element_list_head = (yyvsp[-1].elem_list).elml_head;
  4469. if (parse_state->current_object->object_type == POLY_OBJ)
  4470. {
  4471. CHECK(mdl_normalize_elements(parse_state, parse_state->current_region,0));
  4472. }
  4473. }
  4474. #line 4999 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4475. break;
  4476. case 419:
  4477. #line 1755 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4478. { (yyval.tok) = Z_POS; }
  4479. #line 5005 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4480. break;
  4481. case 420:
  4482. #line 1756 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4483. { (yyval.tok) = Z_NEG; }
  4484. #line 5011 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4485. break;
  4486. case 421:
  4487. #line 1757 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4488. { (yyval.tok) = Y_NEG; }
  4489. #line 5017 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4490. break;
  4491. case 422:
  4492. #line 1758 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4493. { (yyval.tok) = Y_POS; }
  4494. #line 5023 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4495. break;
  4496. case 423:
  4497. #line 1759 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4498. { (yyval.tok) = X_NEG; }
  4499. #line 5029 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4500. break;
  4501. case 424:
  4502. #line 1760 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4503. { (yyval.tok) = X_POS; }
  4504. #line 5035 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4505. break;
  4506. case 425:
  4507. #line 1761 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4508. { (yyval.tok) = ALL_SIDES; }
  4509. #line 5041 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4510. break;
  4511. case 427:
  4512. #line 1767 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4513. { (yyval.elem_list) = (yyvsp[-1].elem_list); mdl_add_elements_to_list(& (yyval.elem_list), (yyvsp[0].elem_list).elml_head, (yyvsp[0].elem_list).elml_tail); }
  4514. #line 5047 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4515. break;
  4516. case 430:
  4517. #line 1773 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4518. { (yyval.elem_list).elml_tail = (yyval.elem_list).elml_head = (yyvsp[0].elem_list_item); }
  4519. #line 5053 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4520. break;
  4521. case 431:
  4522. #line 1774 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4523. { (yyval.elem_list).elml_tail = (yyval.elem_list).elml_head = (yyvsp[0].elem_list_item); }
  4524. #line 5059 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4525. break;
  4526. case 432:
  4527. #line 1779 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4528. { (yyval.elem_list) = (yyvsp[-1].elem_list); }
  4529. #line 5065 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4530. break;
  4531. case 433:
  4532. #line 1784 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4533. { (yyval.elem_list) = (yyvsp[-1].elem_list); mdl_set_elements_to_exclude((yyval.elem_list).elml_head); }
  4534. #line 5071 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4535. break;
  4536. case 435:
  4537. #line 1791 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4538. { (yyval.elem_list).elml_tail = (yyval.elem_list).elml_head = (yyvsp[0].elem_list_item); }
  4539. #line 5077 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4540. break;
  4541. case 436:
  4542. #line 1792 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4543. { (yyval.elem_list) = (yyvsp[-2].elem_list); mdl_add_elements_to_list(& (yyval.elem_list), (yyvsp[0].elem_list_item), (yyvsp[0].elem_list_item)); }
  4544. #line 5083 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4545. break;
  4546. case 437:
  4547. #line 1795 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4548. { CHECKN((yyval.elem_list_item) = new_element_list((unsigned int) (yyvsp[0].dbl), (unsigned int) (yyvsp[0].dbl))); }
  4549. #line 5089 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4550. break;
  4551. case 438:
  4552. #line 1796 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4553. { CHECKN((yyval.elem_list_item) = new_element_list((unsigned int) (yyvsp[-2].dbl), (unsigned int) (yyvsp[0].dbl))); }
  4554. #line 5095 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4555. break;
  4556. case 439:
  4557. #line 1797 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4558. { CHECKN((yyval.elem_list_item) = mdl_new_element_side(parse_state, (yyvsp[0].tok))); }
  4559. #line 5101 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4560. break;
  4561. case 440:
  4562. #line 1800 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4563. { CHECKN((yyval.elem_list_item) = mdl_new_element_previous_region(parse_state, parse_state->current_object, parse_state->current_region, (yyvsp[0].str), (yyvsp[-2].tok))); }
  4564. #line 5107 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4565. break;
  4566. case 441:
  4567. #line 1803 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4568. { (yyval.tok) = 0; }
  4569. #line 5113 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4570. break;
  4571. case 442:
  4572. #line 1804 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4573. { (yyval.tok) = 1; }
  4574. #line 5119 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4575. break;
  4576. case 443:
  4577. #line 1807 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4578. { CHECKN((yyval.elem_list_item) = mdl_new_element_patch(parse_state, parse_state->current_polygon, (yyvsp[-2].vec3), (yyvsp[0].vec3), (yyvsp[-4].tok))); }
  4579. #line 5125 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4580. break;
  4581. case 444:
  4582. #line 1810 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4583. { (yyval.tok) = 0; }
  4584. #line 5131 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4585. break;
  4586. case 445:
  4587. #line 1811 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4588. { (yyval.tok) = 1; }
  4589. #line 5137 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4590. break;
  4591. case 449:
  4592. #line 1827 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4593. { parse_state->current_region = (yyvsp[-1].reg); }
  4594. #line 5143 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4595. break;
  4596. case 450:
  4597. #line 1828 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4598. { CHECK(mdl_set_region_elements(parse_state, (yyvsp[-3].reg), (yyvsp[0].elem_list).elml_head, (yyvsp[-3].reg)->parent->object_type == POLY_OBJ)); }
  4599. #line 5149 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4600. break;
  4601. case 451:
  4602. #line 1830 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4603. { parse_state->current_region = NULL; }
  4604. #line 5155 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4605. break;
  4606. case 452:
  4607. #line 1838 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4608. {
  4609. CHECKN(mdl_new_voxel_list(parse_state, (yyvsp[-4].sym),
  4610. (yyvsp[-1].vertlist).vertex_count, (yyvsp[-1].vertlist).vertex_head,
  4611. (yyvsp[0].ecl).connection_count, (yyvsp[0].ecl).connection_head));
  4612. }
  4613. #line 5165 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4614. break;
  4615. case 453:
  4616. #line 1844 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4617. { (yyval.obj) = (struct object *) (yyvsp[-7].sym)->value; }
  4618. #line 5171 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4619. break;
  4620. case 454:
  4621. #line 1849 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4622. { (yyval.ecl) = (yyvsp[-1].ecl); }
  4623. #line 5177 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4624. break;
  4625. case 455:
  4626. #line 1852 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4627. { CHECKN((yyval.elem_conn) = mdl_new_tet_element_connection(parse_state, & (yyvsp[0].nlist))); }
  4628. #line 5183 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4629. break;
  4630. case 456:
  4631. #line 1856 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4632. {
  4633. (yyval.ecl).connection_head = (yyval.ecl).connection_tail = (yyvsp[0].elem_conn);
  4634. (yyval.ecl).connection_count = 1;
  4635. }
  4636. #line 5192 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4637. break;
  4638. case 457:
  4639. #line 1860 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4640. {
  4641. (yyval.ecl) = (yyvsp[-1].ecl);
  4642. (yyval.ecl).connection_tail = (yyval.ecl).connection_tail->next = (yyvsp[0].elem_conn);
  4643. ++ (yyval.ecl).connection_count;
  4644. }
  4645. #line 5202 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4646. break;
  4647. case 458:
  4648. #line 1870 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4649. { parse_state->vol->periodic_traditional = (yyvsp[0].tok); }
  4650. #line 5208 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4651. break;
  4652. case 459:
  4653. #line 1873 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4654. { CHECKN(mdl_create_periodic_box(parse_state, (yyvsp[-7].vec3), (yyvsp[-5].vec3), (yyvsp[-2].tok), (yyvsp[-1].tok), (yyvsp[0].tok))); }
  4655. #line 5214 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4656. break;
  4657. case 460:
  4658. #line 1874 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4659. { CHECK(mdl_finish_periodic_box(parse_state)); }
  4660. #line 5220 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4661. break;
  4662. case 461:
  4663. #line 1880 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4664. { CHECKN(mdl_new_box_object(parse_state, (yyvsp[-8].sym), (yyvsp[-3].vec3), (yyvsp[-1].vec3))); }
  4665. #line 5226 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4666. break;
  4667. case 462:
  4668. #line 1881 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4669. { CHECK(mdl_triangulate_box_object(parse_state, (yyvsp[-10].sym), parse_state->current_polygon, (yyvsp[-2].dbl))); }
  4670. #line 5232 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4671. break;
  4672. case 463:
  4673. #line 1883 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4674. {
  4675. CHECK(mdl_finish_box_object(parse_state, (yyvsp[-13].sym)));
  4676. (yyval.obj) = (struct object *) (yyvsp[-13].sym)->value;
  4677. }
  4678. #line 5241 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4679. break;
  4680. case 464:
  4681. #line 1890 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4682. { (yyval.tok) = 0; }
  4683. #line 5247 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4684. break;
  4685. case 465:
  4686. #line 1891 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4687. { (yyval.tok) = (yyvsp[0].tok); }
  4688. #line 5253 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4689. break;
  4690. case 466:
  4691. #line 1895 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4692. { (yyval.tok) = 0; }
  4693. #line 5259 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4694. break;
  4695. case 467:
  4696. #line 1896 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4697. { (yyval.tok) = (yyvsp[0].tok); }
  4698. #line 5265 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4699. break;
  4700. case 468:
  4701. #line 1900 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4702. { (yyval.tok) = 0; }
  4703. #line 5271 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4704. break;
  4705. case 469:
  4706. #line 1901 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4707. { (yyval.tok) = (yyvsp[0].tok); }
  4708. #line 5277 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4709. break;
  4710. case 470:
  4711. #line 1905 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4712. { (yyval.tok) = 0; }
  4713. #line 5283 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4714. break;
  4715. case 471:
  4716. #line 1906 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4717. { (yyval.tok) = (yyvsp[0].tok); }
  4718. #line 5289 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4719. break;
  4720. case 472:
  4721. #line 1909 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4722. { (yyval.dbl) = 0.0; }
  4723. #line 5295 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4724. break;
  4725. case 473:
  4726. #line 1910 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4727. {
  4728. (yyval.dbl) = (yyvsp[0].dbl);
  4729. if ((yyval.dbl) < 2.0)
  4730. {
  4731. mdlerror(parse_state, "invalid aspect ratio requested (must be greater than or equal to 2.0)");
  4732. return 1;
  4733. }
  4734. }
  4735. #line 5308 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4736. break;
  4737. case 477:
  4738. #line 1936 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4739. { CHECK(mdl_start_existing_obj_region_def(parse_state, (yyvsp[0].sym))); }
  4740. #line 5314 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4741. break;
  4742. case 478:
  4743. #line 1937 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4744. { parse_state->current_region = (yyvsp[-1].reg); }
  4745. #line 5320 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4746. break;
  4747. case 479:
  4748. #line 1939 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4749. { mdl_set_region_elements(parse_state, (yyvsp[-4].reg), (yyvsp[0].elem_list).elml_head, 1); }
  4750. #line 5326 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4751. break;
  4752. case 480:
  4753. #line 1941 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4754. {
  4755. parse_state->current_region = NULL;
  4756. parse_state->current_polygon = NULL;
  4757. parse_state->current_object = parse_state->vol->root_object;
  4758. }
  4759. #line 5336 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4760. break;
  4761. case 481:
  4762. #line 1948 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4763. { CHECKN((yyval.reg) = mdl_create_region(parse_state, parse_state->current_object, (yyvsp[0].str))); }
  4764. #line 5342 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4765. break;
  4766. case 485:
  4767. #line 1959 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4768. { mdl_add_surf_mol_to_region(parse_state->current_region, & (yyvsp[0].surf_mol_dat_list)); }
  4769. #line 5348 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4770. break;
  4771. case 486:
  4772. #line 1963 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4773. { mdl_set_region_surface_class(parse_state, parse_state->current_region, (yyvsp[0].sym)); }
  4774. #line 5354 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4775. break;
  4776. case 490:
  4777. #line 1982 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4778. { parse_state->current_region = (struct region *) (yyvsp[-1].sym)->value; }
  4779. #line 5360 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4780. break;
  4781. case 491:
  4782. #line 1984 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4783. { parse_state->current_region = NULL; }
  4784. #line 5366 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4785. break;
  4786. case 492:
  4787. #line 1992 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4788. {
  4789. parse_state->header_comment = NULL; /* No header by default */
  4790. parse_state->exact_time_flag = 1; /* Print exact_time column in TRIGGER output by default */
  4791. }
  4792. #line 5375 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4793. break;
  4794. case 493:
  4795. #line 1998 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4796. { CHECK(mdl_add_reaction_output_block_to_world(parse_state, (int) (yyvsp[-4].dbl), & (yyvsp[-2].ro_otimes), & (yyvsp[-1].ro_sets))); }
  4797. #line 5381 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4798. break;
  4799. case 494:
  4800. #line 2002 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4801. { (yyval.dbl) = COUNTBUFFERSIZE; }
  4802. #line 5387 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4803. break;
  4804. case 495:
  4805. #line 2003 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4806. {
  4807. double temp_value = (yyvsp[0].dbl);
  4808. if (!(temp_value >= 1.0 && temp_value < UINT_MAX))
  4809. {
  4810. mdlerror_fmt(parse_state, "Requested buffer size of %.15g lines is invalid. Suggested range is 100-1000000.", temp_value);
  4811. return 1;
  4812. }
  4813. (yyval.dbl) = (yyvsp[0].dbl);
  4814. }
  4815. #line 5401 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4816. break;
  4817. case 499:
  4818. #line 2019 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4819. { (yyval.ro_otimes).type = OUTPUT_BY_STEP; (yyval.ro_otimes).step = (yyvsp[0].dbl); }
  4820. #line 5407 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4821. break;
  4822. case 500:
  4823. #line 2023 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4824. {
  4825. (yyval.ro_otimes).type = OUTPUT_BY_ITERATION_LIST;
  4826. (yyval.ro_otimes).values = (yyvsp[0].nlist);
  4827. }
  4828. #line 5416 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4829. break;
  4830. case 501:
  4831. #line 2031 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4832. {
  4833. (yyval.ro_otimes).type = OUTPUT_BY_TIME_LIST;
  4834. (yyval.ro_otimes).values = (yyvsp[0].nlist);
  4835. }
  4836. #line 5425 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4837. break;
  4838. case 502:
  4839. #line 2038 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4840. { (yyval.ro_sets).set_head = (yyval.ro_sets).set_tail = NULL; }
  4841. #line 5431 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4842. break;
  4843. case 503:
  4844. #line 2039 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4845. { (yyval.ro_sets).set_head = (yyval.ro_sets).set_tail = (yyvsp[0].ro_set); }
  4846. #line 5437 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4847. break;
  4848. case 504:
  4849. #line 2041 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4850. {
  4851. (yyval.ro_sets) = (yyvsp[-1].ro_sets);
  4852. if ((yyvsp[0].ro_set) != NULL)
  4853. {
  4854. if ((yyval.ro_sets).set_tail != NULL)
  4855. (yyval.ro_sets).set_tail = (yyval.ro_sets).set_tail->next = (yyvsp[0].ro_set);
  4856. else
  4857. (yyval.ro_sets).set_tail = (yyval.ro_sets).set_head = (yyvsp[0].ro_set);
  4858. }
  4859. }
  4860. #line 5452 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4861. break;
  4862. case 506:
  4863. #line 2055 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4864. { (yyval.ro_set) = NULL; }
  4865. #line 5458 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4866. break;
  4867. case 507:
  4868. #line 2056 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4869. { (yyval.ro_set) = NULL; }
  4870. #line 5464 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4871. break;
  4872. case 508:
  4873. #line 2060 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4874. { parse_state->count_flags = 0; }
  4875. #line 5470 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4876. break;
  4877. case 509:
  4878. #line 2062 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4879. { CHECKN((yyval.ro_set) = mdl_populate_output_set(parse_state, parse_state->header_comment, parse_state->exact_time_flag, (yyvsp[-3].ro_cols).column_head, (yyvsp[-1].tok), (yyvsp[0].str))); }
  4880. #line 5476 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4881. break;
  4882. case 510:
  4883. #line 2066 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4884. { (yyval.str) = NULL; }
  4885. #line 5482 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4886. break;
  4887. case 511:
  4888. #line 2067 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4889. { (yyval.str) = ((yyvsp[0].tok) ? "" : NULL); }
  4890. #line 5488 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4891. break;
  4892. case 512:
  4893. #line 2068 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4894. { (yyval.str) = (yyvsp[0].str); }
  4895. #line 5494 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4896. break;
  4897. case 513:
  4898. #line 2072 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4899. { parse_state->header_comment = (yyvsp[0].str); }
  4900. #line 5500 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4901. break;
  4902. case 514:
  4903. #line 2076 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4904. { parse_state->exact_time_flag = (yyvsp[0].tok); }
  4905. #line 5506 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4906. break;
  4907. case 516:
  4908. #line 2082 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4909. {
  4910. (yyval.ro_cols) = (yyvsp[-2].ro_cols);
  4911. (yyval.ro_cols).column_tail->next = (yyvsp[0].ro_cols).column_head;
  4912. (yyval.ro_cols).column_tail = (yyvsp[0].ro_cols).column_tail;
  4913. }
  4914. #line 5516 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4915. break;
  4916. case 517:
  4917. #line 2090 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4918. { CHECK(mdl_single_count_expr(parse_state, & (yyval.ro_cols), (yyvsp[-1].cnt), (yyvsp[0].str))); }
  4919. #line 5522 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4920. break;
  4921. case 518:
  4922. #line 2094 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4923. { CHECKN((yyval.cnt) = mdl_new_oexpr_constant(parse_state, (yyvsp[0].dbl))); }
  4924. #line 5528 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4925. break;
  4926. case 520:
  4927. #line 2096 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4928. { CHECKN((yyval.cnt) = mdl_join_oexpr_tree(parse_state, (yyvsp[-1].cnt), NULL, '(')); }
  4929. #line 5534 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4930. break;
  4931. case 521:
  4932. #line 2097 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4933. { CHECKN((yyval.cnt) = mdl_join_oexpr_tree(parse_state, (yyvsp[-2].cnt), (yyvsp[0].cnt), '+')); }
  4934. #line 5540 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4935. break;
  4936. case 522:
  4937. #line 2098 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4938. { CHECKN((yyval.cnt) = mdl_join_oexpr_tree(parse_state, (yyvsp[-2].cnt), (yyvsp[0].cnt), '-')); }
  4939. #line 5546 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4940. break;
  4941. case 523:
  4942. #line 2099 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4943. { CHECKN((yyval.cnt) = mdl_join_oexpr_tree(parse_state, (yyvsp[-2].cnt), (yyvsp[0].cnt), '*')); }
  4944. #line 5552 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4945. break;
  4946. case 524:
  4947. #line 2100 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4948. { CHECKN((yyval.cnt) = mdl_join_oexpr_tree(parse_state, (yyvsp[-2].cnt), (yyvsp[0].cnt), '/')); }
  4949. #line 5558 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4950. break;
  4951. case 525:
  4952. #line 2101 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4953. { CHECKN((yyval.cnt) = mdl_join_oexpr_tree(parse_state, (yyvsp[0].cnt), NULL, '_')); }
  4954. #line 5564 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4955. break;
  4956. case 526:
  4957. #line 2102 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4958. { CHECKN((yyval.cnt) = mdl_sum_oexpr((yyvsp[-1].cnt))); }
  4959. #line 5570 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4960. break;
  4961. case 527:
  4962. #line 2107 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4963. { parse_state->count_flags |= COUNT_PRESENT; }
  4964. #line 5576 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4965. break;
  4966. case 528:
  4967. #line 2108 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4968. { (yyval.cnt) = (yyvsp[-1].cnt); }
  4969. #line 5582 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4970. break;
  4971. case 529:
  4972. #line 2109 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4973. { CHECKN((yyval.cnt) = mdl_new_oexpr_constant(parse_state, (yyvsp[-1].dbl))); }
  4974. #line 5588 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4975. break;
  4976. case 530:
  4977. #line 2110 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4978. { parse_state->count_flags |= TRIGGER_PRESENT; }
  4979. #line 5594 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4980. break;
  4981. case 531:
  4982. #line 2111 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4983. { (yyval.cnt) = (yyvsp[-1].cnt); }
  4984. #line 5600 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4985. break;
  4986. case 532:
  4987. #line 2114 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4988. { (yyval.tok) = FILE_OVERWRITE; }
  4989. #line 5606 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4990. break;
  4991. case 533:
  4992. #line 2115 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4993. { (yyval.tok) = FILE_SUBSTITUTE; }
  4994. #line 5612 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  4995. break;
  4996. case 534:
  4997. #line 2116 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  4998. { (yyval.tok) = FILE_APPEND; }
  4999. #line 5618 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5000. break;
  5001. case 535:
  5002. #line 2117 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5003. { (yyval.tok) = FILE_APPEND_HEADER; }
  5004. #line 5624 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5005. break;
  5006. case 536:
  5007. #line 2118 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5008. { (yyval.tok) = FILE_CREATE; }
  5009. #line 5630 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5010. break;
  5011. case 538:
  5012. #line 2124 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5013. { CHECKN((yyval.sym) = mdl_existing_rxn_pathname_or_molecule(parse_state, (yyvsp[0].str))); }
  5014. #line 5636 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5015. break;
  5016. case 539:
  5017. #line 2128 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5018. {
  5019. (yyval.mol_type) = (yyvsp[0].mol_type);
  5020. if ((yyval.mol_type).orient > 0)
  5021. (yyval.mol_type).orient = 1;
  5022. else if ((yyval.mol_type).orient < 0)
  5023. (yyval.mol_type).orient = -1;
  5024. CHECKN((yyval.mol_type).mol_type = mdl_existing_molecule(parse_state, (yyvsp[-1].str)));
  5025. }
  5026. #line 5649 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5027. break;
  5028. case 546:
  5029. #line 2148 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5030. { CHECKN((yyval.cnt) = mdl_count_syntax_1(parse_state, (yyvsp[-3].sym), (yyvsp[-1].sym), (yyvsp[0].tok), parse_state->count_flags)); }
  5031. #line 5655 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5032. break;
  5033. case 547:
  5034. #line 2153 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5035. { CHECKN((yyval.cnt) = mdl_count_syntax_2(parse_state, (yyvsp[-3].mol_type).mol_type, (yyvsp[-3].mol_type).orient, (yyvsp[-1].sym), (yyvsp[0].tok), parse_state->count_flags)); }
  5036. #line 5661 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5037. break;
  5038. case 548:
  5039. #line 2158 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5040. { CHECKN((yyval.cnt) = mdl_count_syntax_3(parse_state, (yyvsp[-3].str), (yyvsp[-1].sym), (yyvsp[0].tok), parse_state->count_flags)); }
  5041. #line 5667 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5042. break;
  5043. case 549:
  5044. #line 2164 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5045. { CHECKN((yyval.cnt) = mdl_count_syntax_periodic_1(parse_state, (yyvsp[-5].sym), (yyvsp[-3].sym), (yyvsp[-1].vec3), (yyvsp[0].tok), parse_state->count_flags)); }
  5046. #line 5673 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5047. break;
  5048. case 550:
  5049. #line 2168 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5050. { CHECKN((yyval.cnt) = mdl_count_syntax_periodic_2(parse_state, (yyvsp[-5].mol_type).mol_type, (yyvsp[-5].mol_type).orient, (yyvsp[-3].sym), (yyvsp[-1].vec3), (yyvsp[0].tok), parse_state->count_flags)); }
  5051. #line 5679 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5052. break;
  5053. case 551:
  5054. #line 2173 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5055. { CHECKN((yyval.cnt) = mdl_count_syntax_periodic_3(parse_state, (yyvsp[-5].str), (yyvsp[-3].sym), (yyvsp[-1].vec3), (yyvsp[0].tok), parse_state->count_flags)); }
  5056. #line 5685 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5057. break;
  5058. case 552:
  5059. #line 2176 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5060. { (yyval.sym) = NULL; }
  5061. #line 5691 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5062. break;
  5063. case 553:
  5064. #line 2177 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5065. { (yyval.sym) = (yyvsp[0].sym); }
  5066. #line 5697 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5067. break;
  5068. case 554:
  5069. #line 2178 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5070. { (yyval.sym) = (yyvsp[0].sym); }
  5071. #line 5703 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5072. break;
  5073. case 555:
  5074. #line 2181 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5075. { (yyval.tok) = REPORT_NOTHING; }
  5076. #line 5709 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5077. break;
  5078. case 556:
  5079. #line 2182 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5080. { (yyval.tok) = (yyvsp[0].tok); }
  5081. #line 5715 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5082. break;
  5083. case 557:
  5084. #line 2185 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5085. { (yyval.tok) = REPORT_FRONT_HITS; }
  5086. #line 5721 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5087. break;
  5088. case 558:
  5089. #line 2186 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5090. { (yyval.tok) = REPORT_BACK_HITS; }
  5091. #line 5727 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5092. break;
  5093. case 559:
  5094. #line 2187 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5095. { (yyval.tok) = REPORT_ALL_HITS; }
  5096. #line 5733 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5097. break;
  5098. case 560:
  5099. #line 2188 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5100. { (yyval.tok) = REPORT_FRONT_CROSSINGS; }
  5101. #line 5739 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5102. break;
  5103. case 561:
  5104. #line 2189 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5105. { (yyval.tok) = REPORT_BACK_CROSSINGS; }
  5106. #line 5745 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5107. break;
  5108. case 562:
  5109. #line 2190 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5110. { (yyval.tok) = REPORT_ALL_CROSSINGS; }
  5111. #line 5751 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5112. break;
  5113. case 563:
  5114. #line 2191 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5115. { (yyval.tok) = REPORT_CONCENTRATION; }
  5116. #line 5757 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5117. break;
  5118. case 564:
  5119. #line 2192 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5120. { (yyval.tok) = REPORT_ENCLOSED; }
  5121. #line 5763 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5122. break;
  5123. case 565:
  5124. #line 2195 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5125. { (yyval.str) = NULL; }
  5126. #line 5769 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5127. break;
  5128. case 566:
  5129. #line 2196 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5130. { (yyval.str) = (yyvsp[0].str); }
  5131. #line 5775 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5132. break;
  5133. case 567:
  5134. #line 2203 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5135. { CHECK(mdl_new_viz_output_block(parse_state)); }
  5136. #line 5781 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5137. break;
  5138. case 568:
  5139. #line 2206 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5140. { }
  5141. #line 5787 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5142. break;
  5143. case 571:
  5144. #line 2215 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5145. { CHECK(mdl_set_viz_mode(parse_state->vol->viz_blocks, CELLBLENDER_MODE)); }
  5146. #line 5793 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5147. break;
  5148. case 572:
  5149. #line 2216 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5150. { CHECK(mdl_set_viz_mode(parse_state->vol->viz_blocks, (yyvsp[0].ival))); }
  5151. #line 5799 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5152. break;
  5153. case 573:
  5154. #line 2219 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5155. { (yyval.ival) = NO_VIZ_MODE; }
  5156. #line 5805 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5157. break;
  5158. case 574:
  5159. #line 2220 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5160. { (yyval.ival) = ASCII_MODE; }
  5161. #line 5811 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5162. break;
  5163. case 575:
  5164. #line 2221 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5165. { (yyval.ival) = CELLBLENDER_MODE; }
  5166. #line 5817 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5167. break;
  5168. case 577:
  5169. #line 2226 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5170. {
  5171. if ((yyvsp[0].frame_list).frame_head)
  5172. {
  5173. (yyvsp[0].frame_list).frame_tail->next = parse_state->vol->viz_blocks->frame_data_head;
  5174. parse_state->vol->viz_blocks->frame_data_head = (yyvsp[0].frame_list).frame_head;
  5175. }
  5176. }
  5177. #line 5829 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5178. break;
  5179. case 579:
  5180. #line 2239 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5181. { CHECK(mdl_set_viz_filename_prefix(parse_state, parse_state->vol->viz_blocks, (yyvsp[0].str))); }
  5182. #line 5835 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5183. break;
  5184. case 580:
  5185. #line 2245 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5186. { (yyval.frame_list) = (yyvsp[-1].frame_list); }
  5187. #line 5841 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5188. break;
  5189. case 582:
  5190. #line 2251 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5191. {
  5192. (yyval.frame_list) = (yyvsp[-1].frame_list);
  5193. if ((yyval.frame_list).frame_tail)
  5194. {
  5195. (yyval.frame_list).frame_tail->next = (yyvsp[0].frame_list).frame_head;
  5196. if ((yyvsp[0].frame_list).frame_tail)
  5197. (yyval.frame_list).frame_tail = (yyvsp[0].frame_list).frame_tail;
  5198. }
  5199. else
  5200. (yyval.frame_list) = (yyvsp[0].frame_list);
  5201. }
  5202. #line 5857 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5203. break;
  5204. case 583:
  5205. #line 2265 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5206. { (yyval.frame_list).frame_head = (yyval.frame_list).frame_tail = NULL; }
  5207. #line 5863 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5208. break;
  5209. case 587:
  5210. #line 2277 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5211. { CHECK(mdl_viz_state(parse_state, & (yyval.ival), (yyvsp[0].dbl))); }
  5212. #line 5869 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5213. break;
  5214. case 588:
  5215. #line 2278 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5216. { (yyval.ival) = INCLUDE_OBJ; }
  5217. #line 5875 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5218. break;
  5219. case 591:
  5220. #line 2288 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5221. { CHECK(mdl_set_viz_include_molecules(parse_state, parse_state->vol->viz_blocks, (yyvsp[-1].symlist), (yyvsp[0].ival))); }
  5222. #line 5881 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5223. break;
  5224. case 592:
  5225. #line 2289 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5226. { CHECK(mdl_set_viz_include_all_molecules(parse_state->vol->viz_blocks, (yyvsp[0].ival))); }
  5227. #line 5887 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5228. break;
  5229. case 593:
  5230. #line 2293 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5231. { CHECKN((yyval.symlist) = mdl_existing_molecule_list(parse_state, (yyvsp[0].str))); }
  5232. #line 5893 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5233. break;
  5234. case 594:
  5235. #line 2294 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5236. { CHECKN((yyval.symlist) = mdl_existing_molecules_wildcard(parse_state, (yyvsp[0].str))); }
  5237. #line 5899 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5238. break;
  5239. case 595:
  5240. #line 2298 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5241. { CHECK(mdl_new_viz_all_times(parse_state, & (yyval.nlist))); }
  5242. #line 5905 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5243. break;
  5244. case 597:
  5245. #line 2304 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5246. { (yyval.frame_list) = (yyvsp[-1].frame_list); }
  5247. #line 5911 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5248. break;
  5249. case 599:
  5250. #line 2310 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5251. {
  5252. if ((yyvsp[-1].frame_list).frame_head != NULL)
  5253. {
  5254. (yyval.frame_list) = (yyvsp[-1].frame_list);
  5255. if ((yyvsp[0].frame_list).frame_head != NULL)
  5256. {
  5257. (yyval.frame_list).frame_tail->next = (yyvsp[0].frame_list).frame_head;
  5258. (yyval.frame_list).frame_tail = (yyvsp[0].frame_list).frame_tail;
  5259. }
  5260. }
  5261. else if ((yyvsp[0].frame_list).frame_head != NULL)
  5262. (yyval.frame_list) = (yyvsp[0].frame_list);
  5263. }
  5264. #line 5929 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5265. break;
  5266. case 600:
  5267. #line 2327 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5268. { CHECK(mdl_new_viz_mol_frames(parse_state, parse_state->vol->viz_blocks, & (yyval.frame_list), OUTPUT_BY_TIME_LIST, (yyvsp[-2].tok), & (yyvsp[0].nlist))); }
  5269. #line 5935 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5270. break;
  5271. case 601:
  5272. #line 2331 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5273. { CHECK(mdl_new_viz_all_iterations(parse_state, & (yyval.nlist))); }
  5274. #line 5941 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5275. break;
  5276. case 603:
  5277. #line 2338 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5278. { (yyval.frame_list) = (yyvsp[-1].frame_list); }
  5279. #line 5947 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5280. break;
  5281. case 605:
  5282. #line 2344 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5283. {
  5284. if ((yyvsp[-1].frame_list).frame_head != NULL)
  5285. {
  5286. (yyval.frame_list) = (yyvsp[-1].frame_list);
  5287. if ((yyvsp[0].frame_list).frame_head != NULL)
  5288. {
  5289. (yyval.frame_list).frame_tail->next = (yyvsp[0].frame_list).frame_head;
  5290. (yyval.frame_list).frame_tail = (yyvsp[0].frame_list).frame_tail;
  5291. }
  5292. }
  5293. else if ((yyvsp[0].frame_list).frame_head != NULL)
  5294. (yyval.frame_list) = (yyvsp[0].frame_list);
  5295. }
  5296. #line 5965 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5297. break;
  5298. case 606:
  5299. #line 2361 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5300. { CHECK(mdl_new_viz_mol_frames(parse_state, parse_state->vol->viz_blocks, & (yyval.frame_list), OUTPUT_BY_ITERATION_LIST, (yyvsp[-2].tok), & (yyvsp[0].nlist))); }
  5301. #line 5971 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5302. break;
  5303. case 607:
  5304. #line 2364 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5305. { (yyval.tok) = ALL_MOL_DATA; }
  5306. #line 5977 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5307. break;
  5308. case 608:
  5309. #line 2365 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5310. { (yyval.tok) = MOL_POS; }
  5311. #line 5983 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5312. break;
  5313. case 609:
  5314. #line 2366 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5315. { (yyval.tok) = MOL_ORIENT; }
  5316. #line 5989 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5317. break;
  5318. case 610:
  5319. #line 2380 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5320. {
  5321. struct volume_output_item *vo;
  5322. CHECKN(vo = mdl_new_volume_output_item(parse_state, (yyvsp[-6].str), & (yyvsp[-5].species_lst), (yyvsp[-4].vec3), (yyvsp[-3].vec3), (yyvsp[-2].vec3), (yyvsp[-1].otimes)));
  5323. vo->next = parse_state->vol->volume_output_head;
  5324. parse_state->vol->volume_output_head = vo;
  5325. }
  5326. #line 6000 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5327. break;
  5328. case 611:
  5329. #line 2389 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5330. { (yyval.str) = (yyvsp[0].str); }
  5331. #line 6006 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5332. break;
  5333. case 613:
  5334. #line 2395 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5335. {
  5336. (yyval.species_lst) = (yyvsp[-1].species_lst);
  5337. (yyval.species_lst).species_count += (yyvsp[0].species_lst).species_count;
  5338. (yyval.species_lst).species_tail->next = (yyvsp[0].species_lst).species_head;
  5339. (yyval.species_lst).species_tail = (yyvsp[0].species_lst).species_tail;
  5340. }
  5341. #line 6017 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5342. break;
  5343. case 614:
  5344. #line 2404 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5345. { (yyval.species_lst) = (yyvsp[0].species_lst); }
  5346. #line 6023 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5347. break;
  5348. case 615:
  5349. #line 2407 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5350. {
  5351. struct sym_entry *sp;
  5352. struct species_list_item *ptrl;
  5353. CHECKN(sp = mdl_existing_molecule(parse_state, (yyvsp[0].str)));
  5354. ptrl = (struct species_list_item *) mem_get(parse_state->species_list_mem);
  5355. if (ptrl == NULL)
  5356. {
  5357. mdlerror_fmt(parse_state, "Out of memory while parsing molecule list");
  5358. return 1;
  5359. }
  5360. ptrl->spec = (struct species *) sp->value;
  5361. ptrl->next = NULL;
  5362. (yyval.species_lst_item) = ptrl;
  5363. }
  5364. #line 6043 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5365. break;
  5366. case 616:
  5367. #line 2425 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5368. { (yyval.species_lst).species_tail = (yyval.species_lst).species_head = (yyvsp[0].species_lst_item); (yyval.species_lst).species_count = 1; }
  5369. #line 6049 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5370. break;
  5371. case 617:
  5372. #line 2427 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5373. {
  5374. (yyval.species_lst) = (yyvsp[-2].species_lst);
  5375. (yyval.species_lst).species_tail = (yyval.species_lst).species_tail->next = (yyvsp[0].species_lst_item);
  5376. ++ (yyval.species_lst).species_count;
  5377. }
  5378. #line 6059 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5379. break;
  5380. case 618:
  5381. #line 2435 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5382. { (yyval.vec3) = (yyvsp[0].vec3); }
  5383. #line 6065 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5384. break;
  5385. case 619:
  5386. #line 2439 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5387. { (yyval.vec3) = (yyvsp[0].vec3); }
  5388. #line 6071 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5389. break;
  5390. case 620:
  5391. #line 2443 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5392. {
  5393. if ((yyvsp[0].vec3)->x < 1.0)
  5394. {
  5395. mdl_warning(parse_state, "Voxel count (x dimension) too small. Setting x count to 1.");
  5396. (yyvsp[0].vec3)->x = 1.0;
  5397. }
  5398. if ((yyvsp[0].vec3)->y < 1.0)
  5399. {
  5400. mdl_warning(parse_state, "Voxel count (y dimension) too small. Setting y count to 1.");
  5401. (yyvsp[0].vec3)->y = 1.0;
  5402. }
  5403. if ((yyvsp[0].vec3)->z < 1.0)
  5404. {
  5405. mdl_warning(parse_state, "Voxel count (z dimension) too small. Setting z count to 1.");
  5406. (yyvsp[0].vec3)->z = 1.0;
  5407. }
  5408. (yyval.vec3) = (yyvsp[0].vec3);
  5409. }
  5410. #line 6094 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5411. break;
  5412. case 621:
  5413. #line 2464 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5414. { CHECKN((yyval.otimes) = mdl_new_output_times_default(parse_state)); }
  5415. #line 6100 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5416. break;
  5417. case 622:
  5418. #line 2465 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5419. { CHECKN((yyval.otimes) = mdl_new_output_times_step(parse_state, (yyvsp[0].dbl))); }
  5420. #line 6106 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5421. break;
  5422. case 623:
  5423. #line 2466 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5424. { CHECKN((yyval.otimes) = mdl_new_output_times_iterations(parse_state, & (yyvsp[0].nlist))); }
  5425. #line 6112 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5426. break;
  5427. case 624:
  5428. #line 2467 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1646 */
  5429. { CHECKN((yyval.otimes) = mdl_new_output_times_time(parse_state, & (yyvsp[0].nlist))); }
  5430. #line 6118 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5431. break;
  5432. #line 6122 "/home/jczech/mcell/build/deps/mdlparse.c" /* yacc.c:1646 */
  5433. default: break;
  5434. }
  5435. /* User semantic actions sometimes alter yychar, and that requires
  5436. that yytoken be updated with the new translation. We take the
  5437. approach of translating immediately before every use of yytoken.
  5438. One alternative is translating here after every semantic action,
  5439. but that translation would be missed if the semantic action invokes
  5440. YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
  5441. if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
  5442. incorrect destructor might then be invoked immediately. In the
  5443. case of YYERROR or YYBACKUP, subsequent parser actions might lead
  5444. to an incorrect destructor call or verbose syntax error message
  5445. before the lookahead is translated. */
  5446. YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
  5447. YYPOPSTACK (yylen);
  5448. yylen = 0;
  5449. YY_STACK_PRINT (yyss, yyssp);
  5450. *++yyvsp = yyval;
  5451. /* Now 'shift' the result of the reduction. Determine what state
  5452. that goes to, based on the state we popped back to and the rule
  5453. number reduced by. */
  5454. yyn = yyr1[yyn];
  5455. yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
  5456. if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
  5457. yystate = yytable[yystate];
  5458. else
  5459. yystate = yydefgoto[yyn - YYNTOKENS];
  5460. goto yynewstate;
  5461. /*--------------------------------------.
  5462. | yyerrlab -- here on detecting error. |
  5463. `--------------------------------------*/
  5464. yyerrlab:
  5465. /* Make sure we have latest lookahead translation. See comments at
  5466. user semantic actions for why this is necessary. */
  5467. yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
  5468. /* If not already recovering from an error, report this error. */
  5469. if (!yyerrstatus)
  5470. {
  5471. ++yynerrs;
  5472. #if ! YYERROR_VERBOSE
  5473. yyerror (parse_state, scanner, YY_("syntax error"));
  5474. #else
  5475. # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
  5476. yyssp, yytoken)
  5477. {
  5478. char const *yymsgp = YY_("syntax error");
  5479. int yysyntax_error_status;
  5480. yysyntax_error_status = YYSYNTAX_ERROR;
  5481. if (yysyntax_error_status == 0)
  5482. yymsgp = yymsg;
  5483. else if (yysyntax_error_status == 1)
  5484. {
  5485. if (yymsg != yymsgbuf)
  5486. YYSTACK_FREE (yymsg);
  5487. yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
  5488. if (!yymsg)
  5489. {
  5490. yymsg = yymsgbuf;
  5491. yymsg_alloc = sizeof yymsgbuf;
  5492. yysyntax_error_status = 2;
  5493. }
  5494. else
  5495. {
  5496. yysyntax_error_status = YYSYNTAX_ERROR;
  5497. yymsgp = yymsg;
  5498. }
  5499. }
  5500. yyerror (parse_state, scanner, yymsgp);
  5501. if (yysyntax_error_status == 2)
  5502. goto yyexhaustedlab;
  5503. }
  5504. # undef YYSYNTAX_ERROR
  5505. #endif
  5506. }
  5507. if (yyerrstatus == 3)
  5508. {
  5509. /* If just tried and failed to reuse lookahead token after an
  5510. error, discard it. */
  5511. if (yychar <= YYEOF)
  5512. {
  5513. /* Return failure if at end of input. */
  5514. if (yychar == YYEOF)
  5515. YYABORT;
  5516. }
  5517. else
  5518. {
  5519. yydestruct ("Error: discarding",
  5520. yytoken, &yylval, parse_state, scanner);
  5521. yychar = YYEMPTY;
  5522. }
  5523. }
  5524. /* Else will try to reuse lookahead token after shifting the error
  5525. token. */
  5526. goto yyerrlab1;
  5527. /*---------------------------------------------------.
  5528. | yyerrorlab -- error raised explicitly by YYERROR. |
  5529. `---------------------------------------------------*/
  5530. yyerrorlab:
  5531. /* Pacify compilers like GCC when the user code never invokes
  5532. YYERROR and the label yyerrorlab therefore never appears in user
  5533. code. */
  5534. if (/*CONSTCOND*/ 0)
  5535. goto yyerrorlab;
  5536. /* Do not reclaim the symbols of the rule whose action triggered
  5537. this YYERROR. */
  5538. YYPOPSTACK (yylen);
  5539. yylen = 0;
  5540. YY_STACK_PRINT (yyss, yyssp);
  5541. yystate = *yyssp;
  5542. goto yyerrlab1;
  5543. /*-------------------------------------------------------------.
  5544. | yyerrlab1 -- common code for both syntax error and YYERROR. |
  5545. `-------------------------------------------------------------*/
  5546. yyerrlab1:
  5547. yyerrstatus = 3; /* Each real token shifted decrements this. */
  5548. for (;;)
  5549. {
  5550. yyn = yypact[yystate];
  5551. if (!yypact_value_is_default (yyn))
  5552. {
  5553. yyn += YYTERROR;
  5554. if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
  5555. {
  5556. yyn = yytable[yyn];
  5557. if (0 < yyn)
  5558. break;
  5559. }
  5560. }
  5561. /* Pop the current state because it cannot handle the error token. */
  5562. if (yyssp == yyss)
  5563. YYABORT;
  5564. yydestruct ("Error: popping",
  5565. yystos[yystate], yyvsp, parse_state, scanner);
  5566. YYPOPSTACK (1);
  5567. yystate = *yyssp;
  5568. YY_STACK_PRINT (yyss, yyssp);
  5569. }
  5570. YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
  5571. *++yyvsp = yylval;
  5572. YY_IGNORE_MAYBE_UNINITIALIZED_END
  5573. /* Shift the error token. */
  5574. YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
  5575. yystate = yyn;
  5576. goto yynewstate;
  5577. /*-------------------------------------.
  5578. | yyacceptlab -- YYACCEPT comes here. |
  5579. `-------------------------------------*/
  5580. yyacceptlab:
  5581. yyresult = 0;
  5582. goto yyreturn;
  5583. /*-----------------------------------.
  5584. | yyabortlab -- YYABORT comes here. |
  5585. `-----------------------------------*/
  5586. yyabortlab:
  5587. yyresult = 1;
  5588. goto yyreturn;
  5589. #if !defined yyoverflow || YYERROR_VERBOSE
  5590. /*-------------------------------------------------.
  5591. | yyexhaustedlab -- memory exhaustion comes here. |
  5592. `-------------------------------------------------*/
  5593. yyexhaustedlab:
  5594. yyerror (parse_state, scanner, YY_("memory exhausted"));
  5595. yyresult = 2;
  5596. /* Fall through. */
  5597. #endif
  5598. yyreturn:
  5599. if (yychar != YYEMPTY)
  5600. {
  5601. /* Make sure we have latest lookahead translation. See comments at
  5602. user semantic actions for why this is necessary. */
  5603. yytoken = YYTRANSLATE (yychar);
  5604. yydestruct ("Cleanup: discarding lookahead",
  5605. yytoken, &yylval, parse_state, scanner);
  5606. }
  5607. /* Do not reclaim the symbols of the rule whose action triggered
  5608. this YYABORT or YYACCEPT. */
  5609. YYPOPSTACK (yylen);
  5610. YY_STACK_PRINT (yyss, yyssp);
  5611. while (yyssp != yyss)
  5612. {
  5613. yydestruct ("Cleanup: popping",
  5614. yystos[*yyssp], yyvsp, parse_state, scanner);
  5615. YYPOPSTACK (1);
  5616. }
  5617. #ifndef yyoverflow
  5618. if (yyss != yyssa)
  5619. YYSTACK_FREE (yyss);
  5620. #endif
  5621. #if YYERROR_VERBOSE
  5622. if (yymsg != yymsgbuf)
  5623. YYSTACK_FREE (yymsg);
  5624. #endif
  5625. return yyresult;
  5626. }
  5627. #line 2470 "/home/jczech/mcell/src/mdlparse.y" /* yacc.c:1906 */
  5628. /* Begin Bison Epilogue: */
  5629. /* mdlerror: Standard error callback from parser.
  5630. *
  5631. * parse_state: the parser state variables
  5632. * str: the error message to display
  5633. */
  5634. void mdlerror(struct mdlparse_vars *parse_state, char const *str)
  5635. {
  5636. mdlerror_fmt(parse_state, "%s", str);
  5637. }
  5638. /* mdlerror_fmt: Print a formatted error message regarding an error in the MDL
  5639. * file.
  5640. *
  5641. * parse_state: the parser state variables
  5642. * fmt: the printf-style format string
  5643. */
  5644. void mdlerror_fmt(struct mdlparse_vars *parse_state, char const *fmt, ...)
  5645. {
  5646. va_list arglist;
  5647. if (parse_state->vol->procnum != 0)
  5648. return;
  5649. /* print error location */
  5650. if (parse_state->include_stack_ptr == 0)
  5651. mcell_error_raw("Fatal error: After parsing file %s\n",
  5652. parse_state->vol->curr_file);
  5653. else
  5654. mcell_error_raw("Fatal error: On line: %d of file %s\n",
  5655. parse_state->line_num[parse_state->include_stack_ptr - 1],
  5656. parse_state->vol->curr_file);
  5657. /* format error message */
  5658. va_start(arglist, fmt);
  5659. mcell_errorv_nodie(fmt, arglist);
  5660. va_end(arglist);
  5661. /* terminate error message and flush */
  5662. mcell_error_raw("\n");
  5663. mcell_die();
  5664. }
  5665. /* mdlerror_file: Open and parse an MDL file.
  5666. *
  5667. * parse_state: the parser state variables
  5668. * name: the path to the MDL file
  5669. */
  5670. int mdlparse_file(struct mdlparse_vars *parse_state, char const *name)
  5671. {
  5672. int failure;
  5673. int cur_stack = parse_state->include_stack_ptr ++;
  5674. FILE *infile;
  5675. yyscan_t scanner;
  5676. char const *prev_file;
  5677. /* Put filename and line number on stack */
  5678. if (cur_stack >= MAX_INCLUDE_DEPTH)
  5679. {
  5680. -- parse_state->include_stack_ptr;
  5681. mdlerror_fmt(parse_state, "Includes nested too deeply at file %s\n included from %s:%d",
  5682. name,
  5683. parse_state->include_filename[cur_stack-1],
  5684. parse_state->line_num[cur_stack-1]);
  5685. return 1;
  5686. }
  5687. parse_state->line_num[cur_stack] = 1;
  5688. parse_state->include_filename[cur_stack] = name;
  5689. /* Open file, or know the reason why */
  5690. no_printf("Opening file %s\n", name);
  5691. if ((infile = fopen(name,"r")) == NULL)
  5692. {
  5693. char *err = mcell_strerror(errno);
  5694. -- parse_state->include_stack_ptr;
  5695. if (cur_stack > 0)
  5696. mdlerror_fmt(parse_state, "Couldn't open file %s\n included from %s:%d: %s",
  5697. name,
  5698. parse_state->include_filename[cur_stack-1],
  5699. parse_state->line_num[cur_stack-1],
  5700. err);
  5701. else
  5702. mdlerror_fmt(parse_state, "Couldn't open file %s: %s", name, err);
  5703. free(err);
  5704. return 1;
  5705. }
  5706. /* Create and initialize a lexer */
  5707. if (mdllex_init(&scanner))
  5708. {
  5709. int err = errno;
  5710. if (err == ENOMEM)
  5711. mdlerror_fmt(parse_state, "Couldn't initialize lexer for file %s\n included from %s:%d: out of memory",
  5712. name, parse_state->include_filename[cur_stack-1], parse_state->line_num[cur_stack-1]);
  5713. else if (err == EINVAL)
  5714. mdlerror_fmt(parse_state, "Couldn't initialize lexer for file %s\n included from %s:%d: internal error (invalid argument)",
  5715. name,
  5716. parse_state->include_filename[cur_stack-1],
  5717. parse_state->line_num[cur_stack-1]);
  5718. else
  5719. mdlerror_fmt(parse_state, "Couldn't initialize lexer for file %s\n included from %s:%d: internal error",
  5720. name,
  5721. parse_state->include_filename[cur_stack-1],
  5722. parse_state->line_num[cur_stack-1]);
  5723. fclose(infile);
  5724. -- parse_state->include_stack_ptr;
  5725. return 1;
  5726. }
  5727. mdlrestart(infile, scanner);
  5728. /* Parse this file */
  5729. prev_file = parse_state->vol->curr_file;
  5730. parse_state->vol->curr_file = name;
  5731. failure = mdlparse(parse_state, scanner);
  5732. parse_state->vol->curr_file = prev_file;
  5733. -- parse_state->include_stack_ptr;
  5734. /* Clean up! */
  5735. fclose(infile);
  5736. mdllex_destroy(scanner);
  5737. return failure;
  5738. }
  5739. /* mdlerror_init: Set up and parse the top-level MDL file.
  5740. *
  5741. * vol: the world to populate
  5742. */
  5743. int mdlparse_init(struct volume *vol)
  5744. {
  5745. int failure;
  5746. struct mdlparse_vars mpv;
  5747. vol->initialization_state = "parsing";
  5748. memset(&mpv, 0, sizeof(struct mdlparse_vars));
  5749. mpv.vol=vol;
  5750. mpv.include_stack_ptr=0;
  5751. mpv.current_object = vol->root_object;
  5752. /* Create memory pools for parsing */
  5753. if ((mpv.path_mem = create_mem(sizeof(struct pathway), 4096)) == NULL)
  5754. mcell_allocfailed("Failed to allocate temporary memory pool for reaction pathways.");
  5755. if ((mpv.prod_mem = create_mem(sizeof(struct product), 4096)) == NULL)
  5756. mcell_allocfailed("Failed to allocate temporary memory pool for reaction products.");
  5757. if ((mpv.sym_list_mem = create_mem(sizeof(struct sym_table_list),4096)) == NULL)
  5758. mcell_allocfailed("Failed to allocate temporary memory pool for symbol lists.");
  5759. if ((mpv.species_list_mem = create_mem(sizeof(struct species_list_item), 1024)) == NULL)
  5760. mcell_allocfailed("Failed to allocate temporary memory pool for species lists.");
  5761. if ((mpv.mol_data_list_mem = create_mem(sizeof(struct mcell_species), 1024)) == NULL)
  5762. mcell_allocfailed("Failed to allocate temporary memory pool for oriented species lists.");
  5763. if ((mpv.output_times_mem = create_mem(sizeof(struct output_times), 1024)) == NULL)
  5764. mcell_allocfailed("Failed to allocate temporary memory pool for output times.");
  5765. /* Start parsing at the top-level file */
  5766. vol->curr_file = vol->mdl_infile_name;
  5767. failure = mdlparse_file(&mpv, vol->mdl_infile_name);
  5768. /* Close any open file streams */
  5769. for (int i=0; i<vol->fstream_sym_table->n_bins; ++ i)
  5770. {
  5771. if (vol->fstream_sym_table->entries[i] != NULL)
  5772. {
  5773. for (struct sym_entry *symp = vol->fstream_sym_table->entries[i];
  5774. symp != NULL;
  5775. symp = symp->next)
  5776. {
  5777. if (((struct file_stream *) symp->value)->stream == NULL)
  5778. continue;
  5779. mdl_fclose(&mpv, symp);
  5780. }
  5781. }
  5782. }
  5783. /* Check for required settings */
  5784. if (! failure)
  5785. {
  5786. if (vol->time_unit == 0.0)
  5787. {
  5788. mdlerror(&mpv, "A valid model requires a time step to be specified using the TIME_STEP declaration");
  5789. failure = 1;
  5790. }
  5791. }
  5792. /* If we succeeded, prepare the reactions */
  5793. if (failure)
  5794. {
  5795. mdlerror(&mpv, "Failed to parse input file");
  5796. failure = 1;
  5797. }
  5798. /* Free leftover object names */
  5799. while (mpv.object_name_list)
  5800. {
  5801. struct name_list *l = mpv.object_name_list->next;
  5802. free(mpv.object_name_list);
  5803. mpv.object_name_list = l;
  5804. }
  5805. if (mpv.header_comment != 0) {
  5806. free(mpv.header_comment);
  5807. }
  5808. /* Destroy memory pools */
  5809. delete_mem(mpv.species_list_mem);
  5810. delete_mem(mpv.mol_data_list_mem);
  5811. delete_mem(mpv.output_times_mem);
  5812. delete_mem(mpv.sym_list_mem);
  5813. delete_mem(mpv.prod_mem);
  5814. delete_mem(mpv.path_mem);
  5815. vol->initialization_state = "initializing";
  5816. return failure;
  5817. }