'scheme'      Keyword
' '           Text.Whitespace
'COMPILER'    Keyword.Type
' '           Text.Whitespace
'='           Text
' \n'         Text.Whitespace

'class'       Keyword
'\n  '        Text.Whitespace
'type'        Keyword
'\n    '      Text.Whitespace
'Prog'        Keyword.Type
' '           Text.Whitespace
'='           Text
'='           Text
' '           Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'P'           Text
'r'           Text
'o'           Text
'g'           Text
'('           Text
's'           Text
't'           Text
'm'           Text
't'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Stmt'        Keyword.Type
')'           Text
','           Text
'  \n\n    '  Text.Whitespace
'Stmt'        Keyword.Type
' '           Text.Whitespace
'='           Text
'='           Text
'  \n      '  Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'A'           Text
's'           Text
'g'           Text
'n'           Text
'('           Text
'i'           Text
'd'           Text
'e'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Identifier'  Keyword.Type
','           Text
'  '          Text.Whitespace
'e'           Text
'x'           Text
'p'           Text
'r'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Expr'        Keyword.Type
')'           Text
' '           Text.Whitespace
'|'           Text
'   \n      ' Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'I'           Text
'f'           Text
'('           Text
'c'           Text
'o'           Text
'n'           Text
'd'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Expr'        Keyword.Type
','           Text
'  '          Text.Whitespace
's'           Text
'1'           Literal.Number.Integer
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Stmt'        Keyword.Type
','           Text
' '           Text.Whitespace
's'           Text
'2'           Literal.Number.Integer
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Stmt'        Keyword.Type
')'           Text
' '           Text.Whitespace
'|'           Text
'   \n      ' Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'S'           Text
'e'           Text
'q'           Text
'('           Text
'h'           Text
'e'           Text
'a'           Text
'd'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Stmt'        Keyword.Type
','           Text
'  '          Text.Whitespace
'l'           Text
'a'           Text
's'           Text
't'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Stmt'        Keyword.Type
')'           Text
','           Text
'  \n\n    '  Text.Whitespace
'Expr'        Keyword.Type
' '           Text.Whitespace
'='           Text
'='           Text
' \n      '   Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'C'           Text
'o'           Text
'n'           Text
's'           Text
't'           Text
'('           Text
'c'           Text
'o'           Text
'n'           Text
's'           Text
't'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Int'         Keyword
')'           Text
' '           Text.Whitespace
'|'           Text
'  \n      '  Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'P'           Text
'l'           Text
'u'           Text
's'           Text
'('           Text
'f'           Text
's'           Text
't'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Expr'        Keyword.Type
','           Text
'  '          Text.Whitespace
's'           Text
'n'           Text
'd'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Expr'        Keyword.Type
')'           Text
' '           Text.Whitespace
'|'           Text
'\n      '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'I'           Text
'd'           Text
'('           Text
'i'           Text
'd'           Text
'e'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Identifier'  Keyword.Type
')'           Text
','           Text
'\n    '      Text.Whitespace
'Identifier'  Keyword.Type
' '           Text.Whitespace
'='           Text
' '           Text.Whitespace
'Text'        Keyword
'\n\n'        Text.Whitespace

'type'        Keyword
' '           Text.Whitespace
'/* storage for program variables */' Comment
'\n  '        Text.Whitespace
'`'           Text
'Sigma'       Keyword.Type
' '           Text.Whitespace
'='           Text
' '           Text.Whitespace
'Identifier'  Keyword.Type
' '           Text.Whitespace
'-m->'        Operator
' '           Text.Whitespace
'Int'         Keyword
' \n\n'       Text.Whitespace

'value'       Keyword
'     \n  '   Text.Whitespace
'm'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Prog'        Keyword.Type
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'`'           Text
'Sigma'       Keyword.Type
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'`'           Text
'Sigma'       Keyword.Type
'\n  '        Text.Whitespace
'm'           Text
'('           Text
'p'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
'  '          Text.Whitespace
'is'          Keyword
'  '          Text.Whitespace
'm'           Text
'('           Text
's'           Text
't'           Text
'm'           Text
't'           Text
'('           Text
'p'           Text
')'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
','           Text
'  \n\n  '    Text.Whitespace
'm'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Stmt'        Keyword.Type
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'`'           Text
'Sigma'       Keyword.Type
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'`'           Text
'Sigma'       Keyword.Type
'\n  '        Text.Whitespace
'm'           Text
'('           Text
's'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
'  '          Text.Whitespace
'is'          Keyword
'  \n    '    Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
's'           Text
' '           Text.Whitespace
'of'          Keyword
' \n      '   Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'A'           Text
's'           Text
'g'           Text
'n'           Text
'('           Text
'i'           Text
','           Text
' '           Text.Whitespace
'e'           Text
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
' '           Text.Whitespace
'!!'          Operator
' '           Text.Whitespace
'['           Text
'i'           Text
' '           Text.Whitespace
'+>'          Operator
' '           Text.Whitespace
'm'           Text
'('           Text
'e'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
']'           Text
','           Text
' \n      '   Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'S'           Text
'e'           Text
'q'           Text
'('           Text
's'           Text
'1'           Literal.Number.Integer
','           Text
' '           Text.Whitespace
's'           Text
'2'           Literal.Number.Integer
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'm'           Text
'('           Text
's'           Text
'2'           Literal.Number.Integer
')'           Text
'('           Text
'm'           Text
'('           Text
's'           Text
'1'           Literal.Number.Integer
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
')'           Text
','           Text
' \n      '   Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'I'           Text
'f'           Text
'('           Text
'c'           Text
','           Text
' '           Text.Whitespace
's'           Text
'1'           Literal.Number.Integer
','           Text
' '           Text.Whitespace
's'           Text
'2'           Literal.Number.Integer
')'           Text
' '           Text.Whitespace
'->'          Operator
' \n        ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'm'           Text
'('           Text
'c'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
' '           Text.Whitespace
'~='          Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
' '           Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'm'           Text
'('           Text
's'           Text
'1'           Literal.Number.Integer
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
' '           Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'm'           Text
'('           Text
's'           Text
'2'           Literal.Number.Integer
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
' '           Text.Whitespace
'end'         Keyword
'      \n    ' Text.Whitespace
'end'         Keyword
','           Text
'\n  \n  '    Text.Whitespace
'm'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Expr'        Keyword.Type
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'`'           Text
'Sigma'       Keyword.Type
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'Int'         Keyword
'\n  '        Text.Whitespace
'm'           Text
'('           Text
'e'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
'  '          Text.Whitespace
'is'          Keyword
'  \n    '    Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'e'           Text
' '           Text.Whitespace
'of'          Keyword
' \n      '   Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'C'           Text
'o'           Text
'n'           Text
's'           Text
't'           Text
'('           Text
'n'           Text
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'n'           Text
','           Text
' \n      '   Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'P'           Text
'l'           Text
'u'           Text
's'           Text
'('           Text
'e'           Text
'1'           Literal.Number.Integer
','           Text
' '           Text.Whitespace
'e'           Text
'2'           Literal.Number.Integer
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'm'           Text
'('           Text
'e'           Text
'1'           Literal.Number.Integer
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
' '           Text.Whitespace
'+'           Text
' '           Text.Whitespace
'm'           Text
'('           Text
'e'           Text
'2'           Literal.Number.Integer
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
','           Text
' \n      '   Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'I'           Text
'd'           Text
'('           Text
'i'           Text
'd'           Text
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'i'           Text
'd'           Text
' '           Text.Whitespace
'isin'        Keyword
'  '          Text.Whitespace
'dom'         Keyword
' '           Text.Whitespace
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
' '           Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
'('           Text
'i'           Text
'd'           Text
')'           Text
' '           Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'0'           Literal.Number.Integer
' '           Text.Whitespace
'end'         Keyword
' \n    '     Text.Whitespace
'end'         Keyword
' \n\n'       Text.Whitespace

'type'        Keyword
'\n  '        Text.Whitespace
'MProg'       Keyword.Type
' '           Text.Whitespace
'='           Text
' '           Text.Whitespace
'Inst'        Keyword.Type
'-list'       Keyword
','           Text
'\n  '        Text.Whitespace
'Inst'        Keyword.Type
' '           Text.Whitespace
'='           Text
'='           Text
' \n     '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'P'           Text
'u'           Text
's'           Text
'h'           Text
'('           Text
'i'           Text
'd'           Text
'e'           Text
'1'           Literal.Number.Integer
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Identifier'  Keyword.Type
')'           Text
' '           Text.Whitespace
'|'           Text
' \n     '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'P'           Text
'o'           Text
'p'           Text
'('           Text
'Unit'        Keyword
')'           Text
' '           Text.Whitespace
'|'           Text
' \n     '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'A'           Text
'd'           Text
'd'           Text
'('           Text
'Unit'        Keyword
')'           Text
' '           Text.Whitespace
'|'           Text
' \n     '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'C'           Text
'n'           Text
's'           Text
't'           Text
'('           Text
'v'           Text
'a'           Text
'l'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Int'         Keyword
')'           Text
' '           Text.Whitespace
'|'           Text
' \n     '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'S'           Text
't'           Text
'o'           Text
'r'           Text
'e'           Text
'('           Text
'i'           Text
'd'           Text
'e'           Text
'2'           Literal.Number.Integer
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Identifier'  Keyword.Type
')'           Text
' '           Text.Whitespace
'|'           Text
' \n     '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'J'           Text
'u'           Text
'm'           Text
'p'           Text
'false'       Keyword.Constant
'('           Text
'o'           Text
'f'           Text
'f'           Text
'1'           Literal.Number.Integer
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Int'         Keyword
')'           Text
' '           Text.Whitespace
'|'           Text
' \n     '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'J'           Text
'u'           Text
'm'           Text
'p'           Text
'('           Text
'o'           Text
'f'           Text
'f'           Text
'2'           Literal.Number.Integer
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Int'         Keyword
')'           Text
' \n\n\n'     Text.Whitespace

'/* An interpreter for SMALL instructions */' Comment
'\n\n'        Text.Whitespace

'type'        Keyword
'  '          Text.Whitespace
'Stack'       Keyword.Type
' '           Text.Whitespace
'='           Text
' '           Text.Whitespace
'Int'         Keyword
'-list'       Keyword
'\n'          Text.Whitespace

'value'       Keyword
' \n  '       Text.Whitespace
'I'           Keyword.Type
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'MProg'       Keyword.Type
' '           Text.Whitespace
'><'          Operator
' '           Text.Whitespace
'Int'         Keyword
' '           Text.Whitespace
'><'          Operator
' '           Text.Whitespace
'Stack'       Keyword.Type
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'('           Text
'`'           Text
'Sigma'       Keyword.Type
' '           Text.Whitespace
'->'          Operator
'`'           Text
'Sigma'       Keyword.Type
')'           Text
'\n  '        Text.Whitespace
'I'           Keyword.Type
'('           Text
'm'           Text
'p'           Text
','           Text
' '           Text.Whitespace
'p'           Text
'c'           Text
','           Text
' '           Text.Whitespace
's'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
' '           Text.Whitespace
'is'          Keyword
' \n    '     Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'p'           Text
'c'           Text
' '           Text.Whitespace
'<='          Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
' '           Text.Whitespace
'\\/'         Operator
' '           Text.Whitespace
'p'           Text
'c'           Text
' '           Text.Whitespace
'>'           Text
' '           Text.Whitespace
'len'         Keyword
' '           Text.Whitespace
'm'           Text
'p'           Text
' '           Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
' '           Text.Whitespace
'else'        Keyword
'\n      '    Text.Whitespace
'case'        Keyword
'  '          Text.Whitespace
'm'           Text
'p'           Text
'('           Text
'p'           Text
'c'           Text
')'           Text
' '           Text.Whitespace
'of'          Keyword
'\n        '  Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'P'           Text
'u'           Text
's'           Text
'h'           Text
'('           Text
'x'           Text
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'x'           Text
' '           Text.Whitespace
'isin'        Keyword
' '           Text.Whitespace
'dom'         Keyword
' '           Text.Whitespace
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
' \n          ' Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'I'           Keyword.Type
'('           Text
'm'           Text
'p'           Text
','           Text
' '           Text.Whitespace
'p'           Text
'c'           Text
' '           Text.Whitespace
'+'           Text
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Text
' '           Text.Whitespace
'<.'          Operator
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
'('           Text
'x'           Text
')'           Text
'.>'          Operator
' '           Text.Whitespace
'^'           Text
' '           Text.Whitespace
's'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
'\n          ' Text.Whitespace
'else'        Keyword
'  '          Text.Whitespace
'I'           Keyword.Type
'('           Text
'm'           Text
'p'           Text
','           Text
' '           Text.Whitespace
'p'           Text
'c'           Text
' '           Text.Whitespace
'+'           Text
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Text
' '           Text.Whitespace
'<.'          Operator
'0'           Literal.Number.Integer
'.>'          Operator
' '           Text.Whitespace
'^'           Text
' '           Text.Whitespace
's'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
' '           Text.Whitespace
'end'         Keyword
','           Text
'\n        '  Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'P'           Text
'o'           Text
'p'           Text
'('           Text
'('           Text
')'           Text
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'len'         Keyword
' '           Text.Whitespace
's'           Text
' '           Text.Whitespace
'='           Text
' '           Text.Whitespace
'0'           Literal.Number.Integer
' '           Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
'\n          ' Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'I'           Keyword.Type
'('           Text
'm'           Text
'p'           Text
','           Text
' '           Text.Whitespace
'p'           Text
'c'           Text
' '           Text.Whitespace
'+'           Text
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Text
' '           Text.Whitespace
'tl'          Keyword
' '           Text.Whitespace
's'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
' '           Text.Whitespace
'end'         Keyword
','           Text
'\n        '  Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'C'           Text
'n'           Text
's'           Text
't'           Text
'('           Text
'n'           Text
')'           Text
'  '          Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'I'           Keyword.Type
'('           Text
'm'           Text
'p'           Text
','           Text
' '           Text.Whitespace
'p'           Text
'c'           Text
' '           Text.Whitespace
'+'           Text
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Text
' '           Text.Whitespace
'<.'          Operator
'n'           Text
'.>'          Operator
' '           Text.Whitespace
'^'           Text
'  '          Text.Whitespace
's'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
','           Text
'\n        '  Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'A'           Text
'd'           Text
'd'           Text
'('           Text
'('           Text
')'           Text
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'len'         Keyword
' '           Text.Whitespace
's'           Text
' '           Text.Whitespace
'<'           Text
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
' \n          ' Text.Whitespace
'else'        Keyword
'  '          Text.Whitespace
'I'           Keyword.Type
'('           Text
'm'           Text
'p'           Text
','           Text
' '           Text.Whitespace
'p'           Text
'c'           Text
' '           Text.Whitespace
'+'           Text
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Text
'<.'          Operator
's'           Text
'('           Text
'1'           Literal.Number.Integer
')'           Text
' '           Text.Whitespace
'+'           Text
' '           Text.Whitespace
's'           Text
'('           Text
'2'           Literal.Number.Integer
')'           Text
'.>'          Operator
' '           Text.Whitespace
'^'           Text
' '           Text.Whitespace
'tl'          Keyword
' '           Text.Whitespace
'tl'          Keyword
' '           Text.Whitespace
's'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
' '           Text.Whitespace
'end'         Keyword
','           Text
'\n        '  Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'S'           Text
't'           Text
'o'           Text
'r'           Text
'e'           Text
'('           Text
'x'           Text
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'len'         Keyword
' '           Text.Whitespace
's'           Text
' '           Text.Whitespace
'='           Text
' '           Text.Whitespace
'0'           Literal.Number.Integer
' '           Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
'\n          ' Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'I'           Keyword.Type
'('           Text
'm'           Text
'p'           Text
','           Text
' '           Text.Whitespace
'p'           Text
'c'           Text
' '           Text.Whitespace
'+'           Text
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Text
' '           Text.Whitespace
's'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
' '           Text.Whitespace
'!!'          Operator
' '           Text.Whitespace
'['           Text
'x'           Text
' '           Text.Whitespace
'+>'          Operator
' '           Text.Whitespace
's'           Text
'('           Text
'1'           Literal.Number.Integer
')'           Text
']'           Text
')'           Text
' '           Text.Whitespace
'end'         Keyword
','           Text
'\n        '  Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'J'           Text
'u'           Text
'm'           Text
'p'           Text
'false'       Keyword.Constant
'('           Text
'n'           Text
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'len'         Keyword
' '           Text.Whitespace
's'           Text
' '           Text.Whitespace
'='           Text
' '           Text.Whitespace
'0'           Literal.Number.Integer
' '           Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
'\n          ' Text.Whitespace
'e'           Text
'l'           Text
's'           Text
'i'           Text
'f'           Text
'  '          Text.Whitespace
'hd'          Keyword
' '           Text.Whitespace
's'           Text
' '           Text.Whitespace
'~='          Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'  '          Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'I'           Keyword.Type
'('           Text
'm'           Text
'p'           Text
','           Text
' '           Text.Whitespace
'p'           Text
'c'           Text
' '           Text.Whitespace
'+'           Text
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Text
' '           Text.Whitespace
's'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
' \n          ' Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'I'           Keyword.Type
'('           Text
'm'           Text
'p'           Text
','           Text
' '           Text.Whitespace
'p'           Text
'c'           Text
' '           Text.Whitespace
'+'           Text
' '           Text.Whitespace
'n'           Text
','           Text
' '           Text.Whitespace
's'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
' '           Text.Whitespace
'end'         Keyword
','           Text
'\n        '  Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'J'           Text
'u'           Text
'm'           Text
'p'           Text
'('           Text
'n'           Text
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'I'           Keyword.Type
'('           Text
'm'           Text
'p'           Text
','           Text
' '           Text.Whitespace
'p'           Text
'c'           Text
' '           Text.Whitespace
'+'           Text
' '           Text.Whitespace
'n'           Text
','           Text
' '           Text.Whitespace
's'           Text
')'           Text
'('           Text
'`'           Text
's'           Text
'i'           Text
'g'           Text
'm'           Text
'a'           Text
')'           Text
' \n      '   Text.Whitespace
'end'         Keyword
'\n    '      Text.Whitespace
'end'         Keyword
'  \n\n'      Text.Whitespace

'value'       Keyword
'\n  '        Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'P'           Text
'r'           Text
'o'           Text
'g'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Prog'        Keyword.Type
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'MProg'       Keyword.Type
'\n  '        Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'P'           Text
'r'           Text
'o'           Text
'g'           Text
'('           Text
'p'           Text
')'           Text
' '           Text.Whitespace
'is'          Keyword
' '           Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'S'           Text
't'           Text
'm'           Text
't'           Text
'('           Text
's'           Text
't'           Text
'm'           Text
't'           Text
'('           Text
'p'           Text
')'           Text
')'           Text
','           Text
'\n\n  '      Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'S'           Text
't'           Text
'm'           Text
't'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Stmt'        Keyword.Type
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'MProg'       Keyword.Type
'\n  '        Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'S'           Text
't'           Text
'm'           Text
't'           Text
'('           Text
's'           Text
')'           Text
' '           Text.Whitespace
'is'          Keyword
'\n    '      Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
's'           Text
' '           Text.Whitespace
'of'          Keyword
'\n      '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'A'           Text
's'           Text
'g'           Text
'n'           Text
'('           Text
'i'           Text
'd'           Text
','           Text
' '           Text.Whitespace
'e'           Text
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'E'           Text
'x'           Text
'p'           Text
'r'           Text
'('           Text
'e'           Text
')'           Text
' '           Text.Whitespace
'^'           Text
' '           Text.Whitespace
'<.'          Operator
' '           Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'S'           Text
't'           Text
'o'           Text
'r'           Text
'e'           Text
'('           Text
'i'           Text
'd'           Text
')'           Text
','           Text
' '           Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'P'           Text
'o'           Text
'p'           Text
'('           Text
')'           Text
' '           Text.Whitespace
'.>'          Operator
','           Text
'\n      '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'S'           Text
'e'           Text
'q'           Text
'('           Text
's'           Text
'1'           Literal.Number.Integer
','           Text
' '           Text.Whitespace
's'           Text
'2'           Literal.Number.Integer
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'S'           Text
't'           Text
'm'           Text
't'           Text
'('           Text
's'           Text
'1'           Literal.Number.Integer
')'           Text
' '           Text.Whitespace
'^'           Text
' '           Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'S'           Text
't'           Text
'm'           Text
't'           Text
'('           Text
's'           Text
'2'           Literal.Number.Integer
')'           Text
','           Text
'\n      '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'I'           Text
'f'           Text
'('           Text
'e'           Text
','           Text
' '           Text.Whitespace
's'           Text
'1'           Literal.Number.Integer
','           Text
' '           Text.Whitespace
's'           Text
'2'           Literal.Number.Integer
')'           Text
' '           Text.Whitespace
'->'          Operator
' \n       '  Text.Whitespace
'let'         Keyword
' \n         ' Text.Whitespace
'c'           Text
'e'           Text
' '           Text.Whitespace
'='           Text
' '           Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'E'           Text
'x'           Text
'p'           Text
'r'           Text
'('           Text
'e'           Text
')'           Text
','           Text
' \n         ' Text.Whitespace
'c'           Text
's'           Text
'1'           Literal.Number.Integer
' '           Text.Whitespace
'='           Text
' '           Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'S'           Text
't'           Text
'm'           Text
't'           Text
'('           Text
's'           Text
'1'           Literal.Number.Integer
')'           Text
','           Text
' '           Text.Whitespace
'c'           Text
's'           Text
'2'           Literal.Number.Integer
' '           Text.Whitespace
'='           Text
' '           Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'S'           Text
't'           Text
'm'           Text
't'           Text
'('           Text
's'           Text
'2'           Literal.Number.Integer
')'           Text
' \n       '  Text.Whitespace
'in'          Keyword
'\n           ' Text.Whitespace
'c'           Text
'e'           Text
' '           Text.Whitespace
'^'           Text
' \n           ' Text.Whitespace
'<.'          Operator
' '           Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'J'           Text
'u'           Text
'm'           Text
'p'           Text
'false'       Keyword.Constant
'('           Text
'len'         Keyword
' '           Text.Whitespace
'c'           Text
's'           Text
'1'           Literal.Number.Integer
' '           Text.Whitespace
'+'           Text
' '           Text.Whitespace
'3'           Literal.Number.Integer
')'           Text
' '           Text.Whitespace
'.>'          Operator
' '           Text.Whitespace
'^'           Text
'\n           ' Text.Whitespace
'<.'          Operator
' '           Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'P'           Text
'o'           Text
'p'           Text
'('           Text
')'           Text
' '           Text.Whitespace
'.>'          Operator
' '           Text.Whitespace
'^'           Text
'\n           ' Text.Whitespace
'c'           Text
's'           Text
'1'           Literal.Number.Integer
' '           Text.Whitespace
'^'           Text
'\n           ' Text.Whitespace
'<.'          Operator
' '           Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'J'           Text
'u'           Text
'm'           Text
'p'           Text
'('           Text
'len'         Keyword
' '           Text.Whitespace
'c'           Text
's'           Text
'2'           Literal.Number.Integer
' '           Text.Whitespace
'+'           Text
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Text
' '           Text.Whitespace
'.>'          Operator
' '           Text.Whitespace
'^'           Text
'\n           ' Text.Whitespace
'<.'          Operator
' '           Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'P'           Text
'o'           Text
'p'           Text
'('           Text
')'           Text
' '           Text.Whitespace
'.>'          Operator
' '           Text.Whitespace
'^'           Text
'\n           ' Text.Whitespace
'c'           Text
's'           Text
'2'           Literal.Number.Integer
'\n       '   Text.Whitespace
'end'         Keyword
'\n    '      Text.Whitespace
'end'         Keyword
','           Text
'\n\n  '      Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'E'           Text
'x'           Text
'p'           Text
'r'           Text
' '           Text.Whitespace
':'           Text
' '           Text.Whitespace
'Expr'        Keyword.Type
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'MProg'       Keyword.Type
'\n  '        Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'E'           Text
'x'           Text
'p'           Text
'r'           Text
'('           Text
'e'           Text
')'           Text
' '           Text.Whitespace
'is'          Keyword
' \n    '     Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'e'           Text
' '           Text.Whitespace
'of'          Keyword
'\n      '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'C'           Text
'o'           Text
'n'           Text
's'           Text
't'           Text
'('           Text
'n'           Text
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'<.'          Operator
' '           Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'C'           Text
'n'           Text
's'           Text
't'           Text
'('           Text
'n'           Text
')'           Text
' '           Text.Whitespace
'.>'          Operator
','           Text
'\n      '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'P'           Text
'l'           Text
'u'           Text
's'           Text
'('           Text
'e'           Text
'1'           Literal.Number.Integer
','           Text
' '           Text.Whitespace
'e'           Text
'2'           Literal.Number.Integer
')'           Text
' '           Text.Whitespace
'->'          Operator
' \n        ' Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'E'           Text
'x'           Text
'p'           Text
'r'           Text
'('           Text
'e'           Text
'1'           Literal.Number.Integer
')'           Text
' '           Text.Whitespace
'^'           Text
' '           Text.Whitespace
'c'           Text
'o'           Text
'm'           Text
'p'           Text
'_'           Text
'E'           Text
'x'           Text
'p'           Text
'r'           Text
'('           Text
'e'           Text
'2'           Literal.Number.Integer
')'           Text
' '           Text.Whitespace
'^'           Text
' '           Text.Whitespace
'<.'          Operator
' '           Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'A'           Text
'd'           Text
'd'           Text
'('           Text
')'           Text
' '           Text.Whitespace
'.>'          Operator
','           Text
'\n      '    Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'I'           Text
'd'           Text
'('           Text
'i'           Text
'd'           Text
')'           Text
' '           Text.Whitespace
'->'          Operator
' '           Text.Whitespace
'<.'          Operator
' '           Text.Whitespace
'm'           Text
'k'           Text
'_'           Text
'P'           Text
'u'           Text
's'           Text
'h'           Text
'('           Text
'i'           Text
'd'           Text
')'           Text
' '           Text.Whitespace
'.>'          Operator
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n'        Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace
