package Ġio . github . sim ons ch iller . pref iller . internal . parser . sqlite Ċ Ċ import Ġio . github . sim ons ch iller . pref iller . antlr . SQLite Lexer Ċ import Ġio . github . sim ons ch iller . pref iller . antlr . SQLite Parser Ċ import Ġio . github . sim ons ch iller . pref iller . internal . parser . Statement Parser Ċ import Ġorg . antlr . v 4 . runtime .* Ċ import Ġorg . antlr . v 4 . runtime . misc . Interval Ċ import Ġjava . io . File Ċ Ċ internal Ġclass ĠSql ite Statement Parser ( private Ġval Ġfile : ĠFile ) Ġ: ĠStatement Parser Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġparse (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatements Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠĠĠĠĠ Ġval Ġlexer Ġ= ĠSQLite Lexer ( Char Streams . from Path ( file . to Path ())) ĊĠĠĠĠĠĠĠ Ġlexer . add Error Listener ( Error Listener ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠSQLite Parser ( Common Token Stream ( lexer )) ĊĠĠĠĠĠĠĠ Ġparser . add Error Listener ( Error Listener ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġparser . parse () ĊĊĠĠĠĠĠĠĠ Ġ// ĠRead Ġthe Ġindividual ĠSQL Ġstatements Ġfrom Ġthe Ġparsed Ġtree ĊĠĠĠĠĠĠĠ Ġcontext . sql _ stmt _ list (). flatMap Ġ{ Ġstatement List Ġ-> Ġstatement List . sql _ stmt () Ġ}. forEach Ġ{ Ġstatement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinterval Ġ= ĠInterval ( statement . start . startIndex , Ġstatement . stop . stop Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatements Ġ+= Ġstatement . start . inputStream . getText ( interval ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġstatements ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠAN TLR Ġdoes Ġnot Ġthrow Ġexceptions Ġby Ġdefault , Ġwe Ġhave Ġto Ġdo Ġthat Ġourselves ĊĠĠĠ Ġprivate Ġclass ĠError Listener Ġ: ĠBase Error Listener () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsyntax Error ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cognizer : ĠRe cognizer < *, Ġ*> ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoff ending Symbol : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġline : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchar Position In Line : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexception : ĠRecognition Exception ? ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Could Ġnot Ġparse Ġscript , Ġerror Ġat Ġline Ġ$ line :$ char Position In Line : Ġ$ message ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ