package Ġcom . jetbrains . fort ea . lexer Ċ Ċ import Ġcom . jetbrains . r ider . test . R ider Frontend Lexer Test Ċ import Ġorg . testng . annotations . Test Ċ Ċ class ĠT 4 Raw Lexer Test Ġ: ĠR ider Frontend Lexer Test (" tt ") Ġ{ ĊĠ Ġoverride Ġfun Ġcreate Lexer () Ġ= ĠT 4 Lexer () ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` test Ġassembly Ġdirective `() Ġ= Ġdo Test ( ĊĠĠĠ Ġ""" <# @ Ġassembly Ġname =" Foo . dll " Ġ# > """, ĊĠĠĠ Ġ""" ĊĠĠĠ Ġ| T 4 TokenType . DIRECT IVE _ START Ġ(' <# @ ') ĊĠĠĠ Ġ| WHITE _ SPACE Ġ(' Ġ') ĊĠĠĠ Ġ| T 4 TokenType . TOKEN Ġ(' assembly ') ĊĠĠĠ Ġ| WHITE _ SPACE Ġ(' Ġ') ĊĠĠĠ Ġ| T 4 TokenType . TOKEN Ġ(' name ') ĊĠĠĠ Ġ| T 4 TokenType . EQUAL Ġ(' =') ĊĠĠĠ Ġ| T 4 TokenType . QUOTE Ġ(' " ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ ATTRIBUTE _ VALUE Ġ(' Foo . dll ') ĊĠĠĠ Ġ| T 4 TokenType . QUOTE Ġ(' " ') ĊĠĠĠ Ġ| WHITE _ SPACE Ġ(' Ġ') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') ĊĠĠĠ Ġ| """. trim Margin () ĊĠ Ġ) ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` test Ġflat Ġtext `() Ġ= Ġdo Test ( ĊĠĠĠ Ġ""" Hello , Ġworld ! ĊĠĠĠ Ġ| This Ġis Ġsample Ġtext . ĊĠĠĠ Ġ| """. trim Margin (), ĊĠĠĠ Ġ""" ĊĠĠĠ Ġ| T 4 TokenType . RAW _ TEXT Ġ(' Hello , Ġworld !') ĊĠĠĠ Ġ| T 4 TokenType . NEW _ LINE Ġ(' \ n ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ TEXT Ġ(' This Ġis Ġsample Ġtext .') ĊĠĠĠ Ġ| T 4 TokenType . NEW _ LINE Ġ(' \ n ') ĊĠĠĠ Ġ| """. trim Margin () ĊĠ Ġ) ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` test Ġexpression Ġblock `() Ġ= Ġdo Test ( ĊĠĠĠ Ġ""" <# = Ġ 2 Ġ+ Ġ 2 Ġ# > """, ĊĠĠĠ Ġ""" ĊĠĠĠ Ġ| T 4 TokenType . EXPRESSION _ BLOCK _ START Ġ(' <# =') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ CODE Ġ(' Ġ 2 Ġ+ Ġ 2 Ġ') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') ĊĠĠĠ Ġ| """. trim Margin () ĊĠ Ġ) ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` test Ġempty Ġexpression Ġblock `() Ġ= Ġdo Test ( ĊĠĠĠ Ġ""" <# = #> """, ĊĠĠĠ Ġ""" ĊĠĠĠ Ġ| T 4 TokenType . EXPRESSION _ BLOCK _ START Ġ(' <# =') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') ĊĠĠĠ Ġ| """. trim Margin () ĊĠ Ġ) ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` test Ġexpression Ġblock Ġthat Ġstarts Ġwith Ġoct oth or pe `() Ġ= Ġdo Test ( ĊĠĠĠ Ġ""" <# = ## > """, ĊĠĠĠ Ġ""" ĊĠĠĠ Ġ| T 4 TokenType . EXPRESSION _ BLOCK _ START Ġ(' <# =') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ CODE Ġ(' # ') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') """. trim Margin () ĊĠ Ġ) ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` test Ġspecial Ġcharacters Ġin Ġflat Ġtext `() Ġ= Ġdo Test ( ĊĠĠĠ Ġ""" Hello , Ġ# 1 2 3 >< 2 # @ """, ĊĠĠĠ Ġ""" T 4 TokenType . RAW _ TEXT Ġ(' Hello , Ġ# 1 2 3 >< 2 # @ ') """. trim Margin () ĊĠ Ġ) ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` test Ġcomplex Ġfile `() Ġ= Ġdo Test ( ĊĠĠĠ Ġ""" ĊĠĠĠ Ġ|< # @ Ġoutput Ġextension =". txt " Ġ# > ĊĠĠĠ Ġ|< # Ġconst Ġint ĠUPPER Ġ= Ġ 1 0 ; Ġ# > ĊĠĠĠ Ġ|< # Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< ĠUPPER ; Ġi Ġ+= Ġ 1 ) ĊĠĠĠ Ġ| ĠĠ Ġ{ Ġ# > ĊĠĠĠ Ġ|< hello <# = Ġi Ġ# >> ĊĠĠĠ Ġ|< # ĠĠĠĠ ĠPush Indent (); ĊĠĠĠ Ġ| ĠĠ Ġ} Ġ# > ĊĠĠĠ Ġ|< hello <# = ĠUPPER Ġ# > /> ĊĠĠĠ Ġ|< # Ġfor Ġ( int Ġi Ġ= Ġ 9 ; Ġi Ġ>= Ġ 0 ; Ġi Ġ+= Ġ 1 ) ĊĠĠĠ Ġ| ĠĠ Ġ{ ĊĠĠĠ Ġ| ĠĠĠĠ ĠPop Indent (); Ġ# > ĊĠĠĠ Ġ| </ hello <# = Ġi Ġ# >> ĊĠĠĠ Ġ|< # Ġ} Ġ# > ĊĠĠĠ Ġ| """. trim Margin (), ĊĠĠĠ Ġ""" ĊĠĠĠ Ġ| T 4 TokenType . DIRECT IVE _ START Ġ(' <# @ ') ĊĠĠĠ Ġ| WHITE _ SPACE Ġ(' Ġ') ĊĠĠĠ Ġ| T 4 TokenType . TOKEN Ġ(' output ') ĊĠĠĠ Ġ| WHITE _ SPACE Ġ(' Ġ') ĊĠĠĠ Ġ| T 4 TokenType . TOKEN Ġ(' extension ') ĊĠĠĠ Ġ| T 4 TokenType . EQUAL Ġ(' =') ĊĠĠĠ Ġ| T 4 TokenType . QUOTE Ġ(' " ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ ATTRIBUTE _ VALUE Ġ( '. txt ') ĊĠĠĠ Ġ| T 4 TokenType . QUOTE Ġ(' " ') ĊĠĠĠ Ġ| WHITE _ SPACE Ġ(' Ġ') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') ĊĠĠĠ Ġ| T 4 TokenType . NEW _ LINE Ġ(' \ n ') ĊĠĠĠ Ġ| T 4 TokenType . STATE MENT _ BLOCK _ START Ġ(' <# ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ CODE Ġ(' Ġconst Ġint ĠUPPER Ġ= Ġ 1 0 ; Ġ') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') ĊĠĠĠ Ġ| T 4 TokenType . NEW _ LINE Ġ(' \ n ') ĊĠĠĠ Ġ| T 4 TokenType . STATE MENT _ BLOCK _ START Ġ(' <# ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ CODE Ġ(' Ġfor Ġ( int Ġi Ġ= Ġ 0 ; Ġi Ġ< ĠUPPER ; Ġi Ġ+= Ġ 1 )\ n ĠĠ Ġ{ Ġ') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') ĊĠĠĠ Ġ| T 4 TokenType . NEW _ LINE Ġ(' \ n ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ TEXT Ġ(' < hello ') ĊĠĠĠ Ġ| T 4 TokenType . EXPRESSION _ BLOCK _ START Ġ(' <# =') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ CODE Ġ(' Ġi Ġ') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ TEXT Ġ(' >') ĊĠĠĠ Ġ| T 4 TokenType . NEW _ LINE Ġ(' \ n ') ĊĠĠĠ Ġ| T 4 TokenType . STATE MENT _ BLOCK _ START Ġ(' <# ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ CODE Ġ(' ĠĠĠĠ ĠPush Indent (); \ n ĠĠ Ġ} Ġ') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') ĊĠĠĠ Ġ| T 4 TokenType . NEW _ LINE Ġ(' \ n ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ TEXT Ġ(' < hello ') ĊĠĠĠ Ġ| T 4 TokenType . EXPRESSION _ BLOCK _ START Ġ(' <# =') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ CODE Ġ(' ĠUPPER Ġ') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ TEXT Ġ(' /> ') ĊĠĠĠ Ġ| T 4 TokenType . NEW _ LINE Ġ(' \ n ') ĊĠĠĠ Ġ| T 4 TokenType . STATE MENT _ BLOCK _ START Ġ(' <# ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ CODE Ġ(' Ġfor Ġ( int Ġi Ġ= Ġ 9 ; Ġi Ġ>= Ġ 0 ; Ġi Ġ+= Ġ 1 )\ n ĠĠ Ġ{\ n ĠĠĠĠ ĠPop Indent (); Ġ') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') ĊĠĠĠ Ġ| T 4 TokenType . NEW _ LINE Ġ(' \ n ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ TEXT Ġ(' </ hello ') ĊĠĠĠ Ġ| T 4 TokenType . EXPRESSION _ BLOCK _ START Ġ(' <# =') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ CODE Ġ(' Ġi Ġ') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ TEXT Ġ(' >') ĊĠĠĠ Ġ| T 4 TokenType . NEW _ LINE Ġ(' \ n ') ĊĠĠĠ Ġ| T 4 TokenType . STATE MENT _ BLOCK _ START Ġ(' <# ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ CODE Ġ(' Ġ} Ġ') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') ĊĠĠĠ Ġ| T 4 TokenType . NEW _ LINE Ġ(' \ n ') ĊĠĠĠ Ġ| """. trim Margin () ĊĠ Ġ) ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` test Ġthat Ġlexer Ġmerge s Ġtokens `() Ġ= Ġdo Test ( ĊĠĠĠ Ġ""" ĊĠĠĠ Ġ| hello << # @ Ġoutput Ġextension =". txt " Ġ# > ĊĠĠĠ Ġ| """. trim Margin (), ĊĠĠĠ Ġ""" ĊĠĠĠ Ġ| T 4 TokenType . RAW _ TEXT Ġ(' hello < ') ĊĠĠĠ Ġ| T 4 TokenType . DIRECT IVE _ START Ġ(' <# @ ') ĊĠĠĠ Ġ| WHITE _ SPACE Ġ(' Ġ') ĊĠĠĠ Ġ| T 4 TokenType . TOKEN Ġ(' output ') ĊĠĠĠ Ġ| WHITE _ SPACE Ġ(' Ġ') ĊĠĠĠ Ġ| T 4 TokenType . TOKEN Ġ(' extension ') ĊĠĠĠ Ġ| T 4 TokenType . EQUAL Ġ(' =') ĊĠĠĠ Ġ| T 4 TokenType . QUOTE Ġ(' " ') ĊĠĠĠ Ġ| T 4 TokenType . RAW _ ATTRIBUTE _ VALUE Ġ( '. txt ') ĊĠĠĠ Ġ| T 4 TokenType . QUOTE Ġ(' " ') ĊĠĠĠ Ġ| WHITE _ SPACE Ġ(' Ġ') ĊĠĠĠ Ġ| T 4 TokenType . BLOCK _ END Ġ(' #> ') ĊĠĠĠ Ġ| T 4 TokenType . NEW _ LINE Ġ(' \ n ') """. trim Margin () ĊĠ Ġ) Ċ } Ċ