'# Examples taken from http://crystal-lang.org/docs/' Comment.Single
'\n'          Text.Whitespace

'# Copyright 2012-2018 Manas Technology Solutions.' Comment.Single
'\n'          Text.Whitespace

'# Updated on May 17th, 2018 by @faustinoaq.' Comment.Single
'\n\n'        Text.Whitespace

'require'     Keyword
' '           Text.Whitespace
'"'           Literal.String.Double
'http/server' Literal.String.Double
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

'server'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'HTTP'        Name
'::'          Operator
'Server'      Name
'.'           Operator
'new'         Name
'('           Punctuation
'8080'        Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'context'     Name
'|'           Operator
'\n  '        Text.Whitespace
'context'     Name
'.'           Operator
'response'    Name
'.'           Operator
'content_type' Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'text/plain'  Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'context'     Name
'.'           Operator
'response'    Name
'.'           Operator
'print'       Name
' '           Text.Whitespace
'"'           Literal.String.Double
'Hello world! The time is ' Literal.String.Double
'#{'          Literal.String.Interpol
'Time'        Name
'.'           Operator
'now'         Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Listening on http://0.0.0.0:8080' Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'server'      Name
'.'           Operator
'listen'      Name
'\n\n'        Text.Whitespace

'module'      Keyword
' '           Text.Whitespace
'HTTP'        Name.Namespace
'\n  '        Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'RequestHandler' Name.Class
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'NumericValue' Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Float32'     Name
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'Float64'     Name
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'Int64'       Name
'\n\n'        Text.Whitespace

'enum'        Keyword
' '           Text.Whitespace
'Time::'      Name.Namespace
'DayOfWeek'   Name.Class
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Greeting'    Name.Class
'\n  '        Text.Whitespace
'class_property' Name.Builtin.Pseudo
' '           Text.Whitespace
'global_greeting' Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'Hello world' Literal.String.Double
'"'           Literal.String.Double
'\n\n  '      Text.Whitespace
'@@default_greeting' Name.Variable.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'Hello world' Literal.String.Double
'"'           Literal.String.Double
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@custom_greeting' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Constant
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'print_greeting' Name.Function
'\n    '      Text.Whitespace
'greeting'    Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@custom_greeting' Name.Variable.Instance
' '           Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'@@default_greeting' Name.Variable.Class
'\n    '      Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'greeting'    Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'LUCKY_NUMBERS' Name.Constant
'     '       Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'3'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'7'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'11'          Literal.Number.Integer
']'           Operator
'\n'          Text.Whitespace

'DOCUMENTATION_URL' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'http://crystal-lang.org/docs' Literal.String.Double
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

'module'      Keyword
' '           Text.Whitespace
'Scorecard'   Name.Namespace
'\n  '        Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'Parser'      Name.Class
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'parse'       Name.Function
'('           Punctuation
'score_text'  Name
')'           Punctuation
'\n      '    Text.Whitespace
'begin'       Keyword
'\n        '  Text.Whitespace
'score_text'  Name
'.'           Operator
'scan'        Name
'('           Punctuation
'SCORE_PATTERN' Name.Constant
')'           Punctuation
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'match'       Name
'|'           Operator
'\n          ' Text.Whitespace
'handle_match' Name
'('           Punctuation
'match'       Name
')'           Punctuation
'\n        '  Text.Whitespace
'end'         Keyword
'\n      '    Text.Whitespace
'rescue'      Keyword
' '           Text.Whitespace
'err'         Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'ParseError'  Name
'\n        '  Text.Whitespace
'# handle error ...' Comment.Single
'\n      '    Text.Whitespace
'end'         Keyword
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'module'      Keyword
' '           Text.Whitespace
'Money'       Name.Namespace
'\n  '        Text.Whitespace
'CURRENCIES'  Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'\n    '      Text.Whitespace
'"'           Literal.String.Double
'EUR'         Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'1.0'         Literal.Number.Float
','           Punctuation
'\n    '      Text.Whitespace
'"'           Literal.String.Double
'ARS'         Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'10.55'       Literal.Number.Float
','           Punctuation
'\n    '      Text.Whitespace
'"'           Literal.String.Double
'USD'         Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'1.12'        Literal.Number.Float
','           Punctuation
'\n    '      Text.Whitespace
'"'           Literal.String.Double
'JPY'         Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'134.15'      Literal.Number.Float
','           Punctuation
'\n  '        Text.Whitespace
'}'           Punctuation
'\n\n  '      Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'Amount'      Name.Class
'\n    '      Text.Whitespace
'getter'      Name.Builtin.Pseudo
' '           Text.Whitespace
':currency'   Literal.String.Symbol
','           Punctuation
' '           Text.Whitespace
':value'      Literal.String.Symbol
'\n\n    '    Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@currency'   Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@value'      Name.Variable.Instance
')'           Punctuation
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'CurrencyConversion' Name.Class
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@amount'     Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@target_currency' Name.Variable.Instance
')'           Punctuation
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'amount'      Name.Function
'\n      '    Text.Whitespace
'# implement conversion ...' Comment.Single
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'i'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n'          Text.Whitespace

'while'       Keyword
' '           Text.Whitespace
'i'           Name
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'10'          Literal.Number.Integer
'\n  '        Text.Whitespace
'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'-'           Operator
'>'           Operator
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
' '           Text.Whitespace
'do'          Keyword
'\n    '      Text.Whitespace
'spawn'       Name.Builtin.Pseudo
' '           Text.Whitespace
'do'          Keyword
'\n      '    Text.Whitespace
'puts'        Name.Builtin
'('           Punctuation
'x'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'proc'        Name
'.'           Operator
'call'        Name
'('           Punctuation
'i'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'i'           Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'Fiber'       Name
'.'           Operator
'yield'       Name
'\n\n'        Text.Whitespace

'# A buffered channel of capacity 2' Comment.Single
'\n'          Text.Whitespace

'channel'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Channel'     Name
'('           Punctuation
'Int32'       Name
')'           Punctuation
'.'           Operator
'new'         Name
'('           Punctuation
'2'           Literal.Number.Integer
')'           Punctuation
'\n\n'        Text.Whitespace

'spawn'       Name.Builtin.Pseudo
' '           Text.Whitespace
'do'          Keyword
'\n  '        Text.Whitespace
'channel'     Name
'.'           Operator
'send'        Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
'\n  '        Text.Whitespace
'channel'     Name
'.'           Operator
'send'        Name
'('           Punctuation
'2'           Literal.Number.Integer
')'           Punctuation
'\n  '        Text.Whitespace
'channel'     Name
'.'           Operator
'send'        Name
'('           Punctuation
'3'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'3'           Literal.Number.Integer
'.'           Operator
'times'       Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'channel'     Name
'.'           Operator
'receive'     Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'MyDictionary' Name.Class
'('           Punctuation
'K'           Name
','           Punctuation
' '           Text.Whitespace
'V'           Name
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'MyBox'       Name
'.'           Operator
'new'         Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
'       '     Text.Whitespace
'# :: MyBox(Int32)' Comment.Single
'\n'          Text.Whitespace

'MyBox'       Name
'.'           Operator
'new'         Name
'('           Punctuation
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
' '           Text.Whitespace
'# :: MyBox(String)' Comment.Single
'\n\n'        Text.Whitespace

'module'      Keyword
' '           Text.Whitespace
'Moo'         Name.Namespace
'('           Punctuation
'T'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
't'           Name.Function
'\n    '      Text.Whitespace
'T'           Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Foo'         Name.Class
'('           Punctuation
'U'           Name.Class
')'           Punctuation
'\n  '        Text.Whitespace
'include'     Keyword
' '           Text.Whitespace
'Moo'         Name
'('           Punctuation
'U'           Name
')'           Punctuation
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@value'      Name.Variable.Instance
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'U'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Foo'         Name
'.'           Operator
'new'         Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'foo'         Name
'.'           Operator
't'           Name
' '           Text.Whitespace
'# Int32'     Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Parent'      Name.Class
'('           Punctuation
'T'           Name.Class
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Int32Child'  Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Parent'      Name
'('           Punctuation
'Int32'       Name
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'GenericChild' Name.Class
'('           Punctuation
'T'           Name.Class
')'           Punctuation
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Parent'      Name
'('           Punctuation
'T'           Name
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'ptr'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'pointerof'   Keyword.Pseudo
'('           Punctuation
'a'           Name
')'           Punctuation
'\n'          Text.Whitespace

'ptr'         Name
'['           Operator
'100_000'     Literal.Number.Integer
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'# undefined behaviour, probably a segmentation fault' Comment.Single
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'Int32OrString' Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'String'      Name
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'Int32OrNil'  Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Int32?'      Name
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'Int32OrNil_' Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'::'          Operator
'Nil'         Name
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'Int32Ptr'    Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Int32'       Name
'*'           Operator
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'Int32Ptr_'   Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Pointer'     Name
'('           Punctuation
'Int32'       Name
')'           Punctuation
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'Int32_8'     Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Int32'       Name
'['           Operator
'8'           Literal.Number.Integer
']'           Operator
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'Int32_8_'    Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'StaticArray' Name
'('           Punctuation
'Int32'       Name
','           Punctuation
' '           Text.Whitespace
'8'           Literal.Number.Integer
')'           Punctuation
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'Int32StringTuple' Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'Int32'       Name
','           Punctuation
' '           Text.Whitespace
'String'      Name
'}'           Punctuation
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'Int32StringTuple_' Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Tuple'       Name
'('           Punctuation
'Int32'       Name
','           Punctuation
' '           Text.Whitespace
'String'      Name
')'           Punctuation
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'Int32ToString' Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'-'           Operator
'>'           Operator
' '           Text.Whitespace
'String'      Name
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'Int32ToString_' Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Proc'        Name
'('           Punctuation
'Int32'       Name
','           Punctuation
' '           Text.Whitespace
'String'      Name
')'           Punctuation
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'ProcThatReturnsInt32' Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'-'           Operator
'>'           Operator
' '           Text.Whitespace
'Int32'       Name
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'Int32AndCharToString' Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Int32'       Name
','           Punctuation
' '           Text.Whitespace
'Char'        Name
' '           Text.Whitespace
'-'           Operator
'>'           Operator
' '           Text.Whitespace
'String'      Name
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'ComplexProc' Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'('           Punctuation
'Int32'       Name
' '           Text.Whitespace
'-'           Operator
'>'           Operator
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
' '           Text.Whitespace
'-'           Operator
'>'           Operator
' '           Text.Whitespace
'String'      Name
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'"'           Literal.String.Double
'instance'    Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'.'           Operator
'class'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'"'           Literal.String.Double
'class'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
'     '       Text.Whitespace
'# "instance"' Comment.Single
'\n'          Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'# "class"'   Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Parent'      Name.Class
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Child1'      Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Parent'      Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Child2'      Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Parent'      Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'ary'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
' '           Text.Whitespace
'of'          Keyword
' '           Text.Whitespace
'Parent'      Name
'.'           Operator
'class'       Name
'\n'          Text.Whitespace

'ary'         Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'Child1'      Name
'\n'          Text.Whitespace

'ary'         Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'Child2'      Name
'\n\n'        Text.Whitespace

'# Same as not specifying a restriction, not very useful' Comment.Single
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'_'           Name
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# A bit more useful: any two arguments Proc that returns an Int32:' Comment.Single
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'_'           Name
','           Punctuation
' '           Text.Whitespace
'_'           Name
' '           Text.Whitespace
'-'           Operator
'>'           Operator
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# alias SameAsInt32 = typeof(2)' Comment.Single
'\n'          Text.Whitespace

'# alias Int32OrString_ = typeof(1, "a")' Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'name'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'@name'       Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'name'        Name
'\n    '      Text.Whitespace
'@age'        Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'name'        Name.Function
'\n    '      Text.Whitespace
'@name'       Name.Variable.Instance
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'age'         Name.Function
'\n    '      Text.Whitespace
'@age'        Name.Variable.Instance
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'john'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'peter'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'Peter'       Literal.String.Double
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

'john'        Name
'.'           Operator
'name'        Name
' '           Text.Whitespace
'# => "John"' Comment.Single
'\n'          Text.Whitespace

'john'        Name
'.'           Operator
'age'         Name
'  '          Text.Whitespace
'# => 0'      Comment.Single
'\n\n'        Text.Whitespace

'peter'       Name
'.'           Operator
'name'        Name
' '           Text.Whitespace
'# => "Peter"' Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'new'         Name.Function
'('           Punctuation
'name'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'instance'    Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'allocate'    Name
'\n    '      Text.Whitespace
'instance'    Name
'.'           Operator
'initialize'  Name
'('           Punctuation
'name'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'instance'    Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'a'           Name
'.is_a?'      Keyword.Pseudo
'('           Punctuation
'String'      Name
')'           Punctuation
'\n  '        Text.Whitespace
'# here a is a String' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'b'           Name
'.is_a?'      Keyword.Pseudo
'('           Punctuation
'Number'      Name
')'           Punctuation
'\n  '        Text.Whitespace
'# here b is a Number' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'some_condition' Name
' '           Text.Whitespace
'?'           Punctuation
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'# a : Int32 | String' Comment.Single
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'a'           Name
'.is_a?'      Keyword.Pseudo
'('           Punctuation
'Number'      Name
')'           Punctuation
'\n  '        Text.Whitespace
'# a : Int32' Comment.Single
'\n'          Text.Whitespace

'else'        Keyword
'\n  '        Text.Whitespace
'# a : String' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'a'           Name
'.is_a?'      Keyword.Pseudo
'('           Punctuation
'String'      Name
')'           Punctuation
' '           Text.Whitespace
'&&'          Operator
' '           Text.Whitespace
'b'           Name
'.is_a?'      Keyword.Pseudo
'('           Punctuation
'Number'      Name
')'           Punctuation
'\n  '        Text.Whitespace
'# here a is a String and b is a Number' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'a'           Name
'.'           Operator
'+'           Name.Operator
'('           Punctuation
'b'           Name
')'           Punctuation
'\n\n'        Text.Whitespace

'struct'      Keyword
' '           Text.Whitespace
'Vector2'     Name.Class
'\n  '        Text.Whitespace
'getter'      Name.Builtin.Pseudo
' '           Text.Whitespace
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@x'          Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@y'          Name.Variable.Instance
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'+'           Name.Function
'('           Punctuation
'other'       Name
')'           Punctuation
'\n    '      Text.Whitespace
'Vector2'     Name
'.'           Operator
'new'         Name
'('           Punctuation
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'other'       Name
'.'           Operator
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'other'       Name
'.'           Operator
'y'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'v1'          Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Vector2'     Name
'.'           Operator
'new'         Name
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'v2'          Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Vector2'     Name
'.'           Operator
'new'         Name
'('           Punctuation
'3'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'4'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'v1'          Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'v2'          Name
' '           Text.Whitespace
'# => Vector2(@x=4, @y=6)' Comment.Single
'\n\n'        Text.Whitespace

'struct'      Keyword
' '           Text.Whitespace
'Vector2'     Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'-'           Name.Function
'\n    '      Text.Whitespace
'Vector2'     Name
'.'           Operator
'new'         Name
'('           Punctuation
'-'           Operator
'x'           Name
','           Punctuation
' '           Text.Whitespace
'-'           Operator
'y'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'v1'          Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Vector2'     Name
'.'           Operator
'new'         Name
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'-'           Operator
'v1'          Name
' '           Text.Whitespace
'# => Vector2(@x=-1, @y=-2)' Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'MyArray'     Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'[]'          Name.Function
'('           Punctuation
'index'       Name
')'           Punctuation
'\n    '      Text.Whitespace
'# ...'       Comment.Single
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'[]'          Name.Function
'('           Punctuation
'index1'      Name
','           Punctuation
' '           Text.Whitespace
'index2'      Name
','           Punctuation
' '           Text.Whitespace
'index3'      Name
')'           Punctuation
'\n    '      Text.Whitespace
'# ...'       Comment.Single
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'[]='         Name.Function
'('           Punctuation
'index'       Name
','           Punctuation
' '           Text.Whitespace
'value'       Name
')'           Punctuation
'\n    '      Text.Whitespace
'# ...'       Comment.Single
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'array'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'MyArray'     Name
'.'           Operator
'new'         Name
'\n\n'        Text.Whitespace

'array'       Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
'       '     Text.Whitespace
'# invokes the first method' Comment.Single
'\n'          Text.Whitespace

'array'       Name
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
']'           Operator
' '           Text.Whitespace
'# invokes the second method' Comment.Single
'\n'          Text.Whitespace

'array'       Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'   '         Text.Whitespace
'# invokes the third method' Comment.Single
'\n\n'        Text.Whitespace

'array'       Name
'.'           Operator
'[]'          Name.Operator
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
'       '     Text.Whitespace
'# invokes the first method' Comment.Single
'\n'          Text.Whitespace

'array'       Name
'.'           Operator
'[]'          Name.Operator
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# invokes the second method' Comment.Single
'\n'          Text.Whitespace

'array'       Name
'.'           Operator
'[]='         Name.Operator
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'   '         Text.Whitespace
'# invokes the third method' Comment.Single
'\n\n'        Text.Whitespace

'raise'       Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'OH NO!'      Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'raise'       Name.Builtin
' '           Text.Whitespace
'Exception'   Name
'.'           Operator
'new'         Name
'('           Punctuation
'"'           Literal.String.Double
'Some error'  Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'MyException' Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Exception'   Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'begin'       Keyword
'\n  '        Text.Whitespace
'raise'       Name.Builtin
' '           Text.Whitespace
'MyException' Name
'.'           Operator
'new'         Name
'('           Punctuation
'"'           Literal.String.Double
'OH NO!'      Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n'          Text.Whitespace

'rescue'      Keyword
' '           Text.Whitespace
'ex'          Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'MyException' Name
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Rescued MyException: ' Literal.String.Double
'#{'          Literal.String.Interpol
'ex'          Name
'.'           Operator
'message'     Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'begin'       Keyword
'\n  '        Text.Whitespace
'# ...'       Comment.Single
'\n'          Text.Whitespace

'rescue'      Keyword
' '           Text.Whitespace
'ex'          Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'MyException' Name
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'MyOtherException' Name
'\n  '        Text.Whitespace
'# only MyException or MyOtherException' Comment.Single
'\n'          Text.Whitespace

'rescue'      Keyword
'\n  '        Text.Whitespace
'# any other kind of exception' Comment.Single
'\n'          Text.Whitespace

'ensure'      Keyword
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Cleanup...'  Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'some_method' Name.Function
'\n  '        Text.Whitespace
'something_dangerous' Name
'\n'          Text.Whitespace

'rescue'      Keyword
'\n  '        Text.Whitespace
'# execute if an exception is raised' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'array'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
']'           Operator
'\n'          Text.Whitespace

'array'       Name
'['           Operator
'4'           Literal.Number.Integer
']'           Operator
'  '          Text.Whitespace
'# raises because of IndexError' Comment.Single
'\n'          Text.Whitespace

'array'       Name
'['           Operator
'4'           Literal.Number.Integer
']?'          Operator
' '           Text.Whitespace
'# returns nil because of index out of bounds' Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'some_proc'   Name.Function
'('           Punctuation
'&'           Operator
'block'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'-'           Operator
'>'           Operator
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'block'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n'          Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'-'           Operator
'>'           Operator
'('           Punctuation
'i'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'i'           Name
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'some_proc'   Name
'('           Punctuation
'&'           Operator
'proc'        Name
')'           Punctuation
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
'  '          Text.Whitespace
'# => 1'      Comment.Single
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
'('           Punctuation
'10'          Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# => 11'     Comment.Single
'\n'          Text.Whitespace

'x'           Name
'             ' Text.Whitespace
'# => 11'     Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'add'         Name.Function
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'adder'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'-'           Operator
'>'           Operator
'add'         Name
'('           Punctuation
'Int32'       Name
','           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
'\n'          Text.Whitespace

'adder'       Name
'.'           Operator
'call'        Name
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# => 3'      Comment.Single
'\n\n'        Text.Whitespace

'module'      Keyword
' '           Text.Whitespace
'Curses'      Name.Namespace
'\n  '        Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'Window'      Name.Class
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'Curses'      Name
'::'          Operator
'Window'      Name
'.'           Operator
'new'         Name
'\n\n'        Text.Whitespace

'module'      Keyword
' '           Text.Whitespace
'ItemsSize'   Name.Namespace
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'size'        Name.Function
'\n    '      Text.Whitespace
'items'       Name
'.'           Operator
'size'        Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Items'       Name.Class
'\n  '        Text.Whitespace
'include'     Keyword
' '           Text.Whitespace
'ItemsSize'   Name
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'items'       Name.Function
'\n    '      Text.Whitespace
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
']'           Operator
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'items'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Items'       Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'items'       Name
'.'           Operator
'size'        Name
' '           Text.Whitespace
'# => 3'      Comment.Single
'\n\n'        Text.Whitespace

'module'      Keyword
' '           Text.Whitespace
'Base64'      Name.Namespace
'\n  '        Text.Whitespace
'extend'      Keyword
' '           Text.Whitespace
'self'        Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'encode64'    Name.Function
'('           Punctuation
'string'      Name
')'           Punctuation
'\n    '      Text.Whitespace
'# ...'       Comment.Single
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'decode64'    Name.Function
'('           Punctuation
'string'      Name
')'           Punctuation
'\n    '      Text.Whitespace
'# ...'       Comment.Single
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'Base64'      Name
'.'           Operator
'encode64'    Name
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# => "aGVsbG8="' Comment.Single
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'some_condition' Name
'\n  '        Text.Whitespace
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'else'        Keyword
'\n  '        Text.Whitespace
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'a_as_int'    Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'a'           Name
'.as'         Keyword.Pseudo
'('           Punctuation
'Int32'       Name
')'           Punctuation
'\n'          Text.Whitespace

'a_as_int'    Name
'.'           Operator
'abs'         Name
' '           Text.Whitespace
'# works, compiler knows that a_as_int is Int32' Comment.Single
'\n\n'        Text.Whitespace

'ptr'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Pointer'     Name
'('           Punctuation
'Int32'       Name
')'           Punctuation
'.'           Operator
'malloc'      Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'ptr'         Name
'.as'         Keyword.Pseudo
'('           Punctuation
'Int8'        Name
'*'           Operator
')'           Punctuation
' '           Text.Whitespace
'# :: Pointer(Int8)' Comment.Single
'\n\n'        Text.Whitespace

'array'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
']'           Operator
'\n\n'        Text.Whitespace

'# object_id returns the address of an object in memory,' Comment.Single
'\n'          Text.Whitespace

'# so we create a pointer with that address' Comment.Single
'\n'          Text.Whitespace

'ptr'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Pointer'     Name
'('           Punctuation
'Void'        Name
')'           Punctuation
'.'           Operator
'new'         Name
'('           Punctuation
'array'       Name
'.'           Operator
'object_id'   Name
')'           Punctuation
'\n\n'        Text.Whitespace

'# Now we cast that pointer to the same type, and' Comment.Single
'\n'          Text.Whitespace

'# we should get the same value' Comment.Single
'\n'          Text.Whitespace

'array2'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'ptr'         Name
'.as'         Keyword.Pseudo
'('           Punctuation
'Array'       Name
'('           Punctuation
'Int32'       Name
')'           Punctuation
')'           Punctuation
'\n'          Text.Whitespace

'array2'      Name
'.'           Operator
'same?'       Name
'('           Punctuation
'array'       Name
')'           Punctuation
' '           Text.Whitespace
'# => true'   Comment.Single
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'b'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'a'           Name
'.as'         Keyword.Pseudo
'('           Punctuation
'Int32'       Name
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'Float64'     Name
')'           Punctuation
'\n'          Text.Whitespace

'b'           Name
' '           Text.Whitespace
'# :: Int32 | Float64' Comment.Single
'\n\n'        Text.Whitespace

'ary'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
']'           Operator
'\n\n'        Text.Whitespace

'# We want to create an array 1, 2, 3 of Int32 | Float64' Comment.Single
'\n'          Text.Whitespace

'ary2'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'ary'         Name
'.'           Operator
'map'         Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'x'           Name
'|'           Operator
' '           Text.Whitespace
'x'           Name
'.as'         Keyword.Pseudo
'('           Punctuation
'Int32'       Name
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'Float64'     Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n\n'        Text.Whitespace

'ary2'        Name
'        '    Text.Whitespace
'# :: Array(Int32 | Float64)' Comment.Single
'\n'          Text.Whitespace

'ary2'        Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'1.5'         Literal.Number.Float
' '           Text.Whitespace
'# OK'        Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@name'       Name.Variable.Instance
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'name'        Name.Function
'\n    '      Text.Whitespace
'@name'       Name.Variable.Instance
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
' '           Text.Whitespace
'of'          Keyword
' '           Text.Whitespace
'Person'      Name
'\n'          Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'a'           Name
'.'           Operator
'map'         Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'f'           Name
'|'           Operator
' '           Text.Whitespace
'f'           Name
'.'           Operator
'name'        Name
' '           Text.Whitespace
'}'           Punctuation
' '           Text.Whitespace
"# Error: can't infer block return type" Comment.Single
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
' '           Text.Whitespace
'of'          Keyword
' '           Text.Whitespace
'Person'      Name
'\n'          Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'a'           Name
'.'           Operator
'map'         Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'f'           Name
'|'           Operator
' '           Text.Whitespace
'f'           Name
'.'           Operator
'name'        Name
'.as'         Keyword.Pseudo
'('           Punctuation
'String'      Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
' '           Text.Whitespace
'# OK'        Comment.Single
'\n\n'        Text.Whitespace

'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
' '           Text.Whitespace
'of'          Keyword
' '           Text.Whitespace
'Person'      Name
'\n'          Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'a'           Name
'.'           Operator
'map'         Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'f'           Name
'|'           Operator
' '           Text.Whitespace
'f'           Name
'.'           Operator
'name'        Name
' '           Text.Whitespace
'}'           Punctuation
' '           Text.Whitespace
'# OK'        Comment.Single
'\n\n'        Text.Whitespace

'loop'        Name.Builtin
' '           Text.Whitespace
'do'          Keyword
'\n  '        Text.Whitespace
'do_something' Name
'\n  '        Text.Whitespace
'break'       Keyword
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'some_condition' Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Point'       Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@x'          Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@y'          Name.Variable.Instance
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'Point'       Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'# 2 x Int32 = 2 x 4 = 8' Comment.Single
'\n'          Text.Whitespace

'instance_sizeof' Keyword.Pseudo
'('           Punctuation
'Point'       Name
')'           Punctuation
' '           Text.Whitespace
'# => 12'     Comment.Single
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'while'       Keyword
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'5'           Literal.Number.Integer
'\n  '        Text.Whitespace
'a'           Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'3'           Literal.Number.Integer
'\n    '      Text.Whitespace
'next'        Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'a'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# The above prints the numbers 2, 4 and 5' Comment.Single
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'C'           Name.Namespace
'\n  '        Text.Whitespace
'# In C: double cos(double x)' Comment.Single
'\n  '        Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'cos'         Name.Function
'('           Punctuation
'value'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Float64'     Name
')'           Punctuation
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Float64'     Name
'\n\n  '      Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'getch'       Name.Function
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'\n\n  '      Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'srand'       Name.Function
'('           Punctuation
'seed'        Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'UInt32'      Name
')'           Punctuation
'\n\n  '      Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'exit'        Name.Function
'('           Punctuation
'status'      Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'NoReturn'    Name
'\n\n  '      Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'printf'      Name.Function
'('           Punctuation
'format'      Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'UInt8'       Name
'*'           Operator
','           Punctuation
' '           Text.Whitespace
'...'         Operator
')'           Punctuation
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'C'           Name
'.'           Operator
'cos'         Name
'('           Punctuation
'1.5'         Literal.Number.Float
')'           Punctuation
' '           Text.Whitespace
'# => 0.0707372' Comment.Single
'\n'          Text.Whitespace

'C'           Name
'.'           Operator
'srand'       Name
'('           Punctuation
'1_u32'       Literal.Number.Integer
')'           Punctuation
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'b'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'C'           Name
'.'           Operator
'printf'      Name
' '           Text.Whitespace
'"'           Literal.String.Double
'%d + %d = %d' Literal.String.Double
'\\n'         Literal.String.Escape
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'a'           Name
','           Punctuation
' '           Text.Whitespace
'b'           Name
','           Punctuation
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'b'           Name
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'LibSDL'      Name.Namespace
'\n  '        Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'init'        Name.Function
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'SDL_Init'    Name
'('           Punctuation
'flags'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'UInt32'      Name
')'           Punctuation
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'LLVMIntrinsics' Name.Namespace
'\n  '        Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'ceil_f32'    Name.Function
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'llvm.ceil.f32' Literal.String.Double
'"'           Literal.String.Double
'('           Punctuation
'value'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Float32'     Name
')'           Punctuation
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Float32'     Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'MyLib'       Name.Namespace
'\n  '        Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'my_fun'      Name.Function
'('           Punctuation
'some_size'   Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'LibC'        Name
'::'          Operator
'SizeT'       Name
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'@['          Operator
'Link'        Name.Decorator
'('           Punctuation
'"'           Literal.String.Double
'pcre'        Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
']'           Operator
'\n'          Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'LibPCRE'     Name.Namespace
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'C'           Name.Namespace
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'flag?'       Name
'('           Punctuation
':x86_64'     Literal.String.Symbol
')'           Punctuation
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'alias'       Keyword
' '           Text.Whitespace
'SizeT'       Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'UInt64'      Name
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'alias'       Keyword
' '           Text.Whitespace
'SizeT'       Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'UInt32'      Name
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n\n  '      Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'memcmp'      Name.Function
'('           Punctuation
'p1'          Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Void'        Name
'*'           Operator
','           Punctuation
' '           Text.Whitespace
'p2'          Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Void'        Name
'*'           Operator
','           Punctuation
' '           Text.Whitespace
'size'        Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'C'           Name
'::'          Operator
'SizeT'       Name
')'           Punctuation
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'X'           Name.Namespace
'\n  '        Text.Whitespace
'enum'        Keyword
' '           Text.Whitespace
'SomeEnum'    Name.Class
'\n    '      Text.Whitespace
'Ten'         Name
'       '     Text.Whitespace
'='           Operator
' '           Text.Whitespace
'10'          Literal.Number.Integer
'\n    '      Text.Whitespace
'Twenty'      Name
'    '        Text.Whitespace
'='           Operator
' '           Text.Whitespace
'10'          Literal.Number.Integer
' '           Text.Whitespace
'*'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n    '      Text.Whitespace
'ThirtyTwo'   Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'5'           Literal.Number.Integer
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'X'           Name.Namespace
'\n  '        Text.Whitespace
'enum'        Keyword
' '           Text.Whitespace
'SomeEnum'    Name.Class
'\n    '      Text.Whitespace
'A'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1_u32'       Literal.Number.Integer
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'X'           Name
'::'          Operator
'SomeEnum'    Name
'::'          Operator
'Zero'        Name
' '           Text.Whitespace
'# => 0_i8'   Comment.Single
'\n'          Text.Whitespace

'X'           Name
'::'          Operator
'SomeEnum'    Name
'::'          Operator
'Two'         Name
'  '          Text.Whitespace
'# => 2_i8'   Comment.Single
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'X'           Name.Namespace
'\n  '        Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'callback'    Name.Function
'('           Punctuation
'f'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'-'           Operator
'>'           Operator
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'f'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'-'           Operator
'>'           Operator
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'X'           Name
'.'           Operator
'callback'    Name
'('           Punctuation
'f'           Name
')'           Punctuation
'\n\n'        Text.Whitespace

'X'           Name
'.'           Operator
'callback'    Name
' '           Text.Whitespace
'-'           Operator
'>'           Operator
'('           Punctuation
'x'           Name
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'}'           Punctuation
'\n\n'        Text.Whitespace

'X'           Name
'.'           Operator
'callback'    Name
' '           Text.Whitespace
'nil'         Keyword.Constant
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'LibFoo'      Name.Namespace
'\n  '        Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'store_callback' Name.Function
'('           Punctuation
'callback'    Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'-'           Operator
'>'           Operator
')'           Punctuation
'\n  '        Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'execute_callback' Name.Function
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'LibFoo'      Name
'.'           Operator
'store_callback' Name
' '           Text.Whitespace
'-'           Operator
'>'           Operator
'{'           Punctuation
' '           Text.Whitespace
'raise'       Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'OH NO!'      Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'LibFoo'      Name
'.'           Operator
'execute_callback' Name
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'LibFoo'      Name.Namespace
'\n  '        Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'store_callback' Name.Function
'('           Punctuation
'callback'    Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'-'           Operator
'>'           Operator
')'           Punctuation
'\n\n  '      Text.Whitespace
'@['          Operator
'Raises'      Name.Decorator
']'           Operator
'\n  '        Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'execute_callback' Name.Function
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'@['          Operator
'Link'        Name.Decorator
'('           Punctuation
'"'           Literal.String.Double
'pcre'        Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
']'           Operator
'\n'          Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'PCRE'        Name.Namespace
'\n  '        Text.Whitespace
'INFO_CAPTURECOUNT' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'PCRE'        Name
'::'          Operator
'INFO_CAPTURECOUNT' Name.Constant
' '           Text.Whitespace
'# => 2'      Comment.Single
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'U'           Name.Namespace
'\n  '        Text.Whitespace
'# In C:'     Comment.Single
'\n  '        Text.Whitespace
'#'           Comment.Single
'\n  '        Text.Whitespace
'#  union IntOrFloat {' Comment.Single
'\n  '        Text.Whitespace
'#    int some_int;' Comment.Single
'\n  '        Text.Whitespace
'#    double some_float;' Comment.Single
'\n  '        Text.Whitespace
'#  };'       Comment.Single
'\n  '        Text.Whitespace
'union'       Keyword
' '           Text.Whitespace
'IntOrFloat'  Name.Class
'\n    '      Text.Whitespace
'some_int'    Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'\n    '      Text.Whitespace
'some_float'  Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Float64'     Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'value'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'U'           Name
'::'          Operator
'IntOrFloat'  Name
'.'           Operator
'new'         Name
'\n\n'        Text.Whitespace

'value'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'uninitialized' Keyword.Pseudo
' '           Text.Whitespace
'U'           Name
'::'          Operator
'IntOrFlaot'  Name
'\n'          Text.Whitespace

'value'       Name
'.'           Operator
'some_int'    Name
' '           Text.Whitespace
'# => some garbage value' Comment.Single
'\n\n'        Text.Whitespace

'value'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'U'           Name
'::'          Operator
'IntOrFloat'  Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'value'       Name
'.'           Operator
'some_int'    Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'value'       Name
'.'           Operator
'some_int'    Name
'   '         Text.Whitespace
'# => 1'      Comment.Single
'\n'          Text.Whitespace

'value'       Name
'.'           Operator
'some_float'  Name
' '           Text.Whitespace
'# => 4.94066e-324' Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'change_it'   Name.Function
'('           Punctuation
'value'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'value'       Name
'.'           Operator
'some_int'    Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'value'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'U'           Name
'::'          Operator
'IntOrFloat'  Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'change_it'   Name
' '           Text.Whitespace
'value'       Name
'\n'          Text.Whitespace

'value'       Name
'.'           Operator
'some_int'    Name
' '           Text.Whitespace
'# => 0'      Comment.Single
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'C'           Name.Namespace
'\n  '        Text.Whitespace
'# In C:'     Comment.Single
'\n  '        Text.Whitespace
'#'           Comment.Single
'\n  '        Text.Whitespace
'#  struct TimeZone {' Comment.Single
'\n  '        Text.Whitespace
'#    int minutes_west;' Comment.Single
'\n  '        Text.Whitespace
'#    int dst_time;' Comment.Single
'\n  '        Text.Whitespace
'#  };'       Comment.Single
'\n  '        Text.Whitespace
'struct'      Keyword
' '           Text.Whitespace
'TimeZone'    Name.Class
'\n    '      Text.Whitespace
'minutes_west' Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'\n    '      Text.Whitespace
'dst_time'    Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'C'           Name.Namespace
'\n  '        Text.Whitespace
'# This is a forward declaration' Comment.Single
'\n  '        Text.Whitespace
'struct'      Keyword
' '           Text.Whitespace
'Node'        Name.Class
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'struct'      Keyword
' '           Text.Whitespace
'Node'        Name.Class
'\n    '      Text.Whitespace
'node'        Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Node'        Name
'*'           Operator
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'tz'          Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'C'           Name
'::'          Operator
'TimeZone'    Name
'.'           Operator
'new'         Name
'\n\n'        Text.Whitespace

'tz'          Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'uninitialized' Keyword.Pseudo
' '           Text.Whitespace
'C'           Name
'::'          Operator
'TimeZone'    Name
'\n'          Text.Whitespace

'tz'          Name
'.'           Operator
'minutes_west' Name
' '           Text.Whitespace
'# => some garbage value' Comment.Single
'\n\n'        Text.Whitespace

'tz'          Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'C'           Name
'::'          Operator
'TimeZone'    Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'tz'          Name
'.'           Operator
'minutes_west' Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'tz'          Name
'.'           Operator
'minutes_west' Name
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n\n'        Text.Whitespace

'tz'          Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'C'           Name
'::'          Operator
'TimeZone'    Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'minutes_west' Literal.String.Symbol
':'           Punctuation
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'dst_time'    Literal.String.Symbol
':'           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'tz'          Name
'.'           Operator
'minutes_west' Name
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n'          Text.Whitespace

'tz'          Name
'.'           Operator
'dst_time'    Name
'     '       Text.Whitespace
'# => 2'      Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'change_it'   Name.Function
'('           Punctuation
'tz'          Name
')'           Punctuation
'\n  '        Text.Whitespace
'tz'          Name
'.'           Operator
'minutes_west' Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'tz'          Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'C'           Name
'::'          Operator
'TimeZone'    Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'change_it'   Name
' '           Text.Whitespace
'tz'          Name
'\n'          Text.Whitespace

'tz'          Name
'.'           Operator
'minutes_west' Name
' '           Text.Whitespace
'# => 0'      Comment.Single
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'C'           Name.Namespace
'\n  '        Text.Whitespace
'$errno'      Name.Variable.Global
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'C'           Name
'.'           Operator
'errno'       Name
' '           Text.Whitespace
'# => some value' Comment.Single
'\n'          Text.Whitespace

'C'           Name
'.'           Operator
'errno'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n'          Text.Whitespace

'C'           Name
'.'           Operator
'errno'       Name
' '           Text.Whitespace
'# => 0'      Comment.Single
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'C'           Name.Namespace
'\n  '        Text.Whitespace
'@['          Operator
'ThreadLocal' Name.Decorator
']'           Operator
'\n  '        Text.Whitespace
'$errno'      Name.Variable.Global
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'C'           Name.Namespace
'\n  '        Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'waitpid'     Name.Function
'('           Punctuation
'pid'         Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
','           Punctuation
' '           Text.Whitespace
'status_ptr'  Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'*'           Operator
','           Punctuation
' '           Text.Whitespace
'options'     Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'status_ptr'  Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'uninitialized' Keyword.Pseudo
' '           Text.Whitespace
'Int32'       Name
'\n\n'        Text.Whitespace

'C'           Name
'.'           Operator
'waitpid'     Name
'('           Punctuation
'pid'         Name
','           Punctuation
' '           Text.Whitespace
'pointerof'   Keyword.Pseudo
'('           Punctuation
'status_ptr'  Name
')'           Punctuation
','           Punctuation
' '           Text.Whitespace
'options'     Name
')'           Punctuation
'\n\n'        Text.Whitespace

'C'           Name
'.'           Operator
'waitpid'     Name
'('           Punctuation
'pid'         Name
','           Punctuation
' '           Text.Whitespace
'out'         Keyword.Pseudo
' '           Text.Whitespace
'status_ptr'  Name
','           Punctuation
' '           Text.Whitespace
'options'     Name
')'           Punctuation
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'X'           Name.Namespace
'\n  '        Text.Whitespace
'type'        Keyword
' '           Text.Whitespace
'CInt'        Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Int32'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'{%'          Literal.String.Interpol
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'flag?'       Name
'('           Punctuation
':x86_64'     Literal.String.Symbol
')'           Punctuation
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n  '        Text.Whitespace
'# some specific code for 64 bits platforms' Comment.Single
'\n'          Text.Whitespace

'{%'          Literal.String.Interpol
' '           Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n  '        Text.Whitespace
'# some specific code for non-64 bits platforms' Comment.Single
'\n'          Text.Whitespace

'{%'          Literal.String.Interpol
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n\n'        Text.Whitespace

'{%'          Literal.String.Interpol
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'flag?'       Name
'('           Punctuation
':linux'      Literal.String.Symbol
')'           Punctuation
' '           Text.Whitespace
'&&'          Operator
' '           Text.Whitespace
'flag?'       Name
'('           Punctuation
':x86_64'     Literal.String.Symbol
')'           Punctuation
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n  '        Text.Whitespace
'# some specific code for linux 64 bits' Comment.Single
'\n'          Text.Whitespace

'{%'          Literal.String.Interpol
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'C'           Name.Namespace
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'flag?'       Name
'('           Punctuation
':linux'      Literal.String.Symbol
')'           Punctuation
' '           Text.Whitespace
'&&'          Operator
' '           Text.Whitespace
'flag?'       Name
'('           Punctuation
':x86_64'     Literal.String.Symbol
')'           Punctuation
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'struct'      Keyword
' '           Text.Whitespace
'SomeStruct'  Name.Class
'\n      '    Text.Whitespace
'some_field'  Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'struct'      Keyword
' '           Text.Whitespace
'SomeStruct'  Name.Class
'\n      '    Text.Whitespace
'some_field'  Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int64'       Name
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# Assigns to a local variable' Comment.Single
'\n'          Text.Whitespace

'local'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'# Assigns to a global property' Comment.Single
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Global'      Name.Class
'\n  '        Text.Whitespace
'class_property' Name.Builtin.Pseudo
' '           Text.Whitespace
'global1'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'class_getter' Name.Builtin.Pseudo
' '           Text.Whitespace
'global2'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n  '        Text.Whitespace
'class_setter' Name.Builtin.Pseudo
' '           Text.Whitespace
'global3'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'3'           Literal.Number.Integer
'\n\n  '      Text.Whitespace
'# Fails on nil' Comment.Single
'\n  '        Text.Whitespace
'class_property!' Name.Builtin.Pseudo
' '           Text.Whitespace
'global4'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'4'           Literal.Number.Integer
'\n  '        Text.Whitespace
'class_getter!' Name.Builtin.Pseudo
' '           Text.Whitespace
'global5'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'5'           Literal.Number.Integer
'\n  '        Text.Whitespace
'class_setter' Name.Builtin.Pseudo
'!'           Operator
' '           Text.Whitespace
'global6'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'6'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Testing'     Name.Class
'\n  '        Text.Whitespace
'# Assigns to an instance variable' Comment.Single
'\n  '        Text.Whitespace
'@instance'   Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n\n  '      Text.Whitespace
'# Assigns to a class variable' Comment.Single
'\n  '        Text.Whitespace
'@@class'     Name.Variable.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'3'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'local'       Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'# same as: local = local + 1' Comment.Single
'\n\n'        Text.Whitespace

'# The above is valid with these operators:' Comment.Single
'\n'          Text.Whitespace

'# +, -, *, /, %, |, &, ^, **, <<, >>' Comment.Single
'\n\n'        Text.Whitespace

'local'       Name
' '           Text.Whitespace
'||'          Operator
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'# same as: local || (local = 1)' Comment.Single
'\n'          Text.Whitespace

'local'       Name
' '           Text.Whitespace
'&&'          Operator
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'# same as: local && (local = 1)' Comment.Single
'\n\n'        Text.Whitespace

'# A setter'  Comment.Single
'\n'          Text.Whitespace

'person'      Name
'.'           Operator
'name'        Name
'='           Operator
'('           Punctuation
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n\n'        Text.Whitespace

'# The above can be written as:' Comment.Single
'\n'          Text.Whitespace

'person'      Name
'.'           Operator
'name'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

'# An indexed assignment' Comment.Single
'\n'          Text.Whitespace

'objects'     Name
'.'           Operator
'[]='         Name.Operator
'('           Punctuation
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
')'           Punctuation
'\n\n'        Text.Whitespace

'# The above can be written as:' Comment.Single
'\n'          Text.Whitespace

'objects'     Name
'['           Operator
'2'           Literal.Number.Integer
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'3'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'# Not assignment-related, but also syntax sugar:' Comment.Single
'\n'          Text.Whitespace

'objects'     Name
'.'           Operator
'[]'          Name.Operator
'('           Punctuation
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
')'           Punctuation
'\n\n'        Text.Whitespace

'# The above can be written as:' Comment.Single
'\n'          Text.Whitespace

'objects'     Name
'['           Operator
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
']'           Operator
'\n\n'        Text.Whitespace

'person'      Name
'.'           Operator
'age'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'# same as: person.age = person.age + 1' Comment.Single
'\n\n'        Text.Whitespace

'person'      Name
'.'           Operator
'name'        Name
' '           Text.Whitespace
'||'          Operator
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# same as: person.name || (person.name = "John")' Comment.Single
'\n'          Text.Whitespace

'person'      Name
'.'           Operator
'name'        Name
' '           Text.Whitespace
'&&'          Operator
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# same as: person.name && (person.name = "John")' Comment.Single
'\n\n'        Text.Whitespace

'objects'     Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'# same as: objects[1] = objects[1] + 2' Comment.Single
'\n\n'        Text.Whitespace

'objects'     Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
' '           Text.Whitespace
'||'          Operator
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'# same as: objects[1]? || (objects[1] = 2)' Comment.Single
'\n'          Text.Whitespace

'objects'     Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
' '           Text.Whitespace
'&&'          Operator
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'# same as: objects[1]? && (objects[1] = 2)' Comment.Single
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'PInt32'      Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Pointer'     Name
'('           Punctuation
'Int32'       Name
')'           Punctuation
'\n\n'        Text.Whitespace

'ptr'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'PInt32'      Name
'.'           Operator
'malloc'      Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# : Pointer(Int32)' Comment.Single
'\n\n'        Text.Whitespace

'alias'       Keyword
' '           Text.Whitespace
'RecArray'    Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Array'       Name
'('           Punctuation
'Int32'       Name
')'           Punctuation
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'Array'       Name
'('           Punctuation
'RecArray'    Name
')'           Punctuation
'\n\n'        Text.Whitespace

'ary'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
' '           Text.Whitespace
'of'          Keyword
' '           Text.Whitespace
'RecArray'    Name
'\n'          Text.Whitespace

'ary'         Name
'.'           Operator
'push'        Name
' '           Text.Whitespace
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
']'           Operator
'\n'          Text.Whitespace

'ary'         Name
'.'           Operator
'push'        Name
' '           Text.Whitespace
'ary'         Name
'\n'          Text.Whitespace

'ary'         Name
' '           Text.Whitespace
'# => [[1, 2, 3], [...]]' Comment.Single
'\n\n'        Text.Whitespace

'module'      Keyword
' '           Text.Whitespace
'Json'        Name.Namespace
'\n  '        Text.Whitespace
'alias'       Keyword
' '           Text.Whitespace
'Type'        Name.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Nil'         Name
' '           Text.Whitespace
'|'           Operator
'\n               ' Text.Whitespace
'Bool'        Name
' '           Text.Whitespace
'|'           Operator
'\n               ' Text.Whitespace
'Int64'       Name
' '           Text.Whitespace
'|'           Operator
'\n               ' Text.Whitespace
'Float64'     Name
' '           Text.Whitespace
'|'           Operator
'\n               ' Text.Whitespace
'String'      Name
' '           Text.Whitespace
'|'           Operator
'\n               ' Text.Whitespace
'Array'       Name
'('           Punctuation
'Type'        Name
')'           Punctuation
' '           Text.Whitespace
'|'           Operator
'\n               ' Text.Whitespace
'Hash'        Name
'('           Punctuation
'String'      Name
','           Punctuation
' '           Text.Whitespace
'Type'        Name
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'>'           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n  '        Text.Whitespace
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'10'          Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'a'           Name
' '           Text.Whitespace
'# => 10'     Comment.Single
'\n\n'        Text.Whitespace

'b'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'b'           Name
' '           Text.Whitespace
'>'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n  '        Text.Whitespace
'b'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'10'          Literal.Number.Integer
'\n'          Text.Whitespace

'else'        Keyword
'\n  '        Text.Whitespace
'b'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'20'          Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'b'           Name
' '           Text.Whitespace
'# => 20'     Comment.Single
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'some_condition' Name
'\n  '        Text.Whitespace
'do_something' Name
'\n'          Text.Whitespace

'elsif'       Keyword
' '           Text.Whitespace
'some_other_condition' Name
'\n  '        Text.Whitespace
'do_something_else' Name
'\n'          Text.Whitespace

'else'        Keyword
'\n  '        Text.Whitespace
'do_that'     Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'some_condition' Name
'\n  '        Text.Whitespace
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'else'        Keyword
'\n  '        Text.Whitespace
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'true'        Keyword.Constant
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'# a : String | Bool' Comment.Single
'\n\n'        Text.Whitespace

'b'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'some_condition' Name
'\n  '        Text.Whitespace
'b'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'# b : Int32 | String' Comment.Single
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'some_condition' Name
'\n  '        Text.Whitespace
'c'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'else'        Keyword
'\n  '        Text.Whitespace
'c'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'# c : Int32 | String' Comment.Single
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'some_condition' Name
'\n  '        Text.Whitespace
'd'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'# d : Int32 | Nil' Comment.Single
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'some_condition' Name
'\n  '        Text.Whitespace
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'# a : String' Comment.Single
'\n  '        Text.Whitespace
'a'           Name
'.'           Operator
'size'        Name
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'# a : String | Int32' Comment.Single
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'some_condition' Name
'\n  '        Text.Whitespace
'e'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'else'        Keyword
'\n  '        Text.Whitespace
'e'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'# e : String' Comment.Single
'\n  '        Text.Whitespace
'return'      Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'# e : Int32' Comment.Single
'\n\n'        Text.Whitespace

'enum'        Keyword
' '           Text.Whitespace
'Color'       Name.Class
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'UInt8'       Name
'\n  '        Text.Whitespace
'Red'         Name
'        '    Text.Whitespace
'# 0'         Comment.Single
'\n  '        Text.Whitespace
'Green'       Name
'      '      Text.Whitespace
'# 1'         Comment.Single
'\n  '        Text.Whitespace
'Blue'        Name
'   '         Text.Whitespace
'='           Operator
' '           Text.Whitespace
'5'           Literal.Number.Integer
' '           Text.Whitespace
'# overwritten to 5' Comment.Single
'\n  '        Text.Whitespace
'Yellow'      Name
'     '       Text.Whitespace
'# 6 (5 + 1)' Comment.Single
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'red?'        Name.Function
'\n    '      Text.Whitespace
'self'        Keyword
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'Color'       Name
'::'          Operator
'Red'         Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'Color'       Name
'::'          Operator
'Red'         Name
'.'           Operator
'value'       Name
' '           Text.Whitespace
'# :: UInt8'  Comment.Single
'\n\n'        Text.Whitespace

'@['          Operator
'Flags'       Name.Decorator
']'           Operator
'\n'          Text.Whitespace

'enum'        Keyword
' '           Text.Whitespace
'IOMode'      Name.Class
'\n  '        Text.Whitespace
'Read'        Name
'  '          Text.Whitespace
'# 1'         Comment.Single
'\n  '        Text.Whitespace
'Write'       Name
' '           Text.Whitespace
'# 2'         Comment.Single
'\n  '        Text.Whitespace
'Async'       Name
' '           Text.Whitespace
'# 4'         Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'IOMode'      Name
'::'          Operator
'None'        Name
'.'           Operator
'value'       Name
' '           Text.Whitespace
'# => 0'      Comment.Single
'\n'          Text.Whitespace

'IOMode'      Name
'::'          Operator
'All'         Name
'.'           Operator
'value'       Name
'  '          Text.Whitespace
'# => 7'      Comment.Single
'\n\n'        Text.Whitespace

'puts'        Name.Builtin
'('           Punctuation
'Color'       Name
'::'          Operator
'Red'         Name
')'           Punctuation
'                    ' Text.Whitespace
'# prints "Red"' Comment.Single
'\n'          Text.Whitespace

'puts'        Name.Builtin
'('           Punctuation
'IOMode'      Name
'::'          Operator
'Write'       Name
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'IOMode'      Name
'::'          Operator
'Async'       Name
')'           Punctuation
' '           Text.Whitespace
'# prints "Write, Async"' Comment.Single
'\n\n'        Text.Whitespace

'puts'        Name.Builtin
' '           Text.Whitespace
'Color'       Name
'.'           Operator
'new'         Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# => prints "Green"' Comment.Single
'\n\n'        Text.Whitespace

'puts'        Name.Builtin
' '           Text.Whitespace
'Color'       Name
'.'           Operator
'new'         Name
'('           Punctuation
'10'          Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# => prints "10"' Comment.Single
'\n\n'        Text.Whitespace

'Color'       Name
'::'          Operator
'Red'         Name
'.'           Operator
'red?'        Name
'  '          Text.Whitespace
'# => true'   Comment.Single
'\n'          Text.Whitespace

'Color'       Name
'::'          Operator
'Blue'        Name
'.'           Operator
'red?'        Name
' '           Text.Whitespace
'# => false'  Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'paint'       Name.Function
'('           Punctuation
'color'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Color'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'color'       Name
'\n  '        Text.Whitespace
'when'        Keyword
' '           Text.Whitespace
'Color'       Name
'::'          Operator
'Red'         Name
'\n    '      Text.Whitespace
'# ...'       Comment.Single
'\n  '        Text.Whitespace
'else'        Keyword
'\n    '      Text.Whitespace
'# Unusual, but still can happen' Comment.Single
'\n    '      Text.Whitespace
'raise'       Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'unknown color: ' Literal.String.Double
'#{'          Literal.String.Interpol
'color'       Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'paint'       Name
' '           Text.Whitespace
'Color'       Name
'::'          Operator
'Red'         Name
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'paint'       Name.Function
'('           Punctuation
'color'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Symbol'      Name
')'           Punctuation
'\n  '        Text.Whitespace
'case'        Keyword
' '           Text.Whitespace
'color'       Name
'\n  '        Text.Whitespace
'when'        Keyword
' '           Text.Whitespace
':red'        Literal.String.Symbol
'\n    '      Text.Whitespace
'# ...'       Comment.Single
'\n  '        Text.Whitespace
'else'        Keyword
'\n    '      Text.Whitespace
'raise'       Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'unknown color: ' Literal.String.Double
'#{'          Literal.String.Interpol
'color'       Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'paint'       Name
' '           Text.Whitespace
':red'        Literal.String.Symbol
'\n\n'        Text.Whitespace

'name'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'Crystal'     Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'age'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'flower'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'Tulip'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

"# At this point 'flower' is a String" Comment.Single
'\n\n'        Text.Whitespace

'flower'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n\n'        Text.Whitespace

"# At this point 'flower' is an Int32" Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Foo'         Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'finalize'    Name.Function
'\n    '      Text.Whitespace
'# Invoked when Foo is garbage-collected' Comment.Single
'\n    '      Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Bye bye from ' Literal.String.Double
'#{'          Literal.String.Interpol
'self'        Keyword
'}'           Literal.String.Interpol
'!'           Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# Prints "Bye bye ...!" for ever' Comment.Single
'\n'          Text.Whitespace

'loop'        Name.Builtin
' '           Text.Whitespace
'do'          Keyword
'\n  '        Text.Whitespace
'Foo'         Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# Defines a method in the program' Comment.Single
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'add'         Name.Function
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# Invokes the add method in the program' Comment.Single
'\n'          Text.Whitespace

'add'         Name
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# => 3'      Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'even?'       Name.Function
'('           Punctuation
'num'         Name
')'           Punctuation
'\n  '        Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'num'         Name
' '           Text.Whitespace
'%'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n    '      Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'true'        Keyword.Constant
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'false'       Keyword.Constant
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'add'         Name.Function
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Foo'         Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'bar'         Name.Function
'\n    '      Text.Whitespace
"# invokes the program's add method" Comment.Single
'\n    '      Text.Whitespace
'add'         Name
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'\n\n    '    Text.Whitespace
"# invokes Foo's baz method" Comment.Single
'\n    '      Text.Whitespace
'baz'         Name
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'baz'         Name.Function
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'x'           Name
' '           Text.Whitespace
'*'           Operator
' '           Text.Whitespace
'y'           Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'baz'         Name.Function
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Foo'         Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'bar'         Name.Function
'\n    '      Text.Whitespace
'baz'         Name
'('           Punctuation
'4'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'   '         Text.Whitespace
'# => 2'      Comment.Single
'\n    '      Text.Whitespace
'::'          Operator
'baz'         Name
'('           Punctuation
'4'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# => 6'      Comment.Single
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'baz'         Name.Function
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'x'           Name
' '           Text.Whitespace
'-'           Operator
' '           Text.Whitespace
'y'           Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'add'         Name.Function
'('           Punctuation
'y'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
' '           Text.Whitespace
"# error: undefined local variable or method 'x'" Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'add'         Name
'('           Punctuation
'2'           Literal.Number.Integer
')'           Punctuation
'\n\n'        Text.Whitespace

'add'         Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'# same as add(1, 2)' Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Counter'     Name.Class
'\n  '        Text.Whitespace
'@@instances' Name.Variable.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'\n    '      Text.Whitespace
'@@instances' Name.Variable.Class
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'instances'   Name.Function
'\n    '      Text.Whitespace
'@@instances' Name.Variable.Class
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'Counter'     Name
'.'           Operator
'instances'   Name
' '           Text.Whitespace
'# => 0'      Comment.Single
'\n'          Text.Whitespace

'Counter'     Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'Counter'     Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'Counter'     Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'Counter'     Name
'.'           Operator
'instances'   Name
' '           Text.Whitespace
'# => 3'      Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Counter'     Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'increment'   Name.Function
'\n    '      Text.Whitespace
'@@instances' Name.Variable.Class
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'Counter'     Name
'.'           Operator
'increment'   Name
' '           Text.Whitespace
"# Error: undefined method '+' for Nil" Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Parent'      Name.Class
'\n  '        Text.Whitespace
'@@counter'   Name.Variable.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Child'       Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Parent'      Name
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'counter'     Name.Function
'\n    '      Text.Whitespace
'@@counter'   Name.Variable.Class
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'Child'       Name
'.'           Operator
'counter'     Name
' '           Text.Whitespace
'# => nil'    Comment.Single
'\n\n'        Text.Whitespace

'unless'      Keyword
' '           Text.Whitespace
'some_condition' Name
'\n  '        Text.Whitespace
'then_expression' Name
'\n'          Text.Whitespace

'else'        Keyword
'\n  '        Text.Whitespace
'else_expression' Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# Can also be written as a suffix' Comment.Single
'\n'          Text.Whitespace

'close_door'  Name
' '           Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'door_closed?' Name
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'b'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'typeof'      Keyword.Pseudo
'('           Punctuation
'a'           Name
')'           Punctuation
' '           Text.Whitespace
'# => Int32'  Comment.Single
'\n\n'        Text.Whitespace

'typeof'      Keyword.Pseudo
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'a'           Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
"'a'"         Literal.String.Char
')'           Punctuation
' '           Text.Whitespace
'# => (Int32 | String | Char)' Comment.Single
'\n\n'        Text.Whitespace

'hash'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'}'           Punctuation
' '           Text.Whitespace
'of'          Keyword
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'String'      Name
'\n'          Text.Whitespace

'another_hash' Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'typeof'      Keyword.Pseudo
'('           Punctuation
'hash'        Name
')'           Punctuation
'.'           Operator
'new'         Name
' '           Text.Whitespace
'# :: Hash(Int32, String)' Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Array'       Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'elem_type'   Name.Function
'('           Punctuation
'typ'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'typ'         Name
'.is_a?'      Keyword.Pseudo
'('           Punctuation
'Array'       Name
')'           Punctuation
'\n      '    Text.Whitespace
'elem_type'   Name
'('           Punctuation
'typ'         Name
'.'           Operator
'first'       Name
')'           Punctuation
'\n    '      Text.Whitespace
'else'        Keyword
'\n      '    Text.Whitespace
'typ'         Name
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'nest'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'['           Operator
'"'           Literal.String.Double
'b'           Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'['           Operator
':c'          Literal.String.Symbol
','           Punctuation
' '           Text.Whitespace
'['           Operator
"'d'"         Literal.String.Char
']'           Operator
']'           Operator
']'           Operator
']'           Operator
'\n'          Text.Whitespace

'flat'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Array'       Name
'('           Punctuation
'typeof'      Keyword.Pseudo
'('           Punctuation
'Array'       Name
'.'           Operator
'elem_type'   Name
'('           Punctuation
'nest'        Name
')'           Punctuation
')'           Punctuation
')'           Punctuation
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'typeof'      Keyword.Pseudo
'('           Punctuation
'nest'        Name
')'           Punctuation
' '           Text.Whitespace
'# => Array(Int32 | Array(String | Array(Symbol | Array(Char))))' Comment.Single
'\n'          Text.Whitespace

'typeof'      Keyword.Pseudo
'('           Punctuation
'flat'        Name
')'           Punctuation
' '           Text.Whitespace
'# => Array(String | Int32 | Symbol | Char)' Comment.Single
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'some_condition' Name
'\n\n'        Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n'          Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'-'           Operator
'>'           Operator
'{'           Punctuation
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
';'           Punctuation
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
' '           Text.Whitespace
'# => 2'      Comment.Single
'\n'          Text.Whitespace

'x'           Name
'         '   Text.Whitespace
'# => 2'      Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'counter'     Name.Function
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n  '        Text.Whitespace
'-'           Operator
'>'           Operator
'{'           Punctuation
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
';'           Punctuation
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'counter'     Name
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
' '           Text.Whitespace
'# => 2'      Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'\n  '        Text.Whitespace
'yield'       Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'do'          Keyword
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'x'           Name
' '           Text.Whitespace
'# : Int32 | String' Comment.Single
'\n\n'        Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'do'          Keyword
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'x'           Name
' '           Text.Whitespace
'# : Int32 | String' Comment.Single
'\n\n'        Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
"'a'"         Literal.String.Char
'\n'          Text.Whitespace

'x'           Name
' '           Text.Whitespace
'# : Char'    Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'capture'     Name.Function
'('           Punctuation
'&'           Operator
'block'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'block'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'capture'     Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'}'           Punctuation
'\n\n'        Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
"'a'"         Literal.String.Char
'\n'          Text.Whitespace

'x'           Name
' '           Text.Whitespace
'# : Int32 | String | Char' Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'capture'     Name.Function
'('           Punctuation
'&'           Operator
'block'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'block'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'-'           Operator
'>'           Operator
'{'           Punctuation
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'}'           Punctuation
'\n\n'        Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
"'a'"         Literal.String.Char
'\n'          Text.Whitespace

'x'           Name
' '           Text.Whitespace
'# : Int32 | String | Char' Comment.Single
'\n\n'        Text.Whitespace

'abstract'    Keyword
' '           Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'Animal'      Name.Class
'\n  '        Text.Whitespace
'# Makes this animal talk' Comment.Single
'\n  '        Text.Whitespace
'abstract'    Keyword
' '           Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'talk'        Name.Function
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Dog'         Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Animal'      Name
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'talk'        Name.Function
'\n    '      Text.Whitespace
'"'           Literal.String.Double
'Woof!'       Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Cat'         Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Animal'      Name
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'talk'        Name.Function
'\n    '      Text.Whitespace
'"'           Literal.String.Double
'Miau'        Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'getter'      Name.Builtin.Pseudo
' '           Text.Whitespace
'pet'         Name
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@name'       Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@pet'        Name.Variable.Instance
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'john'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'Dog'         Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'peter'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'Peter'       Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'Cat'         Name
'.'           Operator
'new'         Name
'\n\n'        Text.Whitespace

'john'        Name
'.'           Operator
'pet'         Name
'.'           Operator
'talk'        Name
' '           Text.Whitespace
'# => "Woof!"' Comment.Single
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'>'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'?'           Operator
' '           Text.Whitespace
'3'           Literal.Number.Integer
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'4'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'# The above is the same as:' Comment.Single
'\n'          Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'>'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n      '    Text.Whitespace
'3'           Literal.Number.Integer
'\n    '      Text.Whitespace
'else'        Keyword
'\n      '    Text.Whitespace
'4'           Literal.Number.Integer
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'some_method' Name.Function
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'String'      Name
'\n  '        Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'PI'          Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'3.14'        Literal.Number.Float
'\n\n'        Text.Whitespace

'module'      Keyword
' '           Text.Whitespace
'Earth'       Name.Namespace
'\n  '        Text.Whitespace
'RADIUS'      Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'6_371_000'   Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'PI'          Name.Constant
'            ' Text.Whitespace
'# => 3.14'   Comment.Single
'\n'          Text.Whitespace

'Earth'       Name
'::'          Operator
'RADIUS'      Name.Constant
' '           Text.Whitespace
'# => 6_371_000' Comment.Single
'\n\n'        Text.Whitespace

'TEN'         Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'begin'       Keyword
'\n  '        Text.Whitespace
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n  '        Text.Whitespace
'while'       Keyword
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'10'          Literal.Number.Integer
'\n    '      Text.Whitespace
'a'           Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'a'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'TEN'         Name.Constant
' '           Text.Whitespace
'# => 10'     Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'getter'      Name.Builtin.Pseudo
' '           Text.Whitespace
'name'        Name
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@name'       Name.Variable.Instance
')'           Punctuation
'\n    '      Text.Whitespace
'@age'        Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'john'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'john'        Name
'.'           Operator
'name'        Name
'      '      Text.Whitespace
'# => "John"' Comment.Single
'\n'          Text.Whitespace

'john'        Name
'.'           Operator
'name'        Name
'.'           Operator
'size'        Name
' '           Text.Whitespace
'# => 4'      Comment.Single
'\n\n'        Text.Whitespace

'one'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'one'         Name
'.'           Operator
'name'        Name
'     '       Text.Whitespace
'# => 1'      Comment.Single
'\n'          Text.Whitespace

'one'         Name
'.'           Operator
'name'        Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'# => 3'      Comment.Single
'\n\n'        Text.Whitespace

'john'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'one'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'john'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'one'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n\n'        Text.Whitespace

"# Error: undefined method 'size' for Int32" Comment.Single
'\n'          Text.Whitespace

'john'        Name
'.'           Operator
'name'        Name
'.'           Operator
'size'        Name
'\n\n'        Text.Whitespace

"# Error: no overload matches 'String#+' with types Int32" Comment.Single
'\n'          Text.Whitespace

'john'        Name
'.'           Operator
'name'        Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'3'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'john'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'john'        Name
'.'           Operator
'name'        Name
'.'           Operator
'size'        Name
'\n'          Text.Whitespace

'one'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'getter'      Name.Builtin.Pseudo
' '           Text.Whitespace
'name'        Name
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@name'       Name.Variable.Instance
')'           Punctuation
'\n    '      Text.Whitespace
'@age'        Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'address'     Name.Function
'\n    '      Text.Whitespace
'@address'    Name.Variable.Instance
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'address'     Name.Function
'='           Operator
'('           Punctuation
'@address'    Name.Variable.Instance
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'john'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'john'        Name
'.'           Operator
'address'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'Argentina'   Literal.String.Double
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

"# Error: undefined method 'size' for Nil" Comment.Single
'\n'          Text.Whitespace

'john'        Name
'.'           Operator
'address'     Name
'.'           Operator
'size'        Name
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'@age'        Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@name'       Name.Variable.Instance
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'@age'        Name.Variable.Instance
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@name'       Name.Variable.Instance
')'           Punctuation
'\n    '      Text.Whitespace
'@age'        Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'>'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n      '    Text.Whitespace
'3'           Literal.Number.Integer
'\n    '      Text.Whitespace
'else'        Keyword
'\n      '    Text.Whitespace
'4'           Literal.Number.Integer
'\n    '      Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'a'           Name
' '           Text.Whitespace
'# => 3'      Comment.Single
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'>'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'else'        Keyword
'\n  '        Text.Whitespace
'3'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'twice'       Name.Function
'('           Punctuation
'&'           Operator
'block'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'yield'       Keyword
'\n  '        Text.Whitespace
'yield'       Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'twice'       Name
'('           Punctuation
')'           Punctuation
' '           Text.Whitespace
'do'          Keyword
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Hello!'      Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'do'          Keyword
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Hello!'      Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Hello!'      Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'}'           Punctuation
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'twice'       Name.Function
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Got '        Literal.String.Double
'#{'          Literal.String.Interpol
'i'           Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
' '           Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Got '        Literal.String.Double
'#{'          Literal.String.Interpol
'i'           Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
' '           Text.Whitespace
'}'           Punctuation
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'many'        Name.Function
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'many'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
','           Punctuation
' '           Text.Whitespace
'z'           Name
'|'           Operator
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'z'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# Output: 6' Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'many'        Name.Function
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'many'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
'|'           Operator
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# Output: 3' Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'twice'       Name.Function
'\n  '        Text.Whitespace
'yield'       Keyword
'\n  '        Text.Whitespace
'yield'       Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'i'           Name
'.'           Operator
'inspect'     Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'some'        Name.Function
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
"'a'"         Literal.String.Char
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'true'        Keyword.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'some'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'first'       Name
','           Punctuation
' '           Text.Whitespace
'second'      Name
'|'           Operator
'\n  '        Text.Whitespace
'# first is Int32 | Bool' Comment.Single
'\n  '        Text.Whitespace
'# second is Char | String | Nil' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'method'      Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'argument'    Name
'|'           Operator
'\n  '        Text.Whitespace
'argument'    Name
'.'           Operator
'some_method' Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'method'      Name
'('           Punctuation
'&'           Operator
'.'           Operator
'some_method' Name
')'           Punctuation
'\n\n'        Text.Whitespace

'method'      Name
' '           Text.Whitespace
'&'           Operator
'.'           Operator
'some_method' Name
'('           Punctuation
'arg1'        Name
','           Punctuation
' '           Text.Whitespace
'arg2'        Name
')'           Punctuation
'\n\n'        Text.Whitespace

'method'      Name
' '           Text.Whitespace
'&'           Operator
'.'           Operator
'+'           Name.Operator
'('           Punctuation
'2'           Literal.Number.Integer
')'           Punctuation
'\n'          Text.Whitespace

'method'      Name
' '           Text.Whitespace
'&'           Operator
'.'           Operator
'['           Name
'index'       Name
']'           Operator
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'twice'       Name.Function
'\n  '        Text.Whitespace
'v1'          Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'v1'          Name
'\n\n  '      Text.Whitespace
'v2'          Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'v2'          Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n  '        Text.Whitespace
'i'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'ary'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
']'           Operator
'\n'          Text.Whitespace

'ary'         Name
'.'           Operator
'map'         Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'x'           Name
'|'           Operator
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'}'           Punctuation
'         '   Text.Whitespace
'# => [2, 3, 4]' Comment.Single
'\n'          Text.Whitespace

'ary'         Name
'.'           Operator
'select'      Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'x'           Name
'|'           Operator
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'%'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'}'           Punctuation
' '           Text.Whitespace
'# => [1, 3]' Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'transform'   Name.Function
'('           Punctuation
'value'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'value'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'transform'   Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'x'           Name
'|'           Operator
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'}'           Punctuation
' '           Text.Whitespace
'# => 2'      Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'thrice'      Name.Function
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Before 1'    Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Before 2'    Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Before 3'    Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'3'           Literal.Number.Integer
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'After 3'     Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'thrice'      Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n  '        Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'i'           Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n    '      Text.Whitespace
'break'       Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'twice'       Name.Function
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
' '           Text.Whitespace
'i'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'}'           Punctuation
'         '   Text.Whitespace
'# => 3'      Comment.Single
'\n'          Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
' '           Text.Whitespace
'break'       Keyword
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'}'           Punctuation
' '           Text.Whitespace
'# => "hello"' Comment.Single
'\n\n'        Text.Whitespace

'value'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'twice'       Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n  '        Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'i'           Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n    '      Text.Whitespace
'break'       Keyword
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'i'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'value'       Name
' '           Text.Whitespace
'# :: Int32 | String' Comment.Single
'\n\n'        Text.Whitespace

'values'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'twice'       Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'break'       Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'values'      Name
' '           Text.Whitespace
'# => {1, 2}' Comment.Single
'\n\n'        Text.Whitespace

'value'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'twice'       Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'break'       Keyword
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'value'       Name
' '           Text.Whitespace
'# => nil'    Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'twice'       Name.Function
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n  '        Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'i'           Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n    '      Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Skipping 1'  Literal.String.Double
'"'           Literal.String.Double
'\n    '      Text.Whitespace
'next'        Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Got '        Literal.String.Double
'#{'          Literal.String.Interpol
'i'           Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'twice'       Name.Function
'\n  '        Text.Whitespace
'v1'          Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'v1'          Name
'\n\n  '      Text.Whitespace
'v2'          Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'v2'          Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n  '        Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'i'           Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n    '      Text.Whitespace
'next'        Keyword
' '           Text.Whitespace
'10'          Literal.Number.Integer
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'i'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# Output'    Comment.Single
'\n'          Text.Whitespace

'# 10'        Comment.Single
'\n'          Text.Whitespace

'# 3'         Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Foo'         Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'one'         Name.Function
'\n    '      Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'yield_with_self' Name.Function
'\n    '      Text.Whitespace
'with'        Keyword
' '           Text.Whitespace
'self'        Keyword
' '           Text.Whitespace
'yield'       Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'yield_normally' Name.Function
'\n    '      Text.Whitespace
'yield'       Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'one'         Name.Function
'\n  '        Text.Whitespace
'"'           Literal.String.Double
'one'         Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'Foo'         Name
'.'           Operator
'new'         Name
'.'           Operator
'yield_with_self' Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'one'         Name
' '           Text.Whitespace
'}'           Punctuation
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n'          Text.Whitespace

'Foo'         Name
'.'           Operator
'new'         Name
'.'           Operator
'yield_normally' Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'one'         Name
' '           Text.Whitespace
'}'           Punctuation
'  '          Text.Whitespace
'# => "one"'  Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'twice'       Name.Function
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Got: '       Literal.String.Double
'#{'          Literal.String.Interpol
'i'           Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

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

'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Got: '       Literal.String.Double
'#{'          Literal.String.Interpol
'i'           Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n'          Text.Whitespace

'i'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Got: '       Literal.String.Double
'#{'          Literal.String.Interpol
'i'           Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

'3'           Literal.Number.Integer
'.'           Operator
'times'       Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'i'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'struct'      Keyword
' '           Text.Whitespace
'Int'         Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'times'       Name.Function
'\n    '      Text.Whitespace
'i'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n    '      Text.Whitespace
'while'       Keyword
' '           Text.Whitespace
'i'           Name
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'self'        Keyword
'\n      '    Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'i'           Name
'\n      '    Text.Whitespace
'i'           Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'i'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n'          Text.Whitespace

'while'       Keyword
' '           Text.Whitespace
'i'           Name
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'3'           Literal.Number.Integer
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'i'           Name
'\n  '        Text.Whitespace
'i'           Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@name'       Name.Variable.Instance
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'greet'       Name.Function
'\n    '      Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
"Hi, I'm "    Literal.String.Double
'#{'          Literal.String.Interpol
'@name'       Name.Variable.Instance
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Employee'    Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Person'      Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'employee'    Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Employee'    Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'employee'    Name
'.'           Operator
'greet'       Name
' '           Text.Whitespace
'# "Hi, I\'m John"' Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@name'       Name.Variable.Instance
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Employee'    Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Person'      Name
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@name'       Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@company_name' Name.Variable.Instance
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'Employee'    Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'Acme'        Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# OK'        Comment.Single
'\n'          Text.Whitespace

'Employee'    Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'Peter'       Literal.String.Double
'"'           Literal.String.Double
'        '    Text.Whitespace
'# Error: wrong number of arguments' Comment.Single
'\n'          Text.Whitespace

"# for 'Employee:Class#new' (1 for 2)" Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'greet'       Name.Function
'('           Punctuation
'msg'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Hi, '        Literal.String.Double
'#{'          Literal.String.Interpol
'msg'         Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Employee'    Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Person'      Name
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'greet'       Name.Function
'('           Punctuation
'msg'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Hello, '     Literal.String.Double
'#{'          Literal.String.Interpol
'msg'         Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'p'           Name.Builtin
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'p'           Name.Builtin
'.'           Operator
'greet'       Name
' '           Text.Whitespace
'"'           Literal.String.Double
'everyone'    Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# "Hi, everyone"' Comment.Single
'\n\n'        Text.Whitespace

'e'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Employee'    Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'e'           Name
'.'           Operator
'greet'       Name
' '           Text.Whitespace
'"'           Literal.String.Double
'everyone'    Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# "Hello, everyone"' Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'greet'       Name.Function
'('           Punctuation
'msg'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Hi, '        Literal.String.Double
'#{'          Literal.String.Interpol
'msg'         Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Employee'    Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Person'      Name
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'greet'       Name.Function
'('           Punctuation
'msg'         Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
'\n    '      Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Hi, this is a number: ' Literal.String.Double
'#{'          Literal.String.Interpol
'msg'         Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'e'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Employee'    Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'e'           Name
'.'           Operator
'greet'       Name
' '           Text.Whitespace
'"'           Literal.String.Double
'everyone'    Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# "Hi, everyone"' Comment.Single
'\n\n'        Text.Whitespace

'e'           Name
'.'           Operator
'greet'       Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'# "Hi, this is a number: 1"' Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'greet'       Name.Function
'('           Punctuation
'msg'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Hello, '     Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# {msg}"'    Comment.Single
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Employee'    Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Person'      Name
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'greet'       Name.Function
'('           Punctuation
'msg'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'super'       Keyword
' '           Text.Whitespace
'# Same as: super(msg)' Comment.Single
'\n    '      Text.Whitespace
'super'       Keyword
'('           Punctuation
'"'           Literal.String.Double
'another message' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'int_to_int'  Name.Function
'('           Punctuation
'&'           Operator
'block'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'-'           Operator
'>'           Operator
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'block'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'int_to_int'  Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'x'           Name
'|'           Operator
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# => 2'      Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Model'       Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'on_save'     Name.Function
'('           Punctuation
'&'           Operator
'block'       Name
')'           Punctuation
'\n    '      Text.Whitespace
'@on_save_callback' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'block'       Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'save'        Name.Function
'\n    '      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'callback'    Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@on_save_callback' Name.Variable.Instance
'\n      '    Text.Whitespace
'callback'    Name
'.'           Operator
'call'        Name
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'model'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Model'       Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'model'       Name
'.'           Operator
'on_save'     Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Saved!'      Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'model'       Name
'.'           Operator
'save'        Name
' '           Text.Whitespace
'# prints "Saved!"' Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'some_proc'   Name.Function
'('           Punctuation
'&'           Operator
'block'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'-'           Operator
'>'           Operator
')'           Punctuation
'\n  '        Text.Whitespace
'block'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'some_proc'   Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'x'           Name
'|'           Operator
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# void'      Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'some_proc'   Name.Function
'('           Punctuation
'&'           Operator
'block'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'-'           Operator
'>'           Operator
' '           Text.Whitespace
'_'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'block'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'some_proc'   Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'x'           Name
'|'           Operator
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# 2'         Comment.Single
'\n\n'        Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'some_proc'   Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'x'           Name
'|'           Operator
' '           Text.Whitespace
'x'           Name
'.'           Operator
'to_s'        Name
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# "1"'       Comment.Single
'\n\n'        Text.Whitespace

'macro'       Keyword
' '           Text.Whitespace
'update_x'    Name.Function
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n'          Text.Whitespace

'update_x'    Name
'\n'          Text.Whitespace

'x'           Name
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n\n'        Text.Whitespace

'macro'       Keyword
' '           Text.Whitespace
'dont_update_x' Name.Function
'\n  '        Text.Whitespace
'%'           Operator
'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'%'           Operator
'x'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n'          Text.Whitespace

'dont_update_x' Name
' '           Text.Whitespace
'# outputs 1' Comment.Single
'\n'          Text.Whitespace

'x'           Name
'             ' Text.Whitespace
'# => 0'      Comment.Single
'\n\n'        Text.Whitespace

'macro'       Keyword
' '           Text.Whitespace
'fresh_vars_sample' Name.Function
'('           Punctuation
'*'           Operator
'names'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'# First declare vars' Comment.Single
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'for'         Keyword
' '           Text.Whitespace
'name'        Name
','           Punctuation
' '           Text.Whitespace
'index'       Name
' '           Text.Whitespace
'in'          Keyword
' '           Text.Whitespace
'names'       Name
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'print'       Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Declaring: ' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'%name{index}' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
"'\\n'"       Literal.String.Char
'\n    '      Text.Whitespace
'%'           Operator
'name'        Name
'{'           Punctuation
'index'       Name
'}'           Punctuation
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{{'          Literal.String.Interpol
'index'       Name
'}}'          Literal.String.Interpol
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n\n  '      Text.Whitespace
'# Then print them' Comment.Single
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'for'         Keyword
' '           Text.Whitespace
'name'        Name
','           Punctuation
' '           Text.Whitespace
'index'       Name
' '           Text.Whitespace
'in'          Keyword
' '           Text.Whitespace
'names'       Name
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'print'       Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'%name{index}: ' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'%'           Operator
'name'        Name
'{'           Punctuation
'index'       Name
'}'           Punctuation
','           Punctuation
' '           Text.Whitespace
"'\\n'"       Literal.String.Char
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'fresh_vars_sample' Name
' '           Text.Whitespace
'a'           Name
','           Punctuation
' '           Text.Whitespace
'b'           Name
','           Punctuation
' '           Text.Whitespace
'c'           Name
'\n\n'        Text.Whitespace

'# Sample output:' Comment.Single
'\n'          Text.Whitespace

'# Declaring: __temp_255' Comment.Single
'\n'          Text.Whitespace

'# Declaring: __temp_256' Comment.Single
'\n'          Text.Whitespace

'# Declaring: __temp_257' Comment.Single
'\n'          Text.Whitespace

'# __temp_255: 0' Comment.Single
'\n'          Text.Whitespace

'# __temp_256: 1' Comment.Single
'\n'          Text.Whitespace

'# __temp_257: 2' Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Object'      Name.Class
'\n  '        Text.Whitespace
'macro'       Keyword
' '           Text.Whitespace
'instance_vars_names' Name.Function
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'instance_vars_names' Name.Function
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Array'       Name
'('           Punctuation
'String'      Name
')'           Punctuation
'\n      '    Text.Whitespace
'{{'          Literal.String.Interpol
' '           Text.Whitespace
'@type'       Name.Variable.Instance
'.'           Operator
'instance_vars' Name
'.'           Operator
'map'         Name
' '           Text.Whitespace
'&'           Operator
'.'           Operator
'name'        Name
'.'           Operator
'stringify'   Name
' '           Text.Whitespace
'}}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@name'       Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@age'        Name.Variable.Instance
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'person'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'30'          Literal.Number.Integer
'\n'          Text.Whitespace

'person'      Name
'.'           Operator
'instance_vars_names' Name
' '           Text.Whitespace
'# => ["name", "age"]' Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Object'      Name.Class
'\n  '        Text.Whitespace
'macro'       Keyword
' '           Text.Whitespace
'has_instance_var?' Name.Function
'('           Punctuation
'name'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'has_instance_var?' Name.Function
'('           Punctuation
'name'        Name
')'           Punctuation
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Bool'        Name
'\n      '    Text.Whitespace
'# We cannot access name inside the macro expansion here,' Comment.Single
'\n      '    Text.Whitespace
'# instead we need to use the macro language to construct an array' Comment.Single
'\n      '    Text.Whitespace
'# and do the inclusion check at runtime.' Comment.Single
'\n      '    Text.Whitespace
'{{'          Literal.String.Interpol
' '           Text.Whitespace
'@type'       Name.Variable.Instance
'.'           Operator
'instance_vars' Name
'.'           Operator
'map'         Name
' '           Text.Whitespace
'&'           Operator
'.'           Operator
'name'        Name
'.'           Operator
'stringify'   Name
' '           Text.Whitespace
'}}'          Literal.String.Interpol
'.'           Operator
'includes?'   Name
' '           Text.Whitespace
'name'        Name
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'person'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'30'          Literal.Number.Integer
'\n'          Text.Whitespace

'person'      Name
'.'           Operator
'has_instance_var?' Name
'('           Punctuation
'"'           Literal.String.Double
'name'        Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'     '       Text.Whitespace
'# => true'   Comment.Single
'\n'          Text.Whitespace

'person'      Name
'.'           Operator
'has_instance_var?' Name
'('           Punctuation
'"'           Literal.String.Double
'birthday'    Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
' '           Text.Whitespace
'# => false'  Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Parent'      Name.Class
'\n  '        Text.Whitespace
'macro'       Keyword
' '           Text.Whitespace
'inherited'   Name.Function
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'{{'          Literal.String.Interpol
'@type'       Name.Variable.Instance
'.'           Operator
'name'        Name
'.'           Operator
'downcase'    Name
'.'           Operator
'id'          Name
'}}'          Literal.String.Interpol
'\n      '    Text.Whitespace
'1'           Literal.Number.Integer
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Child'       Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Parent'      Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'Child'       Name
'.'           Operator
'new'         Name
'.'           Operator
'child'       Name
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n\n'        Text.Whitespace

'macro'       Keyword
' '           Text.Whitespace
'method_missing' Name.Function
'('           Punctuation
'name'        Name
','           Punctuation
' '           Text.Whitespace
'args'        Name
','           Punctuation
' '           Text.Whitespace
'block'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'print'       Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Got '        Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'{{'          Literal.String.Interpol
'name'        Name
'.'           Operator
'id'          Name
'.'           Operator
'stringify'   Name
'}}'          Literal.String.Interpol
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
' with '      Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'{{'          Literal.String.Interpol
'args'        Name
'.'           Operator
'size'        Name
'}}'          Literal.String.Interpol
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
' arguments'  Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
"'\\n'"       Literal.String.Char
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'foo'         Name
'          '  Text.Whitespace
'# Prints: Got foo with 0 arguments' Comment.Single
'\n'          Text.Whitespace

'bar'         Name
' '           Text.Whitespace
"'a'"         Literal.String.Char
','           Punctuation
' '           Text.Whitespace
"'b'"         Literal.String.Char
' '           Text.Whitespace
'# Prints: Got bar with 2 arguments' Comment.Single
'\n\n'        Text.Whitespace

'sizeof'      Keyword.Pseudo
'('           Punctuation
'Int32'       Name
')'           Punctuation
' '           Text.Whitespace
'# => 4'      Comment.Single
'\n'          Text.Whitespace

'sizeof'      Keyword.Pseudo
'('           Punctuation
'Int64'       Name
')'           Punctuation
' '           Text.Whitespace
'# => 8'      Comment.Single
'\n\n'        Text.Whitespace

'# On a 64 bits machine' Comment.Single
'\n'          Text.Whitespace

'sizeof'      Keyword.Pseudo
'('           Punctuation
'Pointer'     Name
'('           Punctuation
'Int32'       Name
')'           Punctuation
')'           Punctuation
' '           Text.Whitespace
'# => 8'      Comment.Single
'\n'          Text.Whitespace

'sizeof'      Keyword.Pseudo
'('           Punctuation
'String'      Name
')'           Punctuation
'         '   Text.Whitespace
'# => 8'      Comment.Single
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'sizeof'      Keyword.Pseudo
'('           Punctuation
'typeof'      Keyword.Pseudo
'('           Punctuation
'a'           Name
')'           Punctuation
')'           Punctuation
' '           Text.Whitespace
'# => 4'      Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Foo'         Name.Class
'\n  '        Text.Whitespace
'macro'       Keyword
' '           Text.Whitespace
'emphasize'   Name.Function
'('           Punctuation
'value'       Name
')'           Punctuation
'\n    '      Text.Whitespace
'"'           Literal.String.Double
'***'         Literal.String.Double
'#{'          Literal.String.Interpol
' '           Text.Whitespace
'{'           Literal.String.Interpol
'{'           Literal.String.Interpol
'value'       Name
'}'           Literal.String.Interpol
'}'           Literal.String.Interpol
' '           Text.Whitespace
'}'           Literal.String.Interpol
'***'         Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'yield_with_self' Name.Function
'\n    '      Text.Whitespace
'with'        Keyword
' '           Text.Whitespace
'self'        Keyword
' '           Text.Whitespace
'yield'       Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'Foo'         Name
'.'           Operator
'new'         Name
'.'           Operator
'yield_with_self' Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'emphasize'   Name
'('           Punctuation
'10'          Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
' '           Text.Whitespace
'# => "***10***"' Comment.Single
'\n\n'        Text.Whitespace

'# This generates:' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'#     def :foo' Comment.Single
'\n'          Text.Whitespace

'#       1'   Comment.Single
'\n'          Text.Whitespace

'#     end'   Comment.Single
'\n'          Text.Whitespace

'define_method' Name
' '           Text.Whitespace
':foo'        Literal.String.Symbol
','           Punctuation
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'macro'       Keyword
' '           Text.Whitespace
'define_method' Name.Function
'('           Punctuation
'name'        Name
','           Punctuation
' '           Text.Whitespace
'content'     Name
')'           Punctuation
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'{{'          Literal.String.Interpol
'name'        Name
'.'           Operator
'id'          Name
'}}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'{{'          Literal.String.Interpol
'content'     Name
'}}'          Literal.String.Interpol
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# This correctly generates:' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'#     def foo' Comment.Single
'\n'          Text.Whitespace

'#       1'   Comment.Single
'\n'          Text.Whitespace

'#     end'   Comment.Single
'\n'          Text.Whitespace

'define_method' Name
' '           Text.Whitespace
':foo'        Literal.String.Symbol
','           Punctuation
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'macro'       Keyword
' '           Text.Whitespace
'define_method' Name.Function
'('           Punctuation
'name'        Name
','           Punctuation
' '           Text.Whitespace
'content'     Name
')'           Punctuation
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'{{'          Literal.String.Interpol
'name'        Name
'}}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'content'     Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n      '    Text.Whitespace
'"'           Literal.String.Double
'one'         Literal.String.Double
'"'           Literal.String.Double
'\n    '      Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n      '    Text.Whitespace
'{{'          Literal.String.Interpol
'content'     Name
'}}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'define_method' Name
' '           Text.Whitespace
'foo'         Name
','           Punctuation
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'define_method' Name
' '           Text.Whitespace
'bar'         Name
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'# => one'    Comment.Single
'\n'          Text.Whitespace

'bar'         Name
' '           Text.Whitespace
'# => 2'      Comment.Single
'\n\n'        Text.Whitespace

'{%'          Literal.String.Interpol
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'env'         Name
'('           Punctuation
'"'           Literal.String.Double
'TEST'        Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'We are in test mode' Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'{%'          Literal.String.Interpol
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n\n'        Text.Whitespace

'macro'       Keyword
' '           Text.Whitespace
'define_dummy_methods' Name.Function
'('           Punctuation
'names'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'for'         Keyword
' '           Text.Whitespace
'name'        Name
','           Punctuation
' '           Text.Whitespace
'index'       Name
' '           Text.Whitespace
'in'          Keyword
' '           Text.Whitespace
'names'       Name
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'{{'          Literal.String.Interpol
'name'        Name
'.'           Operator
'id'          Name
'}}'          Literal.String.Interpol
'\n      '    Text.Whitespace
'{{'          Literal.String.Interpol
'index'       Name
'}}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'define_dummy_methods' Name
' '           Text.Whitespace
'['           Operator
'foo'         Name
','           Punctuation
' '           Text.Whitespace
'bar'         Name
','           Punctuation
' '           Text.Whitespace
'baz'         Name
']'           Operator
'\n\n'        Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'# => 0'      Comment.Single
'\n'          Text.Whitespace

'bar'         Name
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n'          Text.Whitespace

'baz'         Name
' '           Text.Whitespace
'# => 2'      Comment.Single
'\n\n'        Text.Whitespace

'macro'       Keyword
' '           Text.Whitespace
'define_dummy_methods' Name.Function
'('           Punctuation
'hash'        Name
')'           Punctuation
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'for'         Keyword
' '           Text.Whitespace
'key'         Name
','           Punctuation
' '           Text.Whitespace
'value'       Name
' '           Text.Whitespace
'in'          Keyword
' '           Text.Whitespace
'hash'        Name
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'{{'          Literal.String.Interpol
'key'         Name
'.'           Operator
'id'          Name
'}}'          Literal.String.Interpol
'\n      '    Text.Whitespace
'{{'          Literal.String.Interpol
'value'       Name
'}}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'define_dummy_methods' Name
'('           Punctuation
'{'           Punctuation
'foo'         Literal.String.Symbol
':'           Punctuation
' '           Text.Whitespace
'10'          Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'bar'         Literal.String.Symbol
':'           Punctuation
' '           Text.Whitespace
'20'          Literal.Number.Integer
'}'           Punctuation
')'           Punctuation
'\n'          Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'# => 10'     Comment.Single
'\n'          Text.Whitespace

'bar'         Name
' '           Text.Whitespace
'# => 20'     Comment.Single
'\n\n'        Text.Whitespace

'{%'          Literal.String.Interpol
' '           Text.Whitespace
'for'         Keyword
' '           Text.Whitespace
'name'        Name
','           Punctuation
' '           Text.Whitespace
'index'       Name
' '           Text.Whitespace
'in'          Keyword
' '           Text.Whitespace
'['           Operator
'"'           Literal.String.Double
'foo'         Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'bar'         Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'baz'         Literal.String.Double
'"'           Literal.String.Double
']'           Operator
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'{{'          Literal.String.Interpol
'name'        Name
'.'           Operator
'id'          Name
'}}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'{{'          Literal.String.Interpol
'index'       Name
'}}'          Literal.String.Interpol
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'{%'          Literal.String.Interpol
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n\n'        Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'# => 0'      Comment.Single
'\n'          Text.Whitespace

'bar'         Name
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n'          Text.Whitespace

'baz'         Name
' '           Text.Whitespace
'# => 2'      Comment.Single
'\n\n'        Text.Whitespace

'macro'       Keyword
' '           Text.Whitespace
'define_dummy_methods' Name.Function
'('           Punctuation
'*'           Operator
'names'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'for'         Keyword
' '           Text.Whitespace
'name'        Name
','           Punctuation
' '           Text.Whitespace
'index'       Name
' '           Text.Whitespace
'in'          Keyword
' '           Text.Whitespace
'names'       Name
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'{{'          Literal.String.Interpol
'name'        Name
'.'           Operator
'id'          Name
'}}'          Literal.String.Interpol
'\n      '    Text.Whitespace
'{{'          Literal.String.Interpol
'index'       Name
'}}'          Literal.String.Interpol
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'{%'          Literal.String.Interpol
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'define_dummy_methods' Name
' '           Text.Whitespace
'foo'         Name
','           Punctuation
' '           Text.Whitespace
'bar'         Name
','           Punctuation
' '           Text.Whitespace
'baz'         Name
'\n\n'        Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'# => 0'      Comment.Single
'\n'          Text.Whitespace

'bar'         Name
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n'          Text.Whitespace

'baz'         Name
' '           Text.Whitespace
'# => 2'      Comment.Single
'\n\n'        Text.Whitespace

'macro'       Keyword
' '           Text.Whitespace
'println'     Name.Function
'('           Punctuation
'*'           Operator
'values'      Name
')'           Punctuation
'\n   '       Text.Whitespace
'print'       Name.Builtin
' '           Text.Whitespace
'{{'          Literal.String.Interpol
'*'           Operator
'values'      Name
'}}'          Literal.String.Interpol
','           Punctuation
' '           Text.Whitespace
"'\\n'"       Literal.String.Char
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'println'     Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
' '           Text.Whitespace
'# outputs 123\\n' Comment.Single
'\n\n'        Text.Whitespace

'VALUES'      Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
']'           Operator
'\n\n'        Text.Whitespace

'{%'          Literal.String.Interpol
' '           Text.Whitespace
'for'         Keyword
' '           Text.Whitespace
'value'       Name
' '           Text.Whitespace
'in'          Keyword
' '           Text.Whitespace
'VALUES'      Name.Constant
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'{{'          Literal.String.Interpol
'value'       Name
'}}'          Literal.String.Interpol
'\n'          Text.Whitespace

'{%'          Literal.String.Interpol
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'%}'          Literal.String.Interpol
'\n\n'        Text.Whitespace

'until'       Keyword
' '           Text.Whitespace
'some_condition' Name
'\n  '        Text.Whitespace
'do_this'     Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# The above is the same as:' Comment.Single
'\n'          Text.Whitespace

'while'       Keyword
' '           Text.Whitespace
'!'           Operator
'some_condition' Name
'\n  '        Text.Whitespace
'do_this'     Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'some_condition' Name
' '           Text.Whitespace
'?'           Punctuation
' '           Text.Whitespace
'nil'         Keyword.Constant
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
'\n'          Text.Whitespace

'# a is Int32 or Nil' Comment.Single
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'a'           Name
'\n  '        Text.Whitespace
'# Since the only way to get here is if a is truthy,' Comment.Single
'\n  '        Text.Whitespace
"# a can't be nil. So here a is Int32." Comment.Single
'\n  '        Text.Whitespace
'a'           Name
'.'           Operator
'abs'         Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'some_expression' Name
'\n  '        Text.Whitespace
'# here a is not nil' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'&&'          Operator
' '           Text.Whitespace
'b'           Name
'\n  '        Text.Whitespace
'# here both a and b are guaranteed not to be Nil' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'@a'          Name.Variable.Instance
'\n  '        Text.Whitespace
'# here @a can be nil' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# First option: assign it to a variable' Comment.Single
'\n'          Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@a'          Name.Variable.Instance
'\n  '        Text.Whitespace
"# here a can't be nil" Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# Second option: use `Object#try` found in the standard library' Comment.Single
'\n'          Text.Whitespace

'@a'          Name.Variable.Instance
'.'           Operator
'try'         Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'a'           Name
'|'           Operator
'\n  '        Text.Whitespace
"# here a can't be nil" Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'method'      Name
' '           Text.Whitespace
'# first call to a method that can return Int32 or Nil' Comment.Single
'\n  '        Text.Whitespace
'# here we know that the first call did not return Nil' Comment.Single
'\n  '        Text.Whitespace
'method'      Name
' '           Text.Whitespace
'# second call can still return Int32 or Nil' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'become_older' Name.Function
'('           Punctuation
'by'          Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
')'           Punctuation
'\n    '      Text.Whitespace
'@age'        Name.Variable.Instance
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'by'          Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'john'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'john'        Name
'.'           Operator
'age'         Name
' '           Text.Whitespace
'# => 0'      Comment.Single
'\n\n'        Text.Whitespace

'john'        Name
'.'           Operator
'become_older' Name
'\n'          Text.Whitespace

'john'        Name
'.'           Operator
'age'         Name
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n\n'        Text.Whitespace

'john'        Name
'.'           Operator
'become_older' Name
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'john'        Name
'.'           Operator
'age'         Name
' '           Text.Whitespace
'# => 3'      Comment.Single
'\n\n'        Text.Whitespace

'john'        Name
'.'           Operator
'become_older' Name
' '           Text.Whitespace
'by'          Literal.String.Symbol
':'           Punctuation
' '           Text.Whitespace
'5'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'some_method' Name.Function
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'z'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'w'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'3'           Literal.Number.Integer
')'           Punctuation
'\n  '        Text.Whitespace
'# do something...' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'some_method' Name
' '           Text.Whitespace
'10'          Literal.Number.Integer
'                   ' Text.Whitespace
'# x = 10, y = 1, z = 2, w = 3' Comment.Single
'\n'          Text.Whitespace

'some_method' Name
' '           Text.Whitespace
'10'          Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'z'           Literal.String.Symbol
':'           Punctuation
' '           Text.Whitespace
'10'          Literal.Number.Integer
'            ' Text.Whitespace
'# x = 10, y = 1, z = 10, w = 3' Comment.Single
'\n'          Text.Whitespace

'some_method' Name
' '           Text.Whitespace
'10'          Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'w'           Literal.String.Symbol
':'           Punctuation
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'y'           Literal.String.Symbol
':'           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'z'           Literal.String.Symbol
':'           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
' '           Text.Whitespace
'# x = 10, y = 2, z = 3, w = 1' Comment.Single
'\n\n'        Text.Whitespace

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

'when'        Keyword
' '           Text.Whitespace
'value1'      Name
','           Punctuation
' '           Text.Whitespace
'value2'      Name
'\n  '        Text.Whitespace
'do_something' Name
'\n'          Text.Whitespace

'when'        Keyword
' '           Text.Whitespace
'value3'      Name
'\n  '        Text.Whitespace
'do_something_else' Name
'\n'          Text.Whitespace

'else'        Keyword
'\n  '        Text.Whitespace
'do_another_thing' Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

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

'when'        Keyword
' '           Text.Whitespace
'String'      Name
'\n  '        Text.Whitespace
'# var : String' Comment.Single
'\n  '        Text.Whitespace
'do_something' Name
'\n'          Text.Whitespace

'when'        Keyword
' '           Text.Whitespace
'Int32'       Name
'\n  '        Text.Whitespace
'# var : Int32' Comment.Single
'\n  '        Text.Whitespace
'do_something_else' Name
'\n'          Text.Whitespace

'else'        Keyword
'\n  '        Text.Whitespace
'# here var is neither a String nor an Int32' Comment.Single
'\n  '        Text.Whitespace
'do_another_thing' Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

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

'when'        Keyword
' '           Text.Whitespace
'.'           Operator
'even?'       Name
'\n  '        Text.Whitespace
'do_something' Name
'\n'          Text.Whitespace

'when'        Keyword
' '           Text.Whitespace
'.'           Operator
'odd?'        Name
'\n  '        Text.Whitespace
'do_something_else' Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'case'        Keyword
'\n'          Text.Whitespace

'when'        Keyword
' '           Text.Whitespace
'cond1'       Name
','           Punctuation
' '           Text.Whitespace
'cond2'       Name
'\n  '        Text.Whitespace
'do_something' Name
'\n'          Text.Whitespace

'when'        Keyword
' '           Text.Whitespace
'cond3'       Name
'\n  '        Text.Whitespace
'do_something_else' Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'a'           Name
'.responds_to?' Keyword.Pseudo
'('           Punctuation
':abs'        Literal.String.Symbol
')'           Punctuation
'  '          Text.Whitespace
'# => true'   Comment.Single
'\n'          Text.Whitespace

'a'           Name
'.responds_to?' Keyword.Pseudo
'('           Punctuation
':size'       Literal.String.Symbol
')'           Punctuation
' '           Text.Whitespace
'# => false'  Comment.Single
'\n\n'        Text.Whitespace

'foo_or_bar'  Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'/'           Literal.String.Regex
'foo|bar'     Literal.String.Regex
'/'           Literal.String.Regex
'\n'          Text.Whitespace

'heeello'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'/'           Literal.String.Regex
'h(e+)llo'    Literal.String.Regex
'/'           Literal.String.Regex
'\n'          Text.Whitespace

'integer'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'/'           Literal.String.Regex
'\\'          Literal.String.Regex
'd+'          Literal.String.Regex
'/'           Literal.String.Regex
'\n\n'        Text.Whitespace

'r'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'/'           Literal.String.Regex
'foo'         Literal.String.Regex
'/imx'        Literal.String.Regex
'\n\n'        Text.Whitespace

'slash'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'/'           Literal.String.Regex
'\\/'         Literal.String.Regex
'/'           Literal.String.Regex
'\n\n'        Text.Whitespace

'r'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'%r('         Literal.String.Regex
'regex with slash: /' Literal.String.Regex
')'           Literal.String.Regex
'\n\n'        Text.Whitespace

'"'           Literal.String.Double
'hello world' Literal.String.Double
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

'"'           Literal.String.Double
'\\"'         Literal.String.Escape
'"'           Literal.String.Double
' '           Text.Whitespace
'# double quote' Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\\\'        Literal.String.Escape
'"'           Literal.String.Double
' '           Text.Whitespace
'# backslash' Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\e'         Literal.String.Escape
'"'           Literal.String.Double
' '           Text.Whitespace
'# escape'    Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\f'         Literal.String.Escape
'"'           Literal.String.Double
' '           Text.Whitespace
'# form feed' Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\n'         Literal.String.Escape
'"'           Literal.String.Double
' '           Text.Whitespace
'# newline'   Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\r'         Literal.String.Escape
'"'           Literal.String.Double
' '           Text.Whitespace
'# carriage return' Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\t'         Literal.String.Escape
'"'           Literal.String.Double
' '           Text.Whitespace
'# tab'       Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\v'         Literal.String.Escape
'"'           Literal.String.Double
' '           Text.Whitespace
'# vertical tab' Comment.Single
'\n\n'        Text.Whitespace

'"'           Literal.String.Double
'\\101'       Literal.String.Escape
'"'           Literal.String.Double
' '           Text.Whitespace
'# == "A"'    Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\123'       Literal.String.Escape
'"'           Literal.String.Double
' '           Text.Whitespace
'# == "S"'    Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\12'        Literal.String.Escape
'"'           Literal.String.Double
'  '          Text.Whitespace
'# == "\\n"'  Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\1'         Literal.String.Escape
'"'           Literal.String.Double
'   '         Text.Whitespace
'# string with one character with code point 1' Comment.Single
'\n\n'        Text.Whitespace

'"'           Literal.String.Double
'\\u0041'     Literal.String.Escape
'"'           Literal.String.Double
' '           Text.Whitespace
'# == "A"'    Comment.Single
'\n\n'        Text.Whitespace

'"'           Literal.String.Double
'\\u{41}'     Literal.String.Escape
'"'           Literal.String.Double
'    '        Text.Whitespace
'# == "A"'    Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\u{1F52E}'  Literal.String.Escape
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

'"'           Literal.String.Double
'hello\n      world' Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# same as "hello\\n      world"' Comment.Single
'\n\n'        Text.Whitespace

'"'           Literal.String.Double
'hello '      Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'\\'          Punctuation
'\n'          Text.Whitespace

'"'           Literal.String.Double
'world, '     Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'\\'          Punctuation
'\n'          Text.Whitespace

'"'           Literal.String.Double
'no newlines' Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# same as "hello world, no newlines"' Comment.Single
'\n\n'        Text.Whitespace

'"'           Literal.String.Double
'hello '      Literal.String.Double
'\\'          Literal.String.Double
'\n     world, ' Literal.String.Double
'\\'          Literal.String.Double
'\n     no newlines' Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# same as "hello world, no newlines"' Comment.Single
'\n\n'        Text.Whitespace

'%('          Literal.String.Other
'hello '      Literal.String.Other
'('           Literal.String.Other
'"world"'     Literal.String.Other
')'           Literal.String.Other
')'           Literal.String.Other
' '           Text.Whitespace
'# => "hello (\\"world\\")"' Comment.Single
'\n'          Text.Whitespace

'%['          Literal.String.Other
'hello '      Literal.String.Other
'['           Literal.String.Other
'"world"'     Literal.String.Other
']'           Literal.String.Other
']'           Literal.String.Other
' '           Text.Whitespace
'# => "hello [\\"world\\"]"' Comment.Single
'\n'          Text.Whitespace

'%{'          Literal.String.Other
'hello '      Literal.String.Other
'{'           Literal.String.Other
'"world"'     Literal.String.Other
'}'           Literal.String.Other
'}'           Literal.String.Other
' '           Text.Whitespace
'# => "hello {\\"world\\"}"' Comment.Single
'\n'          Text.Whitespace

'%<'          Literal.String.Other
'hello '      Literal.String.Other
'<'           Literal.String.Other
'"world"'     Literal.String.Other
'>'           Literal.String.Other
'>'           Literal.String.Other
' '           Text.Whitespace
'# => "hello <\\"world\\">"' Comment.Single
'\n'          Text.Whitespace

'%|'          Literal.String.Other
'hello "world"' Literal.String.Other
'|'           Literal.String.Other
'   '         Text.Whitespace
'# => "hello \\"world\\""' Comment.Single
'\n\n'        Text.Whitespace

'<<-'         Operator
''            Literal.String.Heredoc
'XML'         Literal.String.Delimiter
''            Literal.String.Heredoc
'\n'          Text.Whitespace

'<parent>\n'  Literal.String.Heredoc

'  <child />\n' Literal.String.Heredoc

'</parent>\n' Literal.String.Heredoc

'XML\n'       Literal.String.Delimiter

'\n'          Text.Whitespace

'# Same as "Hello\\n  world"' Comment.Single
'\n'          Text.Whitespace

'<<-'         Operator
''            Literal.String.Heredoc
'STRING'      Literal.String.Delimiter
''            Literal.String.Heredoc
'\n'          Text.Whitespace

'  Hello\n'   Literal.String.Heredoc

'    world\n' Literal.String.Heredoc

'  STRING\n'  Literal.String.Delimiter

'\n'          Text.Whitespace

'# Same as "  Hello\\n    world"' Comment.Single
'\n'          Text.Whitespace

'<<-'         Operator
''            Literal.String.Heredoc
'STRING'      Literal.String.Delimiter
''            Literal.String.Heredoc
'\n'          Text.Whitespace

'    Hello\n' Literal.String.Heredoc

'      world\n' Literal.String.Heredoc

'  STRING\n'  Literal.String.Delimiter

'\n'          Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'b'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'"'           Literal.String.Double
'sum = '      Literal.String.Double
'#{'          Literal.String.Interpol
'a'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'b'           Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
' '           Text.Whitespace
'# "sum = 3"' Comment.Single
'\n\n'        Text.Whitespace

'1.0'         Literal.Number.Float
'     '       Text.Whitespace
'# Float64'   Comment.Single
'\n'          Text.Whitespace

'1.0_f32'     Literal.Number.Float
' '           Text.Whitespace
'# Float32'   Comment.Single
'\n'          Text.Whitespace

'1_f32'       Literal.Number.Float
'   '         Text.Whitespace
'# Float32'   Comment.Single
'\n\n'        Text.Whitespace

'1e10'        Literal.Number.Float
'   '         Text.Whitespace
'# Float64'   Comment.Single
'\n'          Text.Whitespace

'1.5e10'      Literal.Number.Float
' '           Text.Whitespace
'# Float64'   Comment.Single
'\n'          Text.Whitespace

'1.5e-7'      Literal.Number.Float
' '           Text.Whitespace
'# Float64'   Comment.Single
'\n\n'        Text.Whitespace

'+'           Operator
'1.3'         Literal.Number.Float
' '           Text.Whitespace
'# Float64'   Comment.Single
'\n'          Text.Whitespace

'-'           Operator
'0.5'         Literal.Number.Float
' '           Text.Whitespace
'# Float64'   Comment.Single
'\n\n'        Text.Whitespace

'1_000_000.111_111' Literal.Number.Float
' '           Text.Whitespace
'# better than 1000000.111111' Comment.Single
'\n\n'        Text.Whitespace

"'a'"         Literal.String.Char
'\n'          Text.Whitespace

"'z'"         Literal.String.Char
'\n'          Text.Whitespace

"'0'"         Literal.String.Char
'\n'          Text.Whitespace

"'_'"         Literal.String.Char
'\n'          Text.Whitespace

'"'           Literal.String.Double
'ã\x81‚'      Literal.String.Double
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

"'\\''"       Literal.String.Char
' '           Text.Whitespace
'# single quote' Comment.Single
'\n'          Text.Whitespace

"'\\\\'"      Literal.String.Char
' '           Text.Whitespace
'# backslash' Comment.Single
'\n'          Text.Whitespace

"'\\e'"       Literal.String.Char
' '           Text.Whitespace
'# escape'    Comment.Single
'\n'          Text.Whitespace

"'\\f'"       Literal.String.Char
' '           Text.Whitespace
'# form feed' Comment.Single
'\n'          Text.Whitespace

"'\\n'"       Literal.String.Char
' '           Text.Whitespace
'# newline'   Comment.Single
'\n'          Text.Whitespace

"'\\r'"       Literal.String.Char
' '           Text.Whitespace
'# carriage return' Comment.Single
'\n'          Text.Whitespace

"'\\t'"       Literal.String.Char
' '           Text.Whitespace
'# tab'       Comment.Single
'\n'          Text.Whitespace

"'\\v'"       Literal.String.Char
' '           Text.Whitespace
'# vertical tab' Comment.Single
'\n\n'        Text.Whitespace

'"'           Literal.String.Double
'\\101'       Literal.String.Escape
'"'           Literal.String.Double
' '           Text.Whitespace
"# == 'A'"    Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\123'       Literal.String.Escape
'"'           Literal.String.Double
' '           Text.Whitespace
"# == 'S'"    Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\12'        Literal.String.Escape
'"'           Literal.String.Double
'  '          Text.Whitespace
"# == '\\n'"  Comment.Single
'\n'          Text.Whitespace

'"'           Literal.String.Double
'\\1'         Literal.String.Escape
'"'           Literal.String.Double
'   '         Text.Whitespace
'# code point 1' Comment.Single
'\n\n'        Text.Whitespace

"'\\u0041'"   Literal.String.Char
' '           Text.Whitespace
"# == 'A'"    Comment.Single
'\n\n'        Text.Whitespace

"'\\u{41}'"   Literal.String.Char
'    '        Text.Whitespace
"# == 'A'"    Comment.Single
'\n'          Text.Whitespace

"'\\u{1F52E}'" Literal.String.Char
'\n\n'        Text.Whitespace

'{'           Punctuation
'1'           Literal.Number.Integer
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'4'           Literal.Number.Integer
'}'           Punctuation
'   '         Text.Whitespace
'# Hash(Int32, Int32)' Comment.Single
'\n'          Text.Whitespace

'{'           Punctuation
'1'           Literal.Number.Integer
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
"'a'"         Literal.String.Char
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'3'           Literal.Number.Integer
'}'           Punctuation
' '           Text.Whitespace
'# Hash(Int32 | Char, Int32)' Comment.Single
'\n\n'        Text.Whitespace

'{'           Punctuation
'}'           Punctuation
' '           Text.Whitespace
'of'          Keyword
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'# same as Hash(Int32, Int32).new' Comment.Single
'\n\n'        Text.Whitespace

'{'           Punctuation
'key1'        Literal.String.Symbol
':'           Punctuation
' '           Text.Whitespace
"'a'"         Literal.String.Char
','           Punctuation
' '           Text.Whitespace
'key2'        Literal.String.Symbol
':'           Punctuation
' '           Text.Whitespace
"'b'"         Literal.String.Char
'}'           Punctuation
' '           Text.Whitespace
'# Hash(Symbol, Char)' Comment.Single
'\n\n'        Text.Whitespace

'{'           Punctuation
'"'           Literal.String.Double
'key1'        Literal.String.Double
'"'           Literal.String.Double
':'           Punctuation
' '           Text.Whitespace
"'a'"         Literal.String.Char
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'key2'        Literal.String.Double
'"'           Literal.String.Double
':'           Punctuation
' '           Text.Whitespace
"'b'"         Literal.String.Char
'}'           Punctuation
' '           Text.Whitespace
'# Hash(String, Char)' Comment.Single
'\n\n'        Text.Whitespace

'MyType'      Name
'{'           Punctuation
'"'           Literal.String.Double
'foo'         Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'bar'         Literal.String.Double
'"'           Literal.String.Double
'}'           Punctuation
'\n\n'        Text.Whitespace

'tmp'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'MyType'      Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'tmp'         Name
'['           Operator
'"'           Literal.String.Double
'foo'         Literal.String.Double
'"'           Literal.String.Double
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'bar'         Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'tmp'         Name
'\n\n'        Text.Whitespace

'tmp'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'MyType'      Name
'('           Punctuation
'typeof'      Keyword.Pseudo
'('           Punctuation
'"'           Literal.String.Double
'foo'         Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
','           Punctuation
' '           Text.Whitespace
'typeof'      Keyword.Pseudo
'('           Punctuation
'"'           Literal.String.Double
'bar'         Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
')'           Punctuation
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'tmp'         Name
'['           Operator
'"'           Literal.String.Double
'foo'         Literal.String.Double
'"'           Literal.String.Double
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'bar'         Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'tmp'         Name
'\n\n'        Text.Whitespace

'MyType'      Name
'('           Punctuation
'String'      Name
','           Punctuation
' '           Text.Whitespace
'String'      Name
')'           Punctuation
'{'           Punctuation
'"'           Literal.String.Double
'foo'         Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'bar'         Literal.String.Double
'"'           Literal.String.Double
'}'           Punctuation
'\n\n'        Text.Whitespace

':hello'      Literal.String.Symbol
'\n'          Text.Whitespace

':good_bye'   Literal.String.Symbol
'\n\n'        Text.Whitespace

'# With spaces and symbols' Comment.Single
'\n'          Text.Whitespace

':"'          Literal.String.Symbol
'symbol with spaces' Literal.String.Symbol
'"'           Literal.String.Symbol
'\n\n'        Text.Whitespace

'# Ending with question and exclamation marks' Comment.Single
'\n'          Text.Whitespace

':question?'  Literal.String.Symbol
'\n'          Text.Whitespace

':exclamation!' Literal.String.Symbol
'\n\n'        Text.Whitespace

'# For the operators' Comment.Single
'\n'          Text.Whitespace

':+'          Literal.String.Symbol
'\n'          Text.Whitespace

':-'          Literal.String.Symbol
'\n'          Text.Whitespace

':*'          Literal.String.Symbol
'\n'          Text.Whitespace

':/'          Literal.String.Symbol
'\n'          Text.Whitespace

':=='         Literal.String.Symbol
'\n'          Text.Whitespace

':<'          Literal.String.Symbol
'\n'          Text.Whitespace

':<='         Literal.String.Symbol
'\n'          Text.Whitespace

':>'          Literal.String.Symbol
'\n'          Text.Whitespace

':>='         Literal.String.Symbol
'\n'          Text.Whitespace

':!'          Literal.String.Symbol
'\n'          Text.Whitespace

':!='         Literal.String.Symbol
'\n'          Text.Whitespace

':=~'         Literal.String.Symbol
'\n'          Text.Whitespace

':!~'         Literal.String.Symbol
'\n'          Text.Whitespace

':&'          Literal.String.Symbol
'\n'          Text.Whitespace

':|'          Literal.String.Symbol
'\n'          Text.Whitespace

':^'          Literal.String.Symbol
'\n'          Text.Whitespace

':~'          Literal.String.Symbol
'\n'          Text.Whitespace

':**'         Literal.String.Symbol
'\n'          Text.Whitespace

':>>'         Literal.String.Symbol
'\n'          Text.Whitespace

':<<'         Literal.String.Symbol
'\n'          Text.Whitespace

':%'          Literal.String.Symbol
'\n'          Text.Whitespace

':[]'         Literal.String.Symbol
'\n'          Text.Whitespace

':[]?'        Literal.String.Symbol
'\n'          Text.Whitespace

':[]='        Literal.String.Symbol
'\n'          Text.Whitespace

':<=>'        Literal.String.Symbol
'\n'          Text.Whitespace

':==='        Literal.String.Symbol
'\n\n'        Text.Whitespace

'x'           Name
'..'          Operator
'y'           Name
'  '          Text.Whitespace
'# an inclusive range, in mathematics: [x, y]' Comment.Single
'\n'          Text.Whitespace

'x'           Name
'...'         Operator
'y'           Name
' '           Text.Whitespace
'# an exclusive range, in mathematics: [x, y)' Comment.Single
'\n\n'        Text.Whitespace

'# A proc without arguments' Comment.Single
'\n'          Text.Whitespace

'-'           Operator
'>'           Operator
'{'           Punctuation
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'}'           Punctuation
' '           Text.Whitespace
'# Proc(Int32)' Comment.Single
'\n\n'        Text.Whitespace

'# A proc with one argument' Comment.Single
'\n'          Text.Whitespace

'-'           Operator
'>'           Operator
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'x'           Name
'.'           Operator
'to_s'        Name
' '           Text.Whitespace
'}'           Punctuation
' '           Text.Whitespace
'# Proc(Int32, String)' Comment.Single
'\n\n'        Text.Whitespace

'# A proc with two arguments:' Comment.Single
'\n'          Text.Whitespace

'-'           Operator
'>'           Operator
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
' '           Text.Whitespace
'}'           Punctuation
' '           Text.Whitespace
'# Proc(Int32, Int32, Int32)' Comment.Single
'\n\n'        Text.Whitespace

'Proc'        Name
'('           Punctuation
'Int32'       Name
','           Punctuation
' '           Text.Whitespace
'String'      Name
')'           Punctuation
'.'           Operator
'new'         Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'x'           Name
'|'           Operator
' '           Text.Whitespace
'x'           Name
'.'           Operator
'to_s'        Name
' '           Text.Whitespace
'}'           Punctuation
' '           Text.Whitespace
'# Proc(Int32, String)' Comment.Single
'\n\n'        Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'-'           Operator
'>'           Operator
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# => 3'      Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'one'         Name.Function
'\n  '        Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'-'           Operator
'>'           Operator
'one'         Name
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'plus_one'    Name.Function
'('           Punctuation
'x'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'-'           Operator
'>'           Operator
'plus_one'    Name
'('           Punctuation
'Int32'       Name
')'           Punctuation
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
'('           Punctuation
'41'          Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'# => 42'     Comment.Single
'\n\n'        Text.Whitespace

'str'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'-'           Operator
'>'           Operator
'str'         Name
'.'           Operator
'count'       Name
'('           Punctuation
'Char'        Name
')'           Punctuation
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
'('           Punctuation
"'e'"         Literal.String.Char
')'           Punctuation
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n'          Text.Whitespace

'proc'        Name
'.'           Operator
'call'        Name
'('           Punctuation
"'l'"         Literal.String.Char
')'           Punctuation
' '           Text.Whitespace
'# => 2'      Comment.Single
'\n\n'        Text.Whitespace

'tuple'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
"'x'"         Literal.String.Char
'}'           Punctuation
' '           Text.Whitespace
'# Tuple(Int32, String, Char)' Comment.Single
'\n'          Text.Whitespace

'tuple'       Name
'['           Operator
'0'           Literal.Number.Integer
']'           Operator
'                  ' Text.Whitespace
'# => 1       (Int32)' Comment.Single
'\n'          Text.Whitespace

'tuple'       Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
'                  ' Text.Whitespace
'# => "hello" (String)' Comment.Single
'\n'          Text.Whitespace

'tuple'       Name
'['           Operator
'2'           Literal.Number.Integer
']'           Operator
'                  ' Text.Whitespace
"# => 'x'     (Char)" Comment.Single
'\n\n'        Text.Whitespace

'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
']'           Operator
'         '   Text.Whitespace
'# Array(Int32)' Comment.Single
'\n'          Text.Whitespace

'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
"'x'"         Literal.String.Char
']'           Operator
' '           Text.Whitespace
'# Array(Int32 | String | Char)' Comment.Single
'\n\n'        Text.Whitespace

'['           Operator
']'           Operator
' '           Text.Whitespace
'of'          Keyword
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'# same as Array(Int32).new' Comment.Single
'\n\n'        Text.Whitespace

'%w('         Literal.String.Other
'one two three' Literal.String.Other
')'           Literal.String.Other
' '           Text.Whitespace
'# ["one", "two", "three"]' Comment.Single
'\n\n'        Text.Whitespace

'%i('         Literal.String.Other
'one two three' Literal.String.Other
')'           Literal.String.Other
' '           Text.Whitespace
'# [:one, :two, :three]' Comment.Single
'\n\n'        Text.Whitespace

'MyType'      Name
'{'           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
'}'           Punctuation
'\n\n'        Text.Whitespace

'tmp'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'MyType'      Name
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'tmp'         Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'tmp'         Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'tmp'         Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'3'           Literal.Number.Integer
'\n'          Text.Whitespace

'tmp'         Name
'\n\n'        Text.Whitespace

'tmp'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'MyType'      Name
'('           Punctuation
'typeof'      Keyword.Pseudo
'('           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
')'           Punctuation
')'           Punctuation
'.'           Operator
'new'         Name
'\n'          Text.Whitespace

'tmp'         Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'tmp'         Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'tmp'         Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'3'           Literal.Number.Integer
'\n'          Text.Whitespace

'tmp'         Name
'\n\n'        Text.Whitespace

'MyType'      Name
'('           Punctuation
'Int32'       Name
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'String'      Name
')'           Punctuation
'{'           Punctuation
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'foo'         Literal.String.Double
'"'           Literal.String.Double
'}'           Punctuation
'\n\n'        Text.Whitespace

'nil'         Keyword.Constant
'\n\n'        Text.Whitespace

'1'           Literal.Number.Integer
' '           Text.Whitespace
'# Int32'     Comment.Single
'\n\n'        Text.Whitespace

'1_i8'        Literal.Number.Integer
'  '          Text.Whitespace
'# Int8'      Comment.Single
'\n'          Text.Whitespace

'1_i16'       Literal.Number.Integer
' '           Text.Whitespace
'# Int16'     Comment.Single
'\n'          Text.Whitespace

'1_i32'       Literal.Number.Integer
' '           Text.Whitespace
'# Int32'     Comment.Single
'\n'          Text.Whitespace

'1_i64'       Literal.Number.Integer
' '           Text.Whitespace
'# Int64'     Comment.Single
'\n\n'        Text.Whitespace

'1_u8'        Literal.Number.Integer
'  '          Text.Whitespace
'# UInt8'     Comment.Single
'\n'          Text.Whitespace

'1_u16'       Literal.Number.Integer
' '           Text.Whitespace
'# UInt16'    Comment.Single
'\n'          Text.Whitespace

'1_u32'       Literal.Number.Integer
' '           Text.Whitespace
'# UInt32'    Comment.Single
'\n'          Text.Whitespace

'1_u64'       Literal.Number.Integer
' '           Text.Whitespace
'# UInt64'    Comment.Single
'\n\n'        Text.Whitespace

'+'           Operator
'10'          Literal.Number.Integer
' '           Text.Whitespace
'# Int32'     Comment.Single
'\n'          Text.Whitespace

'-'           Operator
'20'          Literal.Number.Integer
' '           Text.Whitespace
'# Int32'     Comment.Single
'\n\n'        Text.Whitespace

'2147483648'  Literal.Number.Integer
'          '  Text.Whitespace
'# Int64'     Comment.Single
'\n'          Text.Whitespace

'9223372036854775808' Literal.Number.Integer
' '           Text.Whitespace
'# UInt64'    Comment.Single
'\n\n'        Text.Whitespace

'1_000_000'   Literal.Number.Integer
' '           Text.Whitespace
'# better than 1000000' Comment.Single
'\n\n'        Text.Whitespace

'0b1101'      Literal.Number.Bin
' '           Text.Whitespace
'# == 13'     Comment.Single
'\n\n'        Text.Whitespace

'0o123'       Literal.Number.Oct
' '           Text.Whitespace
'# == 83'     Comment.Single
'\n\n'        Text.Whitespace

'0xFE012D'    Literal.Number.Hex
' '           Text.Whitespace
'# == 16646445' Comment.Single
'\n'          Text.Whitespace

'0xfe012d'    Literal.Number.Hex
' '           Text.Whitespace
'# == 16646445' Comment.Single
'\n\n'        Text.Whitespace

'true'        Keyword.Constant
'  '          Text.Whitespace
'# A Bool that is true' Comment.Single
'\n'          Text.Whitespace

'false'       Keyword.Constant
' '           Text.Whitespace
'# A Bool that is false' Comment.Single
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'ptr'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'pointerof'   Keyword.Pseudo
'('           Punctuation
'a'           Name
')'           Punctuation
'\n'          Text.Whitespace

'ptr'         Name
'.'           Operator
'value'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'# => 2'      Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Point'       Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'@x'          Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@y'          Name.Variable.Instance
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'x'           Name.Function
'\n    '      Text.Whitespace
'@x'          Name.Variable.Instance
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'x_ptr'       Name.Function
'\n    '      Text.Whitespace
'pointerof'   Keyword.Pseudo
'('           Punctuation
'@x'          Name.Variable.Instance
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'point'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Point'       Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n\n'        Text.Whitespace

'ptr'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'point'       Name
'.'           Operator
'x_ptr'       Name
'\n'          Text.Whitespace

'ptr'         Name
'.'           Operator
'value'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'10'          Literal.Number.Integer
'\n\n'        Text.Whitespace

'point'       Name
'.'           Operator
'x'           Name
' '           Text.Whitespace
'# => 10'     Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'add'         Name.Function
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Number'      Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Number'      Name
')'           Punctuation
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# Ok'        Comment.Single
'\n'          Text.Whitespace

'add'         Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
' '           Text.Whitespace
'# Ok'        Comment.Single
'\n\n'        Text.Whitespace

"# Error: no overload matches 'add' with types Bool, Bool" Comment.Single
'\n'          Text.Whitespace

'add'         Name
' '           Text.Whitespace
'true'        Keyword.Constant
','           Punctuation
' '           Text.Whitespace
'false'       Keyword.Constant
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'add'         Name.Function
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'add'         Name
' '           Text.Whitespace
'true'        Keyword.Constant
','           Punctuation
' '           Text.Whitespace
'false'       Keyword.Constant
'\n\n'        Text.Whitespace

"# A class that has a + method but isn't a Number" Comment.Single
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Six'         Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'+'           Name.Function
'('           Punctuation
'other'       Name
')'           Punctuation
'\n    '      Text.Whitespace
'6'           Literal.Number.Integer
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'other'       Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# add method without type restrictions' Comment.Single
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'add'         Name.Function
'('           Punctuation
'x'           Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# OK'        Comment.Single
'\n'          Text.Whitespace

'add'         Name
' '           Text.Whitespace
'Six'         Name
'.'           Operator
'new'         Name
','           Punctuation
' '           Text.Whitespace
'10'          Literal.Number.Integer
'\n\n'        Text.Whitespace

'# add method with type restrictions' Comment.Single
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'restricted_add' Name.Function
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Number'      Name
','           Punctuation
' '           Text.Whitespace
'y'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Number'      Name
')'           Punctuation
'\n  '        Text.Whitespace
'x'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'y'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

"# Error: no overload matches 'restricted_add' with types Six, Int32" Comment.Single
'\n'          Text.Whitespace

'restricted_add' Name
' '           Text.Whitespace
'Six'         Name
'.'           Operator
'new'         Name
','           Punctuation
' '           Text.Whitespace
'10'          Literal.Number.Integer
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'=='          Name.Function
'('           Punctuation
'other'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'self'        Keyword
')'           Punctuation
'\n    '      Text.Whitespace
'other'       Name
'.'           Operator
'name'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'name'        Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'=='          Name.Function
'('           Punctuation
'other'       Name
')'           Punctuation
'\n    '      Text.Whitespace
'false'       Keyword.Constant
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'john'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'another_john' Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'peter'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'Peter'       Literal.String.Double
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

'john'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'another_john' Name
' '           Text.Whitespace
'# => true'   Comment.Single
'\n'          Text.Whitespace

'john'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'peter'       Name
'        '    Text.Whitespace
'# => false (names differ)' Comment.Single
'\n'          Text.Whitespace

'john'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'            ' Text.Whitespace
'# => false (because 1 is not a Person)' Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'compare'     Name.Function
'('           Punctuation
'p1'          Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'self'        Keyword
','           Punctuation
' '           Text.Whitespace
'p2'          Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'self'        Keyword
')'           Punctuation
'\n    '      Text.Whitespace
'p1'          Name
'.'           Operator
'name'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'p2'          Name
'.'           Operator
'name'        Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'john'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'peter'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'Peter'       Literal.String.Double
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

'Person'      Name
'.'           Operator
'compare'     Name
'('           Punctuation
'john'        Name
','           Punctuation
' '           Text.Whitespace
'peter'       Name
')'           Punctuation
' '           Text.Whitespace
'# OK'        Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
'       '     Text.Whitespace
'# OK'        Comment.Single
'\n'          Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# Error'     Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'.'           Operator
'class'       Name
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'Int32'       Name
'  '          Text.Whitespace
'# OK'        Comment.Single
'\n'          Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'String'      Name
' '           Text.Whitespace
'# Error'     Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'.'           Operator
'class'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Got Int32'   Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'String'      Name
'.'           Operator
'class'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Got String'  Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'Int32'       Name
'  '          Text.Whitespace
'# prints "Got Int32"' Comment.Single
'\n'          Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'String'      Name
' '           Text.Whitespace
'# prints "Got String"' Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'('           Punctuation
'*'           Operator
'args'        Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'('           Punctuation
'*'           Operator
'args'        Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'String'      Name
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
'       '     Text.Whitespace
'# OK, invokes first overload' Comment.Single
'\n'          Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'a'           Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'b'           Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'c'           Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# OK, invokes second overload' Comment.Single
'\n'          Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# Error'     Comment.Single
'\n'          Text.Whitespace

'foo'         Name
'('           Punctuation
')'           Punctuation
'             ' Text.Whitespace
'# Error'     Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'\n  '        Text.Whitespace
'# This is the empty-tuple case' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'T'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'T'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'foo'         Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
'       '     Text.Whitespace
'# => Int32'  Comment.Single
'\n'          Text.Whitespace

'foo'         Name
'('           Punctuation
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
' '           Text.Whitespace
'# => String' Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Array'       Name
'('           Punctuation
'T'           Name
')'           Punctuation
')'           Punctuation
'\n  '        Text.Whitespace
'T'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'foo'         Name
'('           Punctuation
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
']'           Operator
')'           Punctuation
'   '         Text.Whitespace
'# => Int32'  Comment.Single
'\n'          Text.Whitespace

'foo'         Name
'('           Punctuation
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'a'           Literal.String.Double
'"'           Literal.String.Double
']'           Operator
')'           Punctuation
' '           Text.Whitespace
'# => (Int32 | String)' Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'('           Punctuation
'x'           Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'T'           Name
'.'           Operator
'class'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'Array'       Name
'('           Punctuation
'T'           Name
')'           Punctuation
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'foo'         Name
'('           Punctuation
'Int32'       Name
')'           Punctuation
'  '          Text.Whitespace
'# => Array(Int32)' Comment.Single
'\n'          Text.Whitespace

'foo'         Name
'('           Punctuation
'String'      Name
')'           Punctuation
' '           Text.Whitespace
'# => Array(String)' Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'# Increases age by one' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'become_older' Name.Function
'\n    '      Text.Whitespace
'@age'        Name.Variable.Instance
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Increases age by the given number of years' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'become_older' Name.Function
'('           Punctuation
'years'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
')'           Punctuation
'\n    '      Text.Whitespace
'@age'        Name.Variable.Instance
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'years'       Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Increases age by the given number of years, as a String' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'become_older' Name.Function
'('           Punctuation
'years'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'String'      Name
')'           Punctuation
'\n    '      Text.Whitespace
'@age'        Name.Variable.Instance
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'years'       Name
'.'           Operator
'to_i'        Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Yields the current age of this person and increases' Comment.Single
'\n  '        Text.Whitespace
'# its age by the value returned by the block' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'become_older' Name.Function
'\n    '      Text.Whitespace
'@age'        Name.Variable.Instance
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'@age'        Name.Variable.Instance
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'person'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'John'        Literal.String.Double
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

'person'      Name
'.'           Operator
'become_older' Name
'\n'          Text.Whitespace

'person'      Name
'.'           Operator
'age'         Name
' '           Text.Whitespace
'# => 1'      Comment.Single
'\n\n'        Text.Whitespace

'person'      Name
'.'           Operator
'become_older' Name
' '           Text.Whitespace
'5'           Literal.Number.Integer
'\n'          Text.Whitespace

'person'      Name
'.'           Operator
'age'         Name
' '           Text.Whitespace
'# => 6'      Comment.Single
'\n\n'        Text.Whitespace

'person'      Name
'.'           Operator
'become_older' Name
' '           Text.Whitespace
'"'           Literal.String.Double
'12'          Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'person'      Name
'.'           Operator
'age'         Name
' '           Text.Whitespace
'# => 18'     Comment.Single
'\n\n'        Text.Whitespace

'person'      Name
'.'           Operator
'become_older' Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'current_age' Name
'|'           Operator
'\n  '        Text.Whitespace
'current_age' Name
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'20'          Literal.Number.Integer
' '           Text.Whitespace
'?'           Operator
' '           Text.Whitespace
'10'          Literal.Number.Integer
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'30'          Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'person'      Name
'.'           Operator
'age'         Name
' '           Text.Whitespace
'# => 28'     Comment.Single
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'a'           Name
'.is_a?'      Keyword.Pseudo
'('           Punctuation
'Int32'       Name
')'           Punctuation
'          '  Text.Whitespace
'# => true'   Comment.Single
'\n'          Text.Whitespace

'a'           Name
'.is_a?'      Keyword.Pseudo
'('           Punctuation
'String'      Name
')'           Punctuation
'         '   Text.Whitespace
'# => false'  Comment.Single
'\n'          Text.Whitespace

'a'           Name
'.is_a?'      Keyword.Pseudo
'('           Punctuation
'Number'      Name
')'           Punctuation
'         '   Text.Whitespace
'# => true'   Comment.Single
'\n'          Text.Whitespace

'a'           Name
'.is_a?'      Keyword.Pseudo
'('           Punctuation
'Int32'       Name
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'String'      Name
')'           Punctuation
' '           Text.Whitespace
'# => true'   Comment.Single
'\n\n'        Text.Whitespace

'# One for each thread' Comment.Single
'\n'          Text.Whitespace

'@['          Operator
'ThreadLocal' Name.Decorator
']'           Operator
'\n'          Text.Whitespace

'values'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
' '           Text.Whitespace
'of'          Keyword
' '           Text.Whitespace
'Int32'       Name
'\n\n'        Text.Whitespace

'@['          Operator
'AlwaysInline' Name.Decorator
']'           Operator
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'\n  '        Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'@['          Operator
'NoInline'    Name.Decorator
']'           Operator
'\n'          Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'\n  '        Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'lib'         Keyword
' '           Text.Whitespace
'LibFoo'      Name.Namespace
'\n  '        Text.Whitespace
'@['          Operator
'CallConvention' Name.Decorator
'('           Punctuation
'"'           Literal.String.Double
'X86_StdCall' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
']'           Operator
'\n  '        Text.Whitespace
'fun'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'sum'         Name.Function
'('           Punctuation
'*'           Operator
'elements'    Name
')'           Punctuation
'\n  '        Text.Whitespace
'total'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n  '        Text.Whitespace
'elements'    Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'value'       Name
'|'           Operator
'\n    '      Text.Whitespace
'total'       Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'value'       Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'total'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# elements is Tuple(Int32, Int32, Int32, Float64)' Comment.Single
'\n'          Text.Whitespace

'sum'         Name
' '           Text.Whitespace
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'3'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'4.5'         Literal.Number.Float
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'a'           Name
'.responds_to?' Keyword.Pseudo
'('           Punctuation
':abs'        Literal.String.Symbol
')'           Punctuation
'\n  '        Text.Whitespace
"# here a's type will be reduced to those responding to the 'abs' method" Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'some_condition' Name
' '           Text.Whitespace
'?'           Punctuation
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'# a : Int32 | String' Comment.Single
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'a'           Name
'.responds_to?' Keyword.Pseudo
'('           Punctuation
':abs'        Literal.String.Symbol
')'           Punctuation
'\n  '        Text.Whitespace
"# here a will be Int32, since Int32#abs exists but String#abs doesn't" Comment.Single
'\n'          Text.Whitespace

'else'        Keyword
'\n  '        Text.Whitespace
'# here a will be String' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'('           Punctuation
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@a'          Name.Variable.Instance
')'           Punctuation
'.responds_to?' Keyword.Pseudo
'('           Punctuation
':abs'        Literal.String.Symbol
')'           Punctuation
'\n  '        Text.Whitespace
'# here a is guaranteed to respond to `abs`' Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'capture'     Name.Function
'('           Punctuation
'&'           Operator
'block'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'block'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'invoke'      Name.Function
'('           Punctuation
'&'           Operator
'block'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'block'       Name
'.'           Operator
'call'        Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'capture'     Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Hello'       Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'invoke'      Name
'('           Punctuation
'&'           Operator
'proc'        Name
')'           Punctuation
' '           Text.Whitespace
'# prints "Hello"' Comment.Single
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'capture'     Name.Function
'('           Punctuation
'&'           Operator
'block'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'block'       Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'twice'       Name.Function
'\n  '        Text.Whitespace
'yield'       Keyword
'\n  '        Text.Whitespace
'yield'       Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'proc'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'capture'     Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Hello'       Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'&'           Operator
'proc'        Name
'\n\n'        Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'&'           Operator
'-'           Operator
'>'           Operator
'{'           Punctuation
' '           Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Hello'       Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'}'           Punctuation
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'say_hello'   Name.Function
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Hello'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'twice'       Name
' '           Text.Whitespace
'&'           Operator
'-'           Operator
'>'           Operator
'say_hello'   Name
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'wrap_foo'    Name.Function
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Before foo'  Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'foo'         Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'x'           Name
'|'           Operator
'\n    '      Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'x'           Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'After foo'   Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'wrap_foo'    Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'i'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'\n  '        Text.Whitespace
'yield'       Keyword
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'def'         Keyword
' '           Text.Whitespace
'wrap_foo'    Name.Function
'('           Punctuation
'&'           Operator
'block'       Name
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'Int32'       Name
' '           Text.Whitespace
'-'           Operator
'>'           Operator
' '           Text.Whitespace
'_'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Before foo'  Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'foo'         Name
'('           Punctuation
'&'           Operator
'block'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'After foo'   Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'wrap_foo'    Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n  '        Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'i'           Name
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'foo_forward' Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n  '        Text.Whitespace
'break'       Keyword
' '           Text.Whitespace
'# error'     Comment.Single
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n'          Text.Whitespace

'while'       Keyword
' '           Text.Whitespace
'('           Punctuation
'a'           Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'20'          Literal.Number.Integer
'\n  '        Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'10'          Literal.Number.Integer
'\n    '      Text.Whitespace
"# goes to 'puts a'" Comment.Single
'\n    '      Text.Whitespace
'break'       Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'puts'        Name.Builtin
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'# => 10'     Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'private'     Keyword
' '           Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'say'         Name.Function
'('           Punctuation
'message'     Name
')'           Punctuation
'\n    '      Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'message'     Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'say_hello'   Name.Function
'\n    '      Text.Whitespace
'say'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'      '      Text.Whitespace
'# OK, no receiver' Comment.Single
'\n    '      Text.Whitespace
'self'        Keyword
'.'           Operator
'say'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# Error, self is a receiver' Comment.Single
'\n\n    '    Text.Whitespace
'other'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Person'      Name
'.'           Operator
'new'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'Other'       Literal.String.Double
'"'           Literal.String.Double
'\n    '      Text.Whitespace
'other'       Name
'.'           Operator
'say'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# Error, other is a receiver' Comment.Single
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Employee'    Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Person'      Name
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'say_bye'     Name.Function
'\n    '      Text.Whitespace
'say'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'bye'         Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'# OK'        Comment.Single
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'module'      Keyword
' '           Text.Whitespace
'Namespace'   Name.Namespace
'\n  '        Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'Foo'         Name.Class
'\n    '      Text.Whitespace
'protected'   Keyword
' '           Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'foo'         Name.Function
'\n      '    Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'Hello'       Literal.String.Double
'"'           Literal.String.Double
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'Bar'         Name.Class
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'bar'         Name.Function
'\n      '    Text.Whitespace
'# Works, because Foo and Bar are under Namespace' Comment.Single
'\n      '    Text.Whitespace
'Foo'         Name
'.'           Operator
'new'         Name
'.'           Operator
'foo'         Name
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'Namespace'   Name
'::'          Operator
'Bar'         Name
'.'           Operator
'new'         Name
'.'           Operator
'bar'         Name
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Person'      Name.Class
'\n  '        Text.Whitespace
'protected'   Keyword
' '           Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'say'         Name.Function
'('           Punctuation
'message'     Name
')'           Punctuation
'\n    '      Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'message'     Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'say_hello'   Name.Function
'\n    '      Text.Whitespace
'Person'      Name
'.'           Operator
'say'         Name
' '           Text.Whitespace
'"'           Literal.String.Double
'hello'       Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'buffer'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'uninitialized' Keyword.Pseudo
' '           Text.Whitespace
'UInt8'       Name
'['           Operator
'256'         Literal.Number.Integer
']'           Operator
'\n\n'        Text.Whitespace

'foo'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'rand'        Name.Builtin
'('           Punctuation
'5'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'>'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
'?'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'nil'         Keyword.Constant
'\n\n'        Text.Whitespace

'foo'         Name
'.'           Operator
'not_nil!'    Name
'.'           Operator
'to_i'        Name
'\n'          Text.Whitespace
