package Ġg uru . z oro ark . li xy Ċ Ċ import Ġg uru . z oro ark . li xy . matchers .* Ċ Ċ /** Ċ Ġ* ĠThis Ġcl assed Ġis Ġused Ġto Ġbuild Ġa Ġlexer Ġstate Ġ([ L ix y State ]) Ġusing Ġa ĠDSL , Ġand Ġis Ċ Ġ* Ġused Ġinside Ġa Ġlambda - with Ġreceiver . ĠIt Ġalso Ġdefines Ġhigh Ġlevel Ġfunctions Ġfor Ċ Ġ* Ġconstructing Ġmatch ers , Ġsuch Ġas Ġ[ any Of ] Ġor Ġ[ matches ], Ġand Ġusing Ġcustom Ċ Ġ* Ġmatch ers Ġwith Ġthe Ġ[ + Ġoperator ][ unary Plus ]. Ċ Ġ* Ċ Ġ* ĠStates Ġthemselves Ġare Ġonly Ġconstructed Ġwhen Ġcalling Ġ[ build ], Ġsince Ċ Ġ* Ġ[ L ix y State ] Ġobjects Ġare Ġimmutable Ġand Ġthe Ġgoal Ġof Ġthe ĠDSL Ġis Ġto Ġprovide Ġa Ġway Ċ Ġ* Ġto Ġconfigure Ġthem . Ċ Ġ*/ Ċ class ĠL ix y Dsl State Environment Ġ: ĠBuild able < L ix y State > Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtoken Matchers Ġ= Ġmutable ListOf < Build able < L ix y Token Matcher >>() ĊĊĠĠĠ Ġoverride Ġfun Ġbuild (): ĠL ix y State Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠL ix y State ( mutable ListOf < L ix y Token Matcher >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd All ( token Matchers . map Ġ{ Ġit . build () Ġ}) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġmatcher Ġto Ġthis Ġstate Ġthat Ġmatches Ġthe Ġre cognizer Ġ( or ĊĠĠĠĠ Ġ* Ġpseudo - re cognizer ) Ġon Ġthe Ġleft Ġto Ġthe Ġtoken Ġtype Ġon Ġthe Ġright . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġre cognizer Ġ( the Ġobject Ġon Ġthe Ġleft Ġon Ġwhich Ġyou Ġare Ġcalling ĊĠĠĠĠ Ġ* Ġ` is Token `) Ġmay Ġbe Ġany Ġof Ġthe Ġtypes Ġsupported Ġby Ġ[ to Recognizer ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtoken ĠThe Ġtoken Ġto Ġassociate Ġ` this ` Ġto ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġ[ matcher Ġenvironment ][ L ix y Dsl Matched Matcher Environment ] ĊĠĠĠĠ Ġ* Ġthat Ġuses Ġthe Ġgiven Ġ( pseudo -) re cogn izers Ġas Ġits Ġrecognition Ġtechnique . ĊĠĠĠĠ Ġ* Ġ@ see Ġto Recognizer ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġin fix Ġfun ĠAny . is Token ( token : ĠL ix y TokenType ): ĠL ix y Dsl Matched Matcher Environment Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġre cognizer Ġ= Ġto Recognizer ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġenv Ġ= ĠL ix y Dsl Matched Matcher Environment ( re cognizer , Ġtoken ) ĊĠĠĠĠĠĠĠ Ġtoken Matchers Ġ+= Ġenv ĊĠĠĠĠĠĠĠ Ġreturn Ġenv ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġan Ġalready Ġdefined Ġmatcher Ġto Ġthis Ġstate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun ĠL ix y Token Matcher . unary Plus () Ġ{ ĊĠĠĠĠĠĠĠ Ġtoken Matchers Ġ+= Ġthis . self Build able () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAny thing Ġthat Ġmatches Ġthe Ġgiven Ġre cognizer Ġ( or Ġpseudo - re cognizer ) Ġexactly ĊĠĠĠĠ Ġ* Ġwill Ġbe Ġignored Ġwhen Ġencountered . ĠThis Ġwould Ġbe Ġequivalent Ġto Ġa Ġ` is Token ` ĊĠĠĠĠ Ġ* Ġthat Ġdoes Ġnot Ġactually Ġcreate Ġany Ġtoken . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġmatched Ġsequence Ġis Ġskipped Ġentirely Ġby Ġthe Ġlexer . ĠNo Ġoutput Ġis ĊĠĠĠĠ Ġ* Ġemitted Ġwhat so ever . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġgiven Ġre cognizer Ġor Ġpseudo - re cognizer Ġcan Ġbe Ġanything Ġthat ĊĠĠĠĠ Ġ* Ġ[ to Recognizer ] Ġsupports . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġmatcher Ġenvironment Ġthat Ġwill Ġproduce Ġa Ġmatcher Ġthat Ġwill Ġmake ĊĠĠĠĠ Ġ* Ġthe Ġlexer Ġignore Ġanything Ġthat Ġit Ġmatches . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠAny . ignore : ĠL ix y Dsl Ign oring Matcher Environment ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenv Ġ= ĠL ix y Dsl Ign oring Matcher Environment ( to Recognizer ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Matchers Ġ+= Ġenv ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġenv ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ