package Ġcom . s me up . r pg parser . parsing Ċ Ċ import Ġcom . s me up . r pg parser . Abstract Test Ċ import Ġcom . s me up . r pg parser . Mute Lexer Ċ import Ġcom . s me up . r pg parser . parsing . facade . R pg Parser Facade Ċ import Ġcom . strument a . kol as u . model . Point Ċ import Ġcom . strument a . kol as u . validation . Error Ċ import Ġcom . strument a . kol as u . validation . ErrorType Ċ import Ġorg . antlr . v 4 . runtime .* Ċ import Ġorg . apache . commons . io . input . BO M InputStream Ċ import Ġorg . junit . Test Ċ import Ġjava . util .* Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertTrue Ċ Ċ open Ġclass ĠR pg Parser With Mute Support Test Ġ: ĠAbstract Test () Ġ{ ĊĠĠĠ Ġ// ĠPlease Ġnote Ġthe Ġ 8 Ġleading Ġspaces ĊĠĠĠ Ġval Ġcomparison Annotation Ġ= Ġ"". pad Start ( 8 ) Ġ+ Ġ" VAL 1 ( array ( 1 )) ĠVAL 2 ( 1 ) ĠCOMP ( EQ )" ĊĠĠĠ Ġval Ġcomparison Annotation Pre Processed Ġ= Ġ"". pad Start ( 8 ) Ġ+ Ġ" VAL 1 [ array ( 1 )] ĠVAL 2 [ 1 ] ĠCOMP ( EQ )" ĊĊĠĠĠ Ġ// ĠTest Ġif Ġthe Ġlexer Ġextract s Ġthe Ġexpected Ġnumber Ġof Ġtokens ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmute Annotations At tribution Lex () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġval Ġpre processed Ġ= Ġpreprocess ( comparison Annotation ) ĊĠĠĠĠĠĠĠ Ġval Ġerrors Ġ= ĠLinkedList < Error >() ĊĠĠĠĠĠĠĠ Ġval Ġlexer Ġ= ĠM ute Lexer ( Char Streams . from Stream ( BO M InputStream ( comparison Annotation . byte InputStream ( Charsets . UTF _ 8 )))) ĊĠĠĠĠĠĠĠ Ġlexer . remove Error Listeners () ĊĠĠĠĠĠĠĠ Ġlexer . add Error Listener ( object Ġ: ĠBase Error Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsyntax Error ( p 0 : ĠRe cognizer < *, Ġ*> ?, Ġp 1 : ĠAny ?, Ġline : ĠInt , Ġchar Position In Line : ĠInt , ĠerrorMessage : ĠString ?, Ġp 5 : ĠRecognition Exception ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerrors . add ( Error ( ErrorType . LEX ICAL , ĠerrorMessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ" un specified ", Ġposition Ġ= ĠPoint ( line , Ġchar Position In Line ). as Position )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġtokens Ġ= ĠLinkedList < Token >() ĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt Ġ= Ġlexer . nextToken () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( t Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtokens . add ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( t . type Ġ!= ĠToken . EOF ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( tokens . size Ġ>= Ġ 1 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTest Ġif Ġthe Ġparser Ġreturns Ġerrors ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmute Annotations At tribution Parse () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerrors Ġ= ĠLinkedList < Error >() ĊĠĠĠĠĠĠĠ Ġval Ġmute Parser Ġ= ĠR pg Parser Facade (). create Mute Parser ( BO M InputStream ( comparison Annotation Pre Processed . byte InputStream ( Charsets . UTF _ 8 )), Ġerrors , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Lines Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġmute Parser . mute Line () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġerrors . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmute Annotations At tribution () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert AST Can Be Pro duced (" M UTE 0 5 _ 0 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsider Position Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Mute Support Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġprint ("") ĊĠĠĠ Ġ} Ċ } Ċ