package Ġcom . bs se 2 0 1 8 . sal av at ov . flt . cy k query . cli Ċ Ċ import Ġcom . bs se 2 0 1 8 . sal av at ov . flt . algorithms . CY K Query Ċ import Ġcom . bs se 2 0 1 8 . sal av at ov . flt . grammar s . Context Free Grammar Ċ import Ġcom . bs se 2 0 1 8 . sal av at ov . flt . grammar s . Empty Language Exception Ċ import Ġjava . io . File Ċ import Ġjava . lang . Exception Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġif Ġ( args . size Ġ!= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Arguments : Ġ< grammar Ġfile > Ġ< query Ġfile >") ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġraw Grammar Ġ= ĠFile ( args [ 0 ]). read Lines (). filter Ġ{ Ġit . isNotEmpty () Ġ} ĊĠĠĠ Ġval Ġgrammar Ġ= ĠContext Free Grammar . from Strings ( raw Grammar ) ĊĠĠĠ Ġval Ġquery Ġ= ĠFile ( args [ 1 ]). read Lines (). getOrElse ( 0 ) Ġ{ Ġ"" Ġ}. trim () ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc nf Ġ= Ġgrammar . to Ch om sky Normal Form () ĊĠĠĠĠĠĠĠ Ġprintln ( CY K Query ( cnf , Ġquery . map Ġ{ Ġit . toString () Ġ})) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠEmpty Language Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( query Ġ== Ġ"") ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" ERROR : Ġ${ e . message }") ĊĠĠĠ Ġ} Ċ }