package Ġn inja . cue . sql Ċ Ċ import Ġorg . antlr . v 4 . runtime . CharStream Ċ import Ġorg . antlr . v 4 . runtime . Char Streams Ċ import Ġorg . antlr . v 4 . runtime . Int Stream Ċ import Ġorg . antlr . v 4 . runtime . Token Ċ import Ġorg . antlr . v 4 . runtime . misc . Interval Ċ Ċ import Ġn inja . cue . sql . antlr . AN SIS ql Lexer Ċ Ċ private Ġclass ĠCase Ins ensitive Stream ( ĊĠĠĠĠĠĠĠ Ġval Ġstream : ĠChar Stream Ċ ) Ġ: ĠChar Stream Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Source Name (): ĠString Ġ{ Ġreturn Ġstream . source Name Ġ} ĊĠĠĠ Ġoverride Ġfun Ġindex (): ĠInt Ġ{ Ġreturn Ġstream . index () Ġ} ĊĠĠĠ Ġoverride Ġfun Ġsize (): ĠInt Ġ{ Ġreturn Ġstream . size () Ġ} ĊĠĠĠ Ġoverride Ġfun Ġrelease ( marker : ĠInt ) Ġ{ Ġstream . release ( marker ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġconsume () Ġ{ Ġstream . consume () Ġ} ĊĠĠĠ Ġoverride Ġfun Ġseek ( index : ĠInt ) Ġ{ Ġstream . seek ( index ) Ġ} ĊĠĠĠ Ġoverride Ġfun ĠgetText ( interval : ĠInterval ?): ĠString Ġ{ Ġreturn Ġstream . getText ( interval ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġmark (): ĠInt Ġ{ Ġreturn Ġstream . mark () Ġ} ĊĠĠĠ Ġoverride Ġfun ĠLA ( i : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstream . LA ( i ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĠInt Stream . EOF Ġ-> Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠCharacter . toUpperCase ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġget Tokens ( sql : ĠString ): ĠList < Token > Ġ{ ĊĠĠĠ Ġval Ġlexer Ġ= ĠAN SIS ql Lexer ( Case Ins ensitive Stream ( Char Streams . fromString ( sql ))) ĊĠĠĠ Ġval Ġtokens Ġ= Ġmutable ListOf < Token >() ĊĠĠĠ Ġwhile Ġ(! lexer ._ hit EOF ) Ġ{ Ġtokens . add ( lexer . nextToken ()) Ġ} ĊĠĠĠ Ġreturn Ġtokens Ċ } Ċ Ċ fun ĠgetToken Name ( index : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠAN SIS ql Lexer . token Names [ index ] Ċ } Ċ Ċ fun ĠgetToken Names ( sql : ĠString ): ĠList < String > Ġ{ ĊĠĠĠ Ġreturn Ġget Tokens ( sql ). map Ġ{ ĠgetToken Name ( it . type ) Ġ} Ċ } Ċ