package Ġnet . tor val d . ter ran vm . runtime Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġmin ja es ong Ġon Ġ 2 0 1 7 - 0 6 - 0 4 . Ċ Ġ*/ Ċ object ĠT Basic Interpreter Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġstring Marker Ġ= Ġ'"' ĊĠĠĠ Ġprivate Ġval Ġtoken Separ ators Ġ= ĠarrayOf (' Ġ', Ġ', ', Ġ' (', Ġ') ') ĊĊĠĠĠ Ġfun Ġinvoke REPL ( line : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( parse Line ( line )) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġparse Line ( line : ĠString ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġallowed Ġlines : ĊĠĠĠĠĠĠĠ Ġ// Ġ ĠTOKEN Ġone _ arg _ only ĊĠĠĠĠĠĠĠ Ġ// Ġ ĠTOKEN ( args , Ġargs , args Ġ, Ġargs Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġ" quoted Ġline " Ġis Ġa Ġthing ĊĊĠĠĠĠĠĠĠ Ġval Ġtokens Ġ= ĠArrayList < String >() ĊĊĠĠĠĠĠĠĠ Ġvar Ġline Ctr Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġline Ctr Max Ġ= Ġline . last Index ĊĠĠĠĠĠĠĠ Ġval Ġtoken Buffer Ġ= ĠStringBuffer () ĊĠĠĠĠĠĠĠ Ġvar Ġis Quote Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( line Ctr Ġ<= Ġline Ctr Max ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchar Ġ= Ġline [ line Ctr ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( char Ġ== Ġstring Marker ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Quote Ġ= Ġ! is Quote ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġend Ġquote ; Ġflush Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Quote ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtokens . add ( token Buffer . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Buffer . set Length ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ctr ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Quote ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Buffer . append ( char ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( token Separ ators . contains ( char ) Ġ|| Ġline Ctr Ġ== Ġline Ctr Max )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line Ctr Ġ== Ġline . last Index ) Ġ{ Ġtoken Buffer . append ( char ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( token Buffer . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtokens . add ( token Buffer . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Buffer . set Length ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ctr ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Buffer . append ( char ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġline Ctr ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtokens ĊĠĠĠ Ġ} Ċ Ċ }