'import'      Keyword.Namespace
' '           Text.Whitespace
're'          Name
'\n\n'        Text.Whitespace

'for'         Keyword
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'in'          Operator.Word
' '           Text.Whitespace
'lines'       Name
'('           Punctuation
'"'           Literal.String
'myfile.txt'  Literal.String
'"'           Literal.String
')'           Punctuation
':'           Punctuation
'\n  '        Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'='           Operator
'~'           Operator
' '           Text.Whitespace
're"'         Literal.String
'('           Literal.String
'\\'          Literal.String
'w+)=(.*)'    Literal.String
'"'           Literal.String
':'           Punctuation
'\n    '      Text.Whitespace
'echo'        Name
' '           Text.Whitespace
'"'           Literal.String
'Key: '       Literal.String
'"'           Literal.String
','           Punctuation
' '           Text.Whitespace
'matches'     Name
'['           Operator
'0'           Literal.Number.Integer
']'           Operator
','           Punctuation
'\n         ' Text.Whitespace
'"'           Literal.String
' Value: '    Literal.String
'"'           Literal.String
','           Punctuation
' '           Text.Whitespace
'matches'     Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
'\n\n'        Text.Whitespace

'Echo'        Name
'('           Punctuation
'"'           Literal.String
'What'        Literal.String
"'"           Literal.String
's your name? ' Literal.String
'"'           Literal.String
')'           Punctuation
'\n'          Text.Whitespace

'var'         Keyword.Declaration
' '           Text.Whitespace
'name'        Name
':'           Punctuation
' '           Text.Whitespace
'string'      Name.Builtin
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'readLine'    Name
'('           Punctuation
'stdin'       Name
')'           Punctuation
'\n'          Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'name'        Name
' '           Text.Whitespace
'='           Operator
'='           Operator
' '           Text.Whitespace
'"'           Literal.String
'"'           Literal.String
':'           Punctuation
'\n  '        Text.Whitespace
'echo'        Name
'('           Punctuation
'"'           Literal.String
'Poor soul, you lost your name?' Literal.String
'"'           Literal.String
')'           Punctuation
'\n'          Text.Whitespace

'elif'        Keyword
' '           Text.Whitespace
'name'        Name
' '           Text.Whitespace
'='           Operator
'='           Operator
' '           Text.Whitespace
'"'           Literal.String
'name'        Literal.String
'"'           Literal.String
':'           Punctuation
'\n  '        Text.Whitespace
'echo'        Name
'('           Punctuation
'"'           Literal.String
'Very funny, your name is name.' Literal.String
'"'           Literal.String
')'           Punctuation
'\n'          Text.Whitespace

'else'        Keyword
':'           Punctuation
'\n  '        Text.Whitespace
'Echo'        Name
'('           Punctuation
'"'           Literal.String
'Hi, '        Literal.String
'"'           Literal.String
','           Punctuation
' '           Text.Whitespace
'name'        Name
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String
'!'           Literal.String
'"'           Literal.String
')'           Punctuation
'\n\n'        Text.Whitespace

'var'         Keyword.Declaration
' '           Text.Whitespace
'name'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'readLine'    Name
'('           Punctuation
'stdin'       Name
')'           Punctuation
'\n'          Text.Whitespace

'case'        Keyword
' '           Text.Whitespace
'name'        Name
'\n'          Text.Whitespace

'of'          Keyword
' '           Text.Whitespace
'"'           Name.Label
'"'           Name.Label
':'           Operator
'\n  '        Text.Whitespace
'echo'        Name
'('           Punctuation
'"'           Literal.String
'Poor soul, you lost your name?' Literal.String
'"'           Literal.String
')'           Punctuation
'\n'          Text.Whitespace

'of'          Keyword
' '           Text.Whitespace
'"'           Name.Label
'name'        Name.Label
'"'           Name.Label
':'           Operator
'\n  '        Text.Whitespace
'echo'        Name
'('           Punctuation
'"'           Literal.String
'Very funny, your name is name.' Literal.String
'"'           Literal.String
')'           Punctuation
'\n'          Text.Whitespace

'else'        Keyword
':'           Punctuation
'\n  '        Text.Whitespace
'Echo'        Name
'('           Punctuation
'"'           Literal.String
'Hi, '        Literal.String
'"'           Literal.String
','           Punctuation
' '           Text.Whitespace
'name'        Name
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String
'!'           Literal.String
'"'           Literal.String
')'           Punctuation
'\n\n'        Text.Whitespace

'from'        Keyword.Namespace
' '           Text.Whitespace
'strutils'    Name
' '           Text.Whitespace
'import'      Keyword.Namespace
' '           Text.Whitespace
'parseInt'    Name
'\n\n'        Text.Whitespace

'Echo'        Name
'('           Punctuation
'"'           Literal.String
'A number please: ' Literal.String
'"'           Literal.String
')'           Punctuation
'\n'          Text.Whitespace

'var'         Keyword.Declaration
' '           Text.Whitespace
'n'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'parseInt'    Name
'('           Punctuation
'readLine'    Name
'('           Punctuation
'stdin'       Name
')'           Punctuation
')'           Punctuation
'\n'          Text.Whitespace

'case'        Keyword
' '           Text.Whitespace
'n'           Name
'\n'          Text.Whitespace

'of'          Keyword
' '           Text.Whitespace
'0'           Name.Label
'.'           Name.Label
'.'           Name.Label
'2'           Name.Label
','           Punctuation
' '           Text.Whitespace
'4'           Name.Label
'.'           Name.Label
'.'           Name.Label
'7'           Name.Label
':'           Operator
' '           Text.Whitespace
'Echo'        Name
'('           Punctuation
'"'           Literal.String
'The number is in the set: {0, 1, 2, 4, 5, 6, 7}' Literal.String
'"'           Literal.String
')'           Punctuation
'\n'          Text.Whitespace

'of'          Keyword
' '           Text.Whitespace
'3'           Name.Label
','           Punctuation
' '           Text.Whitespace
'8'           Name.Label
':'           Operator
' '           Text.Whitespace
'Echo'        Name
'('           Punctuation
'"'           Literal.String
'The number is 3 or 8' Literal.String
'"'           Literal.String
')'           Punctuation
'\n\n'        Text.Whitespace

'Echo'        Name
'('           Punctuation
'"'           Literal.String
'Counting to 10: ' Literal.String
'"'           Literal.String
')'           Punctuation
'\n'          Text.Whitespace

'var'         Keyword.Declaration
' '           Text.Whitespace
'i'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'while'       Keyword
' '           Text.Whitespace
'i'           Name
' '           Text.Whitespace
'<'           Operator
'='           Operator
' '           Text.Whitespace
'10'          Literal.Number.Integer
':'           Punctuation
'\n  '        Text.Whitespace
'Echo'        Name
'('           Punctuation
'$'           Operator
'i'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'inc'         Name
'('           Punctuation
'i'           Name
')'           Punctuation
'\n\n'        Text.Whitespace

'proc'        Keyword
' '           Text.Whitespace
'yes'         Name.Function
'('           Punctuation
'question'    Name
':'           Punctuation
' '           Text.Whitespace
'string'      Name.Builtin
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'bool'        Name.Builtin
' '           Text.Whitespace
'='           Operator
'\n  '        Text.Whitespace
'Echo'        Name
'('           Punctuation
'question'    Name
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String
' (y/n)'      Literal.String
'"'           Literal.String
')'           Punctuation
'\n  '        Text.Whitespace
'while'       Keyword
' '           Text.Whitespace
'true'        Keyword.Pseudo
':'           Punctuation
'\n    '      Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'readLine'    Name
'('           Punctuation
'stdin'       Name
')'           Punctuation
'\n    '      Text.Whitespace
'of'          Keyword
' '           Text.Whitespace
'"'           Name.Label
'y'           Name.Label
'"'           Name.Label
','           Punctuation
' '           Text.Whitespace
'"'           Name.Label
'Y'           Name.Label
'"'           Name.Label
','           Punctuation
' '           Text.Whitespace
'"'           Name.Label
'yes'         Name.Label
'"'           Name.Label
','           Punctuation
' '           Text.Whitespace
'"'           Name.Label
'Yes'         Name.Label
'"'           Name.Label
':'           Operator
' '           Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'true'        Keyword.Pseudo
'\n    '      Text.Whitespace
'of'          Keyword
' '           Text.Whitespace
'"'           Name.Label
'n'           Name.Label
'"'           Name.Label
','           Punctuation
' '           Text.Whitespace
'"'           Name.Label
'N'           Name.Label
'"'           Name.Label
','           Punctuation
' '           Text.Whitespace
'"'           Name.Label
'no'          Name.Label
'"'           Name.Label
','           Punctuation
' '           Text.Whitespace
'"'           Name.Label
'No'          Name.Label
'"'           Name.Label
':'           Operator
' '           Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'false'       Keyword.Pseudo
'\n    '      Text.Whitespace
'else'        Keyword
':'           Punctuation
' '           Text.Whitespace
'Echo'        Name
'('           Punctuation
'"'           Literal.String
'Please be clear: yes or no' Literal.String
'"'           Literal.String
')'           Punctuation
'\n\n'        Text.Whitespace

'proc'        Keyword
' '           Text.Whitespace
'even'        Name.Function
'('           Punctuation
'n'           Name
':'           Punctuation
' '           Text.Whitespace
'int'         Name.Builtin
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'bool'        Name.Builtin
'\n\n'        Text.Whitespace

'proc'        Keyword
' '           Text.Whitespace
'odd'         Name.Function
'('           Punctuation
'n'           Name
':'           Punctuation
' '           Text.Whitespace
'int'         Name.Builtin
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'bool'        Name.Builtin
' '           Text.Whitespace
'='           Operator
'\n  '        Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'n'           Name
' '           Text.Whitespace
'='           Operator
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
':'           Punctuation
' '           Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'true'        Keyword.Pseudo
'\n  '        Text.Whitespace
'else'        Keyword
':'           Punctuation
' '           Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'even'        Name
'('           Punctuation
'n'           Name
'-'           Operator
'1'           Literal.Number.Integer
')'           Punctuation
'\n\n'        Text.Whitespace

'iterator'    Keyword
' '           Text.Whitespace
'countup'     Name
'('           Punctuation
'a'           Name
','           Punctuation
' '           Text.Whitespace
'b'           Name
':'           Punctuation
' '           Text.Whitespace
'int'         Name.Builtin
')'           Punctuation
':'           Punctuation
' '           Text.Whitespace
'int'         Name.Builtin
' '           Text.Whitespace
'='           Operator
'\n  '        Text.Whitespace
'var'         Keyword.Declaration
' '           Text.Whitespace
'res'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'a'           Name
'\n  '        Text.Whitespace
'while'       Keyword
' '           Text.Whitespace
'res'         Name
' '           Text.Whitespace
'<'           Operator
'='           Operator
' '           Text.Whitespace
'b'           Name
':'           Punctuation
'\n    '      Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'res'         Name
'\n    '      Text.Whitespace
'inc'         Name
'('           Punctuation
'res'         Name
')'           Punctuation
'\n\n'        Text.Whitespace

'type'        Keyword
'\n  '        Text.Whitespace
'TPerson'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'object'      Keyword
' '           Text.Whitespace
'of'          Keyword
' '           Text.Whitespace
'TObject'     Name
'\n    '      Text.Whitespace
'name'        Name
'*'           Operator
':'           Punctuation
' '           Text.Whitespace
'string'      Name.Builtin
'  '          Text.Whitespace
'# the * means that `name` is accessible from other modules' Comment
'\n    '      Text.Whitespace
'age'         Name
':'           Punctuation
' '           Text.Whitespace
'int'         Name.Builtin
'       '     Text.Whitespace
'# no * means that the field is hidden from other modules' Comment
'\n\n  '      Text.Whitespace
'TStudent'    Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'object'      Keyword
' '           Text.Whitespace
'of'          Keyword
' '           Text.Whitespace
'TPerson'     Name
' '           Text.Whitespace
'# TStudent inherits from TPerson' Comment
'\n    '      Text.Whitespace
'id'          Name
':'           Punctuation
' '           Text.Whitespace
'int'         Name.Builtin
'                    ' Text.Whitespace
'# with an id field' Comment
'\n\n'        Text.Whitespace

'var'         Keyword.Declaration
'\n  '        Text.Whitespace
'student'     Name
':'           Punctuation
' '           Text.Whitespace
'TStudent'    Name
'\n  '        Text.Whitespace
'person'      Name
':'           Punctuation
' '           Text.Whitespace
'TPerson'     Name
'\n'          Text.Whitespace

'assert'      Name
'('           Punctuation
'student'     Name
' '           Text.Whitespace
'is'          Operator.Word
' '           Text.Whitespace
'TStudent'    Name
')'           Punctuation
'\n\n'        Text.Whitespace

'echo'        Name
'('           Punctuation
'{'           Punctuation
"'"           Literal.String.Char
'a'           Literal.String.Char
"'"           Literal.String.Char
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Char
'b'           Literal.String.Char
"'"           Literal.String.Char
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Char
'c'           Literal.String.Char
"'"           Literal.String.Char
'}'           Punctuation
'.'           Punctuation
'card'        Name
')'           Punctuation
'\n'          Text.Whitespace

'stdout'      Name
'.'           Punctuation
'writeln'     Name
'('           Punctuation
'"'           Literal.String
'Hallo'       Literal.String
'"'           Literal.String
')'           Punctuation
'\n'          Text.Whitespace

'var'         Keyword.Declaration
'\n  '        Text.Whitespace
'f'           Name
':'           Punctuation
' '           Text.Whitespace
'TFile'       Name
'\n'          Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'open'        Name
'('           Punctuation
'f'           Name
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String
'numbers.txt' Literal.String
'"'           Literal.String
')'           Punctuation
':'           Punctuation
'\n  '        Text.Whitespace
'try'         Keyword
':'           Punctuation
'\n    '      Text.Whitespace
'var'         Keyword.Declaration
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'readLine'    Name
'('           Punctuation
'f'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'var'         Keyword.Declaration
' '           Text.Whitespace
'b'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'readLine'    Name
'('           Punctuation
'f'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'echo'        Name
'('           Punctuation
'"'           Literal.String
'sum: '       Literal.String
'"'           Literal.String
' '           Text.Whitespace
'&'           Operator
' '           Text.Whitespace
'$'           Operator
'('           Punctuation
'parseInt'    Name
'('           Punctuation
'a'           Name
')'           Punctuation
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'parseInt'    Name
'('           Punctuation
'b'           Name
')'           Punctuation
')'           Punctuation
')'           Punctuation
'\n  '        Text.Whitespace
'except'      Keyword
' '           Text.Whitespace
'EOverflow'   Name
':'           Punctuation
'\n    '      Text.Whitespace
'echo'        Name
'('           Punctuation
'"'           Literal.String
'overflow!'   Literal.String
'"'           Literal.String
')'           Punctuation
'\n  '        Text.Whitespace
'except'      Keyword
' '           Text.Whitespace
'EInvalidValue' Name
':'           Punctuation
'\n    '      Text.Whitespace
'echo'        Name
'('           Punctuation
'"'           Literal.String
'could not convert string to integer' Literal.String
'"'           Literal.String
')'           Punctuation
'\n  '        Text.Whitespace
'except'      Keyword
' '           Text.Whitespace
'EIO'         Name
':'           Punctuation
'\n    '      Text.Whitespace
'echo'        Name
'('           Punctuation
'"'           Literal.String
'IO error!'   Literal.String
'"'           Literal.String
')'           Punctuation
'\n  '        Text.Whitespace
'except'      Keyword
':'           Punctuation
'\n    '      Text.Whitespace
'echo'        Name
'('           Punctuation
'"'           Literal.String
'Unknown exception!' Literal.String
'"'           Literal.String
')'           Punctuation
'\n    '      Text.Whitespace
'# reraise the unknown exception:' Comment
'\n    '      Text.Whitespace
'raise'       Keyword
'\n  '        Text.Whitespace
'finally'     Keyword
':'           Punctuation
'\n    '      Text.Whitespace
'close'       Name
'('           Punctuation
'f'           Name
')'           Punctuation
'\n'          Text.Whitespace
