package Ġcompiler . r ml . parser Ċ Ċ import Ġcompiler . r ml . ast .* Ċ import Ġr ml . parser . R ML Base Visitor Ċ import Ġr ml . parser . R ML Parser Ċ import Ġr ml . parser . R ML Parser .* Ċ import Ġjava . lang . RuntimeException Ċ Ċ // Ġthis Ġfile Ġimplements Ġthe Ġconversion Ġfrom Ġthe ĠAN TLR Ġparse Ġtree Ġto Ġthe ĠR ML ĠAST Ċ // Ġgrammar Ġrules Ġwith Ġmultiple Ġproduction s Ġare Ġconverted Ġwith Ġ( singleton ) Ġvisitor s , Ġotherwise Ġsingle Ġfunctions Ġare Ġused Ċ Ċ // Ġdefault Ġevent Ġtype Ġdeclarations Ċ val Ġdefault Ev type Declarations : ĠList < EventType Declaration > Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ// Ġany Ġmatches Ġ{}; ĊĠĠĠĠĠĠĠ ĠDirect EventType Declaration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEventType (" any "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObject Event Expression (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneg ated Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Data Expression Ġ= Ġnull ), ĊĊĠĠĠĠĠĠĠ Ġ// Ġnone Ġnot Ġmatches Ġany ; ĊĠĠĠĠĠĠĠ ĠDerived EventType Declaration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEventType (" none "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( EventType (" any ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneg ated Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Data Expression Ġ= Ġnull ) Ċ ) Ċ Ċ fun Ġbuild Specification ( ctx : ĠSpecification Context ) Ġ= ĠSpecification ( ĊĠĠĠĠĠĠĠ Ġctx . eventType Declaration (). map Ġ{ Ġit . accept ( EventType Declaration Builder ) Ġ} Ġ+ Ġdefault Ev type Declarations , ĊĠĠĠĠĠĠĠ Ġctx . equation (). map (:: build Equation ), ĊĠĠĠĠĠĠĠ ĠIdentifier (" Main ") Ċ ) Ċ Ċ fun Ġbuild Equation ( ctx : ĠE quation Context ) Ġ= ĠE quation ( ĊĠĠĠĠĠĠĠ Ġctx . exp Id (). UPPER CASE _ ID (). text , ĊĠĠĠĠĠĠĠ Ġctx . exp Var (). map Ġ{ ĠIdentifier ( it . text ) Ġ}, ĊĠĠĠĠĠĠĠ Ġctx . exp (). accept ( Expression Builder ) Ċ ) Ċ Ċ // Ġthis Ġvisitor Ġthrows Ġif Ġwe Ġaccidentally Ġforget Ġto Ġoverride Ġone Ġof Ġthe Ġbuilder Ġmethods Ċ // Ġalways Ġextend Ġthis Ġone Ċ abstract Ġclass ĠNo Default Visitor < T >: ĠR ML Base Visitor < T >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdefault Result (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" conversion Ġfrom Ġparse Ġtree Ġto ĠAST Ġnot Ġimplemented Ġfor Ġthis Ġelement ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠEventType Declaration Builder : ĠNo Default Visitor < EventType Declaration >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġvisit Derived Ev type Decl ( ctx : ĠDerived Ev type Decl Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDerived EventType Declaration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild EventType ( ctx . declared ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . parents . map (:: build EventType ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . NOT () Ġ!= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . data Exp ()?. accept ( Data Expression Builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Direct Ev type Decl ( ctx : ĠDirect Ev type Decl Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDirect EventType Declaration ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild EventType ( ctx . ev type ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . event Exp (). accept ( Event Expression Builder ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . NOT () Ġ!= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . data Exp ()?. accept ( Data Expression Builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ } Ċ Ċ object ĠEventType Parameter Builder : ĠNo Default Visitor < EventType . Parameter >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġvisit Ev type Var Param ( ctx : ĠEv type Var Param Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEventType . Parameter . Variable ( ctx . ev type Var (). LOWER CASE _ ID (). text ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Ev type Event Exp Param ( ctx : ĠEv type Event Exp Param Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEventType . Parameter . Event Expression ( ctx . event Exp (). accept ( Event Expression Builder )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Ev type Data Exp Param ( ctx : ĠEv type Data Exp Param Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEventType . Parameter . Data Expression ( ctx . data Exp (). accept ( Data Expression Builder )) Ċ } Ċ Ċ object ĠEvent Expression Builder : ĠNo Default Visitor < Event Expression >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġvisit Pattern Event Exp ( ctx : ĠPattern Event Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPattern Event Expression ( ctx . event Exp ( 0 ). accept ( this ), Ġctx . event Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Object Event Exp ( ctx : ĠObject Event Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObject Event Expression ( ctx . field (). map (:: build Field )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit List Event Expr ( ctx : ĠList Event Expr Context ): ĠList Event Expression Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . list Event Exp (). accept ( List Event Expression Builder ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Paren Event Exp ( ctx : ĠP aren Event Exp Context ): ĠEvent Expression Ġ= Ġctx . event Exp (). accept ( this ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit String Event Exp ( ctx : ĠString Event Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠString Event Expression ( ctx . STRING (). text . remove Sur rounding ("' ")) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Int Event Exp ( ctx : ĠInt Event Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInt Event Expression ( ctx . INT (). text . toInt ()) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Float Event Exp ( ctx : ĠFloat Event Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFloat Event Expression ( ctx . FLOAT (). text . toDouble ()) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Bool Event Exp ( ctx : ĠBool Event Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnon - null Ġassertion Ġneeded Ġto Ġavoid Ġwarnings Ġwith Ġnullable Ġextension Ġreceiver ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBool Event Expression ( ctx . BOOLEAN (). text !!. to Boolean ()) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Null Event Exp ( ctx : ĠNull Event Exp Context ) Ġ= ĠNull Event Expression ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Var Event Exp ( ctx : ĠVar Event Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVariable Event Expression ( ctx . ev type Var (). LOWER CASE _ ID (). text ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Ignored Event Exp ( ctx : ĠIgnore d Event Exp Context ) Ġ= ĠIgnore d Event Expression Ċ } Ċ Ċ object ĠList Event Expression Builder : ĠNo Default Visitor < List Event Expression >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġvisit Empty List ( ctx : ĠEmpty List Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList Event Expression ( emptyList (), Ġmore Allowed Ġ= Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit El lipsis List ( ctx : ĠEl lipsis List Context ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠList Event Expression ( emptyList (), Ġmore Allowed Ġ= Ġtrue ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Non Empty List ( ctx : ĠNon Empty List Context ): ĠList Event Expression Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġelements : ĠList < Event Expression > Ġ= Ġctx . event Exp (). map Ġ{ Ġit . accept ( Event Expression Builder ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠList Event Expression ( elements , Ġmore Allowed Ġ= Ġctx . EL LI PS IS () Ġ!= Ġnull ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠExpression Builder : ĠNo Default Visitor < Expression >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġvisit Star Exp ( ctx : ĠStar Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStar Expression ( ctx . exp (). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Plus Exp ( ctx : ĠPlus Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlus Expression ( ctx . exp (). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Optional Exp ( ctx : ĠOptional Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional Expression ( ctx . exp (). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Closure Exp ( ctx : ĠClosure Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPrefix Closure Expression ( ctx . exp (). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Cat Exp ( ctx : ĠCat Exp Context ) Ġ= ĠConcat Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . exp ( 0 ). accept ( this ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . exp ( 1 ). accept ( this ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit And Exp ( ctx : ĠAnd Exp Context ) Ġ= ĠAnd Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . exp ( 0 ). accept ( this ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . exp ( 1 ). accept ( this ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Or Exp ( ctx : ĠOr Exp Context ) Ġ= ĠOr Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . exp ( 0 ). accept ( this ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . exp ( 1 ). accept ( this ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Sh uf Exp ( ctx : ĠSh uf Exp Context ) Ġ= ĠSh uffle Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . exp ( 0 ). accept ( this ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . exp ( 1 ). accept ( this ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Filter Exp ( ctx : ĠFilter Exp Context ) Ġ= ĠFilter Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild EventType ( ctx . ev type ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . left Branch . accept ( this ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . right Branch ?. accept ( this ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Empty Exp ( ctx : ĠEmpty Exp Context ) Ġ= ĠEmpty Expression ĊĠĠĠ Ġoverride Ġfun Ġvisit All Exp ( ctx : ĠAll Exp Context ) Ġ= ĠAll Expression ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Block Exp ( ctx : ĠBlock Exp Context ) Ġ= ĠBlock Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . ev type Var (). map Ġ{ ĠIdentifier ( it . text ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . exp (). accept ( this ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit If Else Exp ( ctx : ĠIf Else Exp Context ) Ġ= ĠIf Else Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . data Exp (). accept ( Data Expression Builder ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . exp ( 0 ). accept ( this ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . exp ( 1 ). accept ( this ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Var Exp ( ctx : ĠVar Exp Context ) Ġ= ĠVariable Expression ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . exp Id (). UPPER CASE _ ID (). text , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . data Exp (). map Ġ{ Ġit . accept ( Data Expression Builder ) Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Ev type Exp ( ctx : ĠEv type Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEventType Expression ( build EventType ( ctx . ev type ())) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Paren Exp ( ctx : ĠP aren Exp Context ): ĠExpression Ġ= Ġctx . exp (). accept ( this ) Ċ } Ċ Ċ object ĠData Expression Builder : ĠNo Default Visitor < Data Expression >() Ġ{ ĊĠĠĠ Ġ// Ġfactor ize Ġthese Ġthree Ġfunctions Ġis Ġjust Ġnot Ġworth Ġit ĊĠĠĠ Ġ// Ġnon - null Ġassertion Ġneeded Ġto Ġavoid Ġwarnings Ġwith Ġnullable Ġextension Ġreceiver ĊĠĠĠ Ġoverride Ġfun Ġvisit Bool Data Exp ( ctx : ĠBool Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBool Data Expression ( ctx . BOOLEAN (). text !!. to Boolean ()) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Null Data Exp ( ctx : ĠNull Data Exp Context ) Ġ= ĠNull Data Expression ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Int Data Exp ( ctx : ĠInt Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInt Data Expression ( ctx . INT (). text !!. toInt ()) ĊĠĠĠ Ġoverride Ġfun Ġvisit Float Data Exp ( ctx : ĠFloat Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFloat Data Expression ( ctx . FLOAT (). text !!. toDouble ()) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Var Data Exp ( ctx : ĠVar Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVariable Data Expression ( ctx . ev type Var (). LOWER CASE _ ID (). text ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Abs Data Exp ( ctx : ĠAbs Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAbs Data Expression ( ctx . data Exp (). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Minus Data Exp ( ctx : ĠMin us Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMin us Data Expression ( ctx . data Exp (). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Paren Data Exp ( ctx : ĠP aren Data Exp Context ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx !!. data Exp (). accept ( this ) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Sin Data Exp ( ctx : ĠSin Data Exp Context ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSin Data Expression ( ctx !!. data Exp (). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Cos Data Exp ( ctx : ĠCos Data Exp Context ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCos Data Expression ( ctx !!. data Exp (). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Tan Data Exp ( ctx : ĠT an Data Exp Context ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT an Data Expression ( ctx !!. data Exp (). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Max Data Exp ( ctx : ĠMax Data Exp Context ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMax Data Expression ( ctx !!. data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Min Data Exp ( ctx : ĠMin Data Exp Context ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMin Data Expression ( ctx !!. data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Exp Data Exp ( ctx : ĠExp Data Exp Context ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠExp Data Expression ( ctx !!. data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Sum Data Exp ( ctx : ĠSum Data Exp Context ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSum Data Expression ( ctx !!. data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Sub Data Exp ( ctx : ĠSub Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSub Data Expression ( ctx . data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Mul Data Exp ( ctx : ĠMul Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMul Data Expression ( ctx . data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Div Data Exp ( ctx : ĠDiv Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDiv Data Expression ( ctx . data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit LessThan Data Exp ( ctx : ĠLess Than Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLess Than Data Expression ( ctx . data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit LessThan EqualTo Data Exp ( ctx : ĠLess Than EqualTo Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLess Than Equal Data Expression ( ctx . data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit GreaterThan Data Exp ( ctx : ĠG reater Than Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG reater Than Data Expression ( ctx . data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit GreaterThan EqualTo Data Exp ( ctx : ĠG reater Than EqualTo Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG reater Than Equal Data Expression ( ctx . data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit EqualTo Data Exp ( ctx : ĠEqual To Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEqual To Data Expression ( ctx . data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Not EqualTo Data Exp ( ctx : ĠNot EqualTo Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNot EqualTo Data Expression ( ctx . data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit And Data Exp ( ctx : ĠAnd Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnd Data Expression ( ctx . data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Or Data Exp ( ctx : ĠOr Data Exp Context ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOr Data Expression ( ctx . data Exp ( 0 ). accept ( this ), Ġctx . data Exp ( 1 ). accept ( this )) Ċ } Ċ Ċ fun Ġbuild EventType ( ctx : ĠEv type Context ) Ġ= ĠEventType ( ĊĠĠĠĠĠĠĠ Ġctx . ev type Id (). LOWER CASE _ ID (). text , ĊĠĠĠĠĠĠĠ Ġctx . ev type Param (). map Ġ{ Ġit . accept ( EventType Parameter Builder ) Ġ} Ċ ) Ċ Ċ fun Ġbuild Field ( ctx : ĠField Context ) Ġ= ĠObject Event Expression . Field ( ĊĠĠĠĠĠĠĠ Ġctx . field Key (). LOWER CASE _ ID (). text , ĊĠĠĠĠĠĠĠ Ġctx . event Exp (). accept ( Event Expression Builder ) Ċ )