---input---
true.
stop :- !.
of (fun F) :- pi x\ of x => of (F x).
match (uvar as Y) :- print Y.

---tokens---
'true'        Text
'.'           Operator
'\n'          Text.Whitespace

'stop'        Text
' '           Text.Whitespace
':-'          Keyword.Declaration
' '           Text.Whitespace
'!'           Keyword.Declaration
'.'           Operator
'\n'          Text.Whitespace

'of'          Text
' '           Text.Whitespace
'('           Text
'fun'         Text
' '           Text.Whitespace
'F'           Name.Variable
')'           Operator
' '           Text.Whitespace
':-'          Keyword.Declaration
' '           Text.Whitespace
'pi'          Keyword.Declaration
' '           Text.Whitespace
'x'           Name.Variable
'\\'          Text
' '           Text.Whitespace
'of'          Text
' '           Text.Whitespace
'x'           Text
' '           Text.Whitespace
'=>'          Keyword.Declaration
' '           Text.Whitespace
'of'          Text
' '           Text.Whitespace
'('           Text
'F'           Name.Variable
' '           Text.Whitespace
'x'           Text
')'           Operator
'.'           Operator
'\n'          Text.Whitespace

'match'       Text
' '           Text.Whitespace
'('           Text
'uvar'        Keyword.Declaration
' '           Text.Whitespace
'as'          Keyword.Declaration
' '           Text.Whitespace
'Y'           Name.Variable
')'           Operator
' '           Text.Whitespace
':-'          Keyword.Declaration
' '           Text.Whitespace
'print'       Text
' '           Text.Whitespace
'Y'           Name.Variable
'.'           Operator
'\n'          Text.Whitespace
