package Ġcom . k ul ics . fe el . visitor Ċ Ċ import Ġcom . k ul ics . fe el . antlr . generate . Feel Parser .* Ċ import Ġcom . k ul ics . fe el .* Ċ Ċ open Ġclass ĠLogic Visitor () Ġ: ĠFunction Visitor () Ġ{ ĊĠĠĠ Ġ// Ġlogic Ġ---------------- ------------- ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Iterator Statement ( context : ĠIterator Statement Context ) Ġ= ĠIterator (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context . Dot _ Dot _ Dot () Ġ!= Ġnull Ġ|| Ġcontext . Dot _ Dot _ Greater () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= ĠF ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( context . Dot _ Dot _ Less () Ġ!= Ġnull Ġ|| Ġcontext . Dot _ Dot _ Greater () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclose Ġ= ĠF ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( context . expression (). size Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Ġ= Ġvisit ( context . expression ( 0 )) Ġas ĠResult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġvisit ( context . expression ( 1 )) Ġas ĠResult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep Ġ= ĠResult (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠI 3 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Ġ= Ġvisit ( context . expression ( 0 )) Ġas ĠResult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend Ġ= Ġvisit ( context . expression ( 1 )) Ġas ĠResult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstep Ġ= Ġvisit ( context . expression ( 2 )) Ġas ĠResult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Loop Statement ( context : ĠLoop Statement Context ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġvisit ( context . id ()). to < Result >(). text ĊĊĠĠĠĠĠĠĠ Ġval Ġit Ġ= Ġvisit ( context . iterator Statement ()) Ġas ĠIterator ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġif Ġ( it . order Ġ== Ġ" true ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . close Ġ== Ġ" true " Ġ-> Ġ"${ it . begin . text } .. ${ it . end . text } Ġstep Ġ${ it . step . text }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"${ it . begin . text } Ġuntil Ġ${ it . end . text } Ġstep Ġ${ it . step . text }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . close Ġ== Ġ" true " Ġ-> Ġ"${ it . begin . text } Ġdown To Ġ${ it . end . text } Ġstep Ġ${ it . step . text }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"${ it . begin . text } Ġdown To Ġ${ it . end . text } Ġstep Ġ${ it . step . text }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġobj Ġ+= Ġ" for Ġ($ id Ġin Ġ$ target )" ĊĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠBlock Left Ġ+ ĠWrap ĊĠĠĠĠĠĠĠ Ġadd _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠProcess Function Support ( context . function Support Statement ()) ĊĠĠĠĠĠĠĠ Ġdelete _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠBlock Right Ġ+ ĠWrap ĊĠĠĠĠĠĠĠ Ġif Ġ( context . loop Else Statement () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelse Content Ġ= Ġvisit ( context . loop Else Statement ()) Ġas Ġstr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj Ġ= Ġ" if Ġ(! can _ range ( Ġ$ target Ġ)) Ġ Ġ$ else Content Ġelse " Ġ+ ĠBlock Left Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWrap Ġ+ Ġobj Ġ+ ĠBlock Right Ġ+ ĠWrap ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Loop Each Statement ( context : ĠLoop Each Statement Context ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġarr Ġ= Ġvisit ( context . expression ()) Ġas ĠResult ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġarr . text ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġwhen Ġ( context . id (). size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ" (${ visit ( context . id ( 0 )). to < Result >(). text }, Ġ${ visit ( context . id ( 1 )). to < Result >(). text })" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġvisit ( context . id ( 0 )). to < Result >(). text ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġobj Ġ+= Ġ" for Ġ($ id Ġin Ġ$ target )" ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠBlock Left Ġ+ ĠWrap ĊĠĠĠĠĠĠĠ Ġadd _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠProcess Function Support ( context . function Support Statement ()) ĊĠĠĠĠĠĠĠ Ġdelete _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠBlock Right Ġ+ ĠWrap ĊĠĠĠĠĠĠĠ Ġif Ġ( context . loop Else Statement () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelse Content Ġ= Ġvisit ( context . loop Else Statement ()) Ġas Ġstr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj Ġ= Ġ" if Ġ(! can _ range ( Ġ$ target Ġ)) Ġ Ġ$ else Content Ġelse " Ġ+ ĠBlock Left Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWrap Ġ+ Ġobj Ġ+ ĠBlock Right Ġ+ ĠWrap ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Loop Case Statement ( context : ĠLoop Case Statement Context ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġexpr Ġ= Ġvisit ( context . expression ()) Ġas ĠResult ĊĠĠĠĠĠĠĠ Ġobj Ġ+= Ġ" while Ġ(${ expr . text })" ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠBlock Left Ġ+ ĠWrap ĊĠĠĠĠĠĠĠ Ġadd _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠProcess Function Support ( context . function Support Statement ()) ĊĠĠĠĠĠĠĠ Ġdelete _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠBlock Right Ġ+ ĠWrap ĊĠĠĠĠĠĠĠ Ġif Ġ( context . loop Else Statement () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelse Content Ġ= Ġvisit ( context . loop Else Statement ()) Ġas Ġstr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj Ġ= Ġ" if Ġ(! Ġ${ expr . text } Ġ) Ġ Ġ$ else Content Ġelse " Ġ+ ĠBlock Left Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWrap Ġ+ Ġobj Ġ+ ĠBlock Right Ġ+ ĠWrap ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Loop Else Statement ( context : ĠLoop Else Statement Context ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= ĠBlock Left Ġ+ ĠWrap ĊĠĠĠĠĠĠĠ Ġadd _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠProcess Function Support ( context . function Support Statement ()) ĊĠĠĠĠĠĠĠ Ġdelete _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠBlock Right Ġ+ ĠWrap ĊĠĠĠĠĠĠĠ Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Loop Jump Statement ( context : ĠLoop Jump Statement Context ) Ġ= Ġ" break $ Wrap " ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Loop Continue Statement ( context : ĠLoop Continue Statement Context ) Ġ= Ġ" continue $ Wrap " ĊĊĠĠĠ Ġoverride Ġfun Ġvisit J udge Case Statement ( context : ĠJ udge Case Statement Context ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġexpr Ġ= Ġvisit ( context . expression ()) Ġas ĠResult ĊĠĠĠĠĠĠĠ Ġobj Ġ+= Ġ" when Ġ(${ expr . text }) Ġ$ Block Left $ Wrap " ĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġcontext . case Statement ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġvisit ( item ) Ġas Ġstr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj Ġ+= Ġr Ġ+ ĠWrap ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠBlock Right Ġ+ ĠWrap ĊĠĠĠĠĠĠĠ Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Case Expr Statement ( context : ĠCase Expr Statement Context ) Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . expression () Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpr Ġ= Ġvisit ( context . expression ()) Ġas ĠResult ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ expr . text } Ġ-> Ġ$ Wrap " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . type Type () Ġ!= Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġid Ġ= Ġ" it " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context . id () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġvisit ( context . id ()). to < Result >(). text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd _ id ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġvisit ( context . type Type ()) Ġas Ġstr ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" is Ġ$ type Ġ-> $ Wrap " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" else Ġ-> $ Wrap " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġvisit Case Statement ( context : ĠCase Statement Context ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġcontext . case Expr Statement ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġvisit ( item ) Ġas Ġstr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd _ current _ set () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocess Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ Block Left ${ Process Function Support ( context . function Support Statement ()) }$ Block Right " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete _ current _ set () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj Ġ+= Ġr Ġ+ Ġprocess ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit J udge Statement ( context : ĠJ udge Statement Context ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġobj Ġ+= Ġvisit ( context . judge If Statement ()) ĊĠĠĠĠĠĠĠ Ġfor Ġ( it Ġin Ġcontext . judge Else If Statement ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj Ġ+= Ġvisit ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( context . judge Else Statement () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj Ġ+= Ġvisit ( context . judge Else Statement ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit J udge If Statement ( context : ĠJ udge If Statement Context ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġvisit ( context . expression ()) Ġas ĠResult ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ" if Ġ(${ b . text }) Ġ$ Block Left $ Wrap " ĊĠĠĠĠĠĠĠ Ġadd _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠProcess Function Support ( context . function Support Statement ()) ĊĠĠĠĠĠĠĠ Ġdelete _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= Ġ"$ Block Right $ Wrap " ĊĠĠĠĠĠĠĠ Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit J udge Else If Statement ( context : ĠJ udge Else If Statement Context ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġvisit ( context . expression ()) Ġas ĠResult ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ" else Ġif Ġ(${ b . text }) Ġ$ Block Left $ Wrap " ĊĠĠĠĠĠĠĠ Ġadd _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠProcess Function Support ( context . function Support Statement ()) ĊĠĠĠĠĠĠĠ Ġdelete _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= Ġ"$ Block Right $ Wrap " ĊĠĠĠĠĠĠĠ Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit J udge Else Statement ( context : ĠJ udge Else Statement Context ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ" else Ġ$ Block Left $ Wrap " ĊĠĠĠĠĠĠĠ Ġadd _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠProcess Function Support ( context . function Support Statement ()) ĊĠĠĠĠĠĠĠ Ġdelete _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= Ġ"$ Block Right $ Wrap " ĊĠĠĠĠĠĠĠ Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Check Statement ( context : ĠCheck Statement Context ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ" try Ġ$ Block Left $ Wrap " ĊĠĠĠĠĠĠĠ Ġadd _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠProcess Function Support ( context . function Support Statement ()) ĊĠĠĠĠĠĠĠ Ġdelete _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= Ġ"$ Block Right $ Wrap " ĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġcontext . check Error Statement ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj Ġ+= Ġ"${ visit ( item )} $ Wrap " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( context . check Finally Stat ment () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj Ġ+= Ġvisit ( context . check Finally Stat ment ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Check Error Statement ( context : ĠCheck Error Statement Context ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġadd _ current _ set () ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġvisit ( context . id ()). to < Result >(). text ĊĠĠĠĠĠĠĠ Ġadd _ id ( id ) ĊĠĠĠĠĠĠĠ Ġval ĠType Ġ= Ġif Ġ( context . type Type () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisit ( context . type Type ()) Ġas Ġstr ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Exception " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġobj Ġ+= Ġ" catch ($ id :$ Type )$ Block Left $ Wrap " ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠProcess Function Support ( context . function Support Statement ()) ĊĠĠĠĠĠĠĠ Ġdelete _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠBlock Right ĊĠĠĠĠĠĠĠ Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Check Finally Stat ment ( context : ĠCheck Finally Stat ment Context ) Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ" finally Ġ$ Block Left $ Wrap " ĊĠĠĠĠĠĠĠ Ġadd _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠProcess Function Support ( context . function Support Statement ()) ĊĠĠĠĠĠĠĠ Ġdelete _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= Ġ"$ Block Right $ Wrap " ĊĠĠĠĠĠĠĠ Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Using Statement ( context : ĠUsing Statement Context ) Ġ: any Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġr 1 Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġcontext . const Id ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr 1 Ġ= Ġvisit ( v ) Ġas Ġstr ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġr 2 Ġ= Ġvisit ( context . tuple Expression ()) Ġas ĠResult ĊĠĠĠĠĠĠĠ Ġobj Ġ= Ġ"${ r 2 . text }. use $ Block Left Ġ${ r 1 } Ġ-> Ġ" ĊĠĠĠĠĠĠĠ Ġadd _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠProcess Function Support ( context . function Support Statement ()) ĊĠĠĠĠĠĠĠ Ġdelete _ current _ set () ĊĠĠĠĠĠĠĠ Ġobj Ġ+= ĠBlock Right ĊĠĠĠĠĠĠĠ Ġreturn Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Linq ( context : ĠLin q Context ) Ġ= ĠResult (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġ= Ġ" var " ĊĠĠĠĠĠĠĠ Ġtext Ġ+= Ġ" from Ġ${ visit ( context . linq Head Item ()) Ġas Ġstr } Ġ" ĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġcontext . linq Item ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ+= Ġ" Ġ${ visit ( item )}" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtext Ġ+= Ġ"${ ( visit ( context . id ()) Ġas ĠResult ). text } Ġ${ visit ( context . expression ()). to < Result >(). text }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Linq Item ( context : ĠLin q Item Context ) Ġ: any Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context . linq Head Item () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvisit ( context . linq Head Item ()) Ġas Ġstr ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ( visit ( context . id () Ġ) as ĠResult ). text ĊĠĠĠĠĠĠĠ Ġif Ġ( context . expression () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobj Ġ+= Ġ" Ġ${ visit ( context . expression ()). to < Result >(). text }" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġobj ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Linq Head Item ( context : ĠLin q Head Item Context ): Ġany Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġobj Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġid Ġ= Ġvisit ( context . id ()) Ġas ĠResult ĊĠĠĠĠĠĠĠ Ġobj Ġ+= Ġ" from Ġ${ id . text } Ġin Ġ${ ( visit ( context . expression ()) Ġas ĠResult ). text } Ġ" ĊĠĠĠĠĠĠĠ Ġreturn Ġobj ĊĠĠĠ Ġ} Ċ } Ċ