/************************************************************************ ***** Ċ Ġ* ĠCopyright Ġ( C ) Ġj parse c . org ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* Ġ------------------------------------------------------------------------- Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); ĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware ĠĠĠĠĠĠ Ġ* Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ġ Ġ* Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand ĠĠĠĠĠĠ Ġ* Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ*/ Ċ package Ġorg . j parse c Ċ Ċ import Ġorg . j parse c . List Factory . Companion . array List Factory Ċ Ċ internal Ġclass ĠRepeat Times Parser < T > Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġparser : ĠParser < out ĠT >, ĊĠĠĠ Ġprivate Ġval Ġmin : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġmax : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġlist Factory : ĠList Factory < T > Ġ= Ġarray List Factory () Ċ ): ĠParser < List < T >>() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( ctxt : ĠParse Context ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠMutable List < T > Ġ= Ġlist Factory . new List () ĊĠĠĠĠĠĠĠ Ġif Ġ(! ctxt . repeat ( parser , Ġmin , Ġresult )) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( repeat At Most ( max Ġ- Ġmin , Ġresult , Ġctxt )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctxt . result Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" times " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrepeat At Most ( times : ĠInt , Ġcollection : ĠMutable Collection < T >, Ġctxt : ĠParse Context ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtimes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphysical Ġ= Ġctxt . at ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogical Ġ= Ġctxt . step ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! parser . apply ( ctxt )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctxt . set At ( logical , Ġphysical ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . add ( parser . get Return ( ctxt )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ Ċ }