/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 2 - 2 0 1 7 ĠThe ĠAN TLR ĠProject . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠUse Ġof Ġthis Ġfile Ġis Ġgoverned Ġby Ġthe ĠBSD Ġ 3 - clause Ġlicense Ġthat Ċ Ġ* Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE . txt Ġfile Ġin Ġthe Ġproject Ġroot . Ċ Ġ*/ Ċ Ċ package Ġorg . antlr . v 4 . kotlin runtime . tree Ċ Ċ import Ġorg . antlr . v 4 . kotlin runtime . Parser Ċ import Ġorg . antlr . v 4 . kotlin runtime . RuleContext Ċ import Ġorg . antlr . v 4 . kotlin runtime . Token Ċ Ċ /** ĠAn Ġinterface Ġto Ġaccess Ġthe Ġtree Ġof Ġ[ RuleContext ] Ġobjects Ġcreated Ċ Ġ* Ġduring Ġa Ġparse Ġthat Ġmakes Ġthe Ġdata Ġstructure Ġlook Ġlike Ġa Ġsimple Ġparse Ġtree . Ċ Ġ* ĠThis Ġnode Ġrepresents Ġboth Ġinternal Ġnodes , Ġrule Ġinv ocations , Ċ Ġ* Ġand Ġleaf Ġnodes , Ġtoken Ġmatches . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠThe Ġpayload Ġis Ġeither Ġa Ġ[ Token ] Ġor Ġa Ġ[ RuleContext ] Ġobject . Ċ Ġ*/ Ċ interface ĠParse Tree Ġ: ĠSyntax Tree Ġ{ ĊĠĠĠ Ġ// Ġthe Ġfollowing Ġmethods Ġnarrow Ġthe Ġreturn Ġtype ; Ġthey Ġare Ġnot Ġadditional Ġmethods ĊĠĠĠ Ġ// override Ġvar Ġparent : ĠParse Tree ? ĊĊĠĠĠ Ġ// private Ġvar Ġparent Ġ: ĠParse Tree ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġassign Parent ( value : ĠParse Tree ?) ĊĠĠĠ Ġ// ĠĠĠ Ġthis . parent Ġ= Ġvalue ĊĠĠĠ Ġ//} ĊĊĠĠĠ Ġoverride Ġfun Ġread Parent (): ĠParse Tree ? ĊĊĠĠĠ Ġ/** ĠReturn Ġthe Ġcombined Ġtext Ġof Ġall Ġleaf Ġnodes . ĠDoes Ġnot Ġget Ġany ĊĠĠĠĠ Ġ* Ġoff - channel Ġtokens Ġ( if Ġany ) Ġso Ġwon 't Ġreturn Ġwhitespace Ġand ĊĠĠĠĠ Ġ* Ġcomments Ġif Ġthey Ġare Ġsent Ġto Ġparser Ġon Ġhidden Ġchannel . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtext : ĠString ĊĊĠĠĠ Ġoverride Ġfun Ġget Child ( i : ĠInt ): ĠParse Tree ? ĊĊĊĠĠĠ Ġ/** ĠSet Ġthe Ġparent Ġfor Ġthis Ġnode . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġis Ġnot Ġbackward Ġcompatible Ġas Ġit Ġchanges ĊĠĠĠĠ Ġ* Ġthe Ġinterface Ġbut Ġno Ġone Ġwas Ġable Ġto Ġcreate Ġcustom ĊĠĠĠĠ Ġ* Ġnodes Ġanyway Ġso ĠI 'm Ġadding Ġas Ġit Ġimproves Ġinternal ĊĠĠĠĠ Ġ* Ġcode Ġquality . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOne Ġcould Ġarg ue Ġfor Ġa Ġre struct uring Ġof ĊĠĠĠĠ Ġ* Ġthe Ġclass / interface Ġhierarchy Ġso Ġthat ĊĠĠĠĠ Ġ* Ġset Parent , Ġadd Child Ġare Ġmoved Ġup Ġto ĠTree ĊĠĠĠĠ Ġ* Ġbut Ġthat 's Ġa Ġmajor Ġchange . ĠSo ĠI 'll Ġdo Ġthe ĊĠĠĠĠ Ġ* Ġminimal Ġchange , Ġwhich Ġis Ġto Ġadd Ġthis Ġmethod . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ since Ġ 4 . 7 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ// fun Ġset Parent ( parent : ĠRule Context ) ĊĊĠĠĠ Ġ/** ĠThe Ġ[ ParseTree Visitor ] Ġneeds Ġa Ġdouble Ġdispatch Ġmethod . Ġ Ġ*/ ĊĠĠĠ Ġfun Ġ< T > Ġaccept ( visitor : ĠParse Tree Visitor < out ĠT >): ĠT ? ĊĊĠĠĠ Ġ/** ĠSpecial ize ĠtoString Tree Ġso Ġthat Ġit Ġcan Ġprint Ġout Ġmore Ġinformation ĊĠĠĠĠ Ġ* Ġbased Ġupon Ġthe Ġparser . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠtoString Tree ( parser : ĠParser ): ĠString Ċ } Ċ