'#!/bin/wren' Comment.Special
'\n\n'        Text.Whitespace

'/*'          Comment.Multiline
' IMPORTS '   Comment.Multiline
'*/'          Comment.Multiline
'\n'          Text.Whitespace

'import'      Keyword
' '           Text.Whitespace
'"'           Literal.String
'random'      Literal.String
'"'           Literal.String
' '           Text.Whitespace
'for'         Keyword
' '           Text.Whitespace
'Random'      Name.Class
' '           Text.Whitespace
'as'          Keyword
' '           Text.Whitespace
'Rand'        Name.Class
'\n\n'        Text.Whitespace

'/*'          Comment.Multiline
' COMMENTS '  Comment.Multiline
'*/'          Comment.Multiline
'\n\n'        Text.Whitespace

'//  single line comment' Comment.Single
'\n\n'        Text.Whitespace

'/*'          Comment.Multiline
'\n    multiline comment\n    ' Comment.Multiline
'/*'          Comment.Multiline
'\n        nested multiline comment\n    ' Comment.Multiline
'*/'          Comment.Multiline
'\n'          Comment.Multiline

'*/'          Comment.Multiline
'\n\n'        Text.Whitespace

'/*'          Comment.Multiline
' CLASSES & ATTRIBUTES ' Comment.Multiline
'*/'          Comment.Multiline
'\n\n'        Text.Whitespace

'#!type = "parent"' Comment.Special
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Parent'      Name.Class
' '           Text.Whitespace
'{'           Punctuation
'\n    '      Text.Whitespace
'#method'     Comment.Special
'\n    '      Text.Whitespace
'static'      Keyword
' '           Text.Whitespace
'setField'    Name
' '           Text.Whitespace
'('           Punctuation
'field'       Name
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
'\n        '  Text.Whitespace
'__field'     Name.Variable.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'field'       Name
'\n    '      Text.Whitespace
'}'           Punctuation
'\n\n    '    Text.Whitespace
'construct'   Keyword
' '           Text.Whitespace
'new'         Name
'('           Punctuation
'parent'      Name
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
'\n        '  Text.Whitespace
'_parent'     Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'parent'      Name
'\n        '  Text.Whitespace
'return'      Keyword
'\n    '      Text.Whitespace
'}'           Punctuation
'\n\n    '    Text.Whitespace
'parent'      Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'_parent'     Name.Variable.Instance
' '           Text.Whitespace
'}'           Punctuation
'\n\n    '    Text.Whitespace
'foreign'     Keyword
' '           Text.Whitespace
'method'      Name
'('           Punctuation
')'           Punctuation
'\n'          Text.Whitespace

'}'           Punctuation
'\n\n'        Text.Whitespace

'#!type = "child"' Comment.Special
'\n'          Text.Whitespace

'#group(\n    multiple,\n    lines = true\n)' Comment.Special
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Child'       Name.Class
' '           Text.Whitespace
'is'          Operator.Word
' '           Text.Whitespace
'Parent'      Name.Class
' '           Text.Whitespace
'{'           Punctuation
'\n    '      Text.Whitespace
'construct'   Keyword
' '           Text.Whitespace
'new'         Name
'('           Punctuation
'parent'      Name
','           Punctuation
' '           Text.Whitespace
'child'       Name
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
'\n        '  Text.Whitespace
'super'       Keyword
'('           Punctuation
'parent'      Name
')'           Punctuation
'\n        '  Text.Whitespace
'_child'      Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'child'       Name
'\n    '      Text.Whitespace
'}'           Punctuation
'\n\n    '    Text.Whitespace
'child'       Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'_child'      Name.Variable.Instance
' '           Text.Whitespace
'}'           Punctuation
'\n\n    '    Text.Whitespace
'toString'    Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'this'        Keyword
'.'           Operator
'parent'      Name
' '           Text.Whitespace
'}'           Punctuation
'\n'          Text.Whitespace

'}'           Punctuation
'\n\n'        Text.Whitespace

'/*'          Comment.Multiline
' VARIABLES & STRINGS ' Comment.Multiline
'*/'          Comment.Multiline
'\n\n'        Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'rand'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Rand'        Name.Class
'.'           Operator
'new'         Name
'('           Punctuation
')'           Punctuation
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'name'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"""David"""' Literal.String
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'fullName'    Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String
'%('          Literal.String.Interpol
'name'        Name
')'           Literal.String.Interpol
' Smith'      Literal.String
'"'           Literal.String
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'firstChild'  Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Child'       Name.Class
'.'           Operator
'new'         Name
'('           Punctuation
'"'           Literal.String
'Philip Smith' Literal.String
'"'           Literal.String
','           Punctuation
' '           Text.Whitespace
'fullName'    Name
')'           Punctuation
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'age'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'21'          Literal.Number.Float
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'weight'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'70.25'       Literal.Number.Float
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'male'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'true'        Keyword.Constant
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'sex'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'male'        Name
' '           Text.Whitespace
'?'           Operator
' '           Text.Whitespace
'"'           Literal.String
'M'           Literal.String
'"'           Literal.String
' '           Text.Whitespace
':'           Operator
' '           Text.Whitespace
'"'           Literal.String
'F'           Literal.String
'"'           Literal.String
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'address'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"""\n    "House name" 12 Any Street\n    Some Town\n    \\t %("Some Country") "\n"""' Literal.String
'\n\n'        Text.Whitespace

'/*'          Comment.Multiline
' LOOPS & CONDITIONALS ' Comment.Multiline
'*/'          Comment.Multiline
'\n'          Text.Whitespace

'for'         Keyword
' '           Text.Whitespace
'('           Punctuation
'i'           Name
' '           Text.Whitespace
'in'          Operator.Word
' '           Text.Whitespace
'1'           Literal.Number.Float
'..'          Operator
'5'           Literal.Number.Float
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
'\n    '      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'('           Punctuation
'i'           Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'2'           Literal.Number.Float
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
'\n        '  Text.Whitespace
'continue'    Keyword
'\n    '      Text.Whitespace
'}'           Punctuation
' '           Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'('           Punctuation
'i'           Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'4'           Literal.Number.Float
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
'\n        '  Text.Whitespace
'break'       Keyword
'\n    '      Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'System'      Name.Class
'.'           Operator
'print'       Name
'('           Punctuation
'i'           Name
')'           Punctuation
'\n'          Text.Whitespace

'}'           Punctuation
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'j'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'6'           Literal.Number.Float
'\n'          Text.Whitespace

'while'       Keyword
' '           Text.Whitespace
'('           Punctuation
'j'           Name
' '           Text.Whitespace
'<='          Operator
' '           Text.Whitespace
'1e+1'        Literal.Number.Float
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
'\n    '      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'('           Punctuation
'j'           Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'8'           Literal.Number.Float
')'           Punctuation
' '           Text.Whitespace
'break'       Keyword
'\n    '      Text.Whitespace
'System'      Name.Class
'.'           Operator
'print'       Name
'('           Punctuation
'j'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'j'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'j'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Float
'\n'          Text.Whitespace

'}'           Punctuation
'\n\n'        Text.Whitespace

'/*'          Comment.Multiline
' ARITHMETIC OPERATORS ' Comment.Multiline
'*/'          Comment.Multiline
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Float
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'b'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'2'           Literal.Number.Float
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'c'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Punctuation
'-'           Operator
'a'           Name
','           Punctuation
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'b'           Name
','           Punctuation
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'-'           Operator
' '           Text.Whitespace
'b'           Name
','           Punctuation
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'*'           Operator
' '           Text.Whitespace
'b'           Name
','           Punctuation
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'/'           Operator
' '           Text.Whitespace
'b'           Name
','           Punctuation
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'%'           Operator
' '           Text.Whitespace
'b'           Name
']'           Punctuation
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'add'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'c'           Name
'['           Punctuation
'1'           Literal.Number.Float
']'           Punctuation
'\n\n'        Text.Whitespace

'/*'          Comment.Multiline
' BITWISE OPERATORS ' Comment.Multiline
'*/'          Comment.Multiline
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'd'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'3'           Literal.Number.Float
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'e'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'4'           Literal.Number.Float
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'f'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Punctuation
'~'           Operator
'd'           Name
','           Punctuation
' '           Text.Whitespace
'd'           Name
' '           Text.Whitespace
'&'           Operator
' '           Text.Whitespace
'e'           Name
','           Punctuation
' '           Text.Whitespace
'd'           Name
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'e'           Name
','           Punctuation
' '           Text.Whitespace
'd'           Name
' '           Text.Whitespace
'^'           Operator
' '           Text.Whitespace
'e'           Name
','           Punctuation
' '           Text.Whitespace
'd'           Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'2'           Literal.Number.Float
','           Punctuation
' '           Text.Whitespace
'e'           Name
' '           Text.Whitespace
'>>'          Operator
' '           Text.Whitespace
'1'           Literal.Number.Float
']'           Punctuation
'\n\n'        Text.Whitespace

'/*'          Comment.Multiline
' COMPARISON OPERATORS ' Comment.Multiline
'*/'          Comment.Multiline
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'g'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'5'           Literal.Number.Float
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'h'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'6'           Literal.Number.Float
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'i'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Punctuation
'a'           Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'b'           Name
','           Punctuation
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'!='          Operator
' '           Text.Whitespace
'b'           Name
','           Punctuation
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'b'           Name
','           Punctuation
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'<='          Operator
' '           Text.Whitespace
'b'           Name
','           Punctuation
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'>'           Operator
' '           Text.Whitespace
'b'           Name
','           Punctuation
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'>='          Operator
' '           Text.Whitespace
'b'           Name
']'           Punctuation
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'k'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'firstChild'  Name
' '           Text.Whitespace
'is'          Operator.Word
' '           Text.Whitespace
'Parent'      Name.Class
'\n\n'        Text.Whitespace

'/*'          Comment.Multiline
' FUNCTIONS ' Comment.Multiline
'*/'          Comment.Multiline
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'func'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Fn'          Name.Class
'.'           Operator
'new'         Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'param'       Name
'|'           Operator
'\n    '      Text.Whitespace
'var'         Keyword
' '           Text.Whitespace
'z'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String
'this'        Literal.String
'"'           Literal.String
'\n    '      Text.Whitespace
'System'      Name.Class
'.'           Operator
'print'       Name
'('           Punctuation
'z'           Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'"'           Literal.String
' '           Literal.String
'"'           Literal.String
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'param'       Name
')'           Punctuation
'\n'          Text.Whitespace

'}'           Punctuation
'\n'          Text.Whitespace

'func'        Name
'.'           Operator
'call'        Name
'('           Punctuation
'"'           Literal.String
'function'    Literal.String
'"'           Literal.String
')'           Punctuation
'\n\n'        Text.Whitespace

'/*'          Comment.Multiline
' MISCELLANEOUS ' Comment.Multiline
'*/'          Comment.Multiline
'\n\n'        Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'hex'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0x12ac'      Literal.Number.Hex
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'nul'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'null'        Keyword.Constant
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'l'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'false'       Keyword.Constant
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'm'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'true'        Keyword.Constant
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'n'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'l'           Name
' '           Text.Whitespace
'&&'          Operator
' '           Text.Whitespace
'm'           Name
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'o'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'l'           Name
' '           Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'm'           Name
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'esc'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String
'\\\\'        Literal.String.Escape
' '           Literal.String
'\\%'         Literal.String.Escape
' '           Literal.String
'\\"'         Literal.String.Escape
' '           Literal.String
'\\0'         Literal.String.Escape
' '           Literal.String
'\\a'         Literal.String.Escape
' '           Literal.String
'\\b'         Literal.String.Escape
' '           Literal.String
'\\t'         Literal.String.Escape
' '           Literal.String
'\\f'         Literal.String.Escape
' '           Literal.String
'\\n'         Literal.String.Escape
' '           Literal.String
'\\r'         Literal.String.Escape
' '           Literal.String
'\\v'         Literal.String.Escape
' '           Literal.String
'\\e'         Literal.String.Escape
' '           Literal.String
'\\x01'       Literal.String.Escape
' '           Literal.String
'\\uabcd'     Literal.String.Escape
' '           Literal.String
'\\Uabcdef01' Literal.String.Escape
'"'           Literal.String
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'uni'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String
'£ é 😀  \u200e🎷' Literal.String
'"'           Literal.String
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'map'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'"'           Literal.String
'a'           Literal.String
'"'           Literal.String
':'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Float
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String
'b'           Literal.String
'"'           Literal.String
':'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Float
'}'           Punctuation
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'iex'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String
'%('          Literal.String.Interpol
'map'         Name
'['           Punctuation
'"'           Literal.String
'a'           Literal.String
'"'           Literal.String
']'           Punctuation
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'map'         Name
'['           Punctuation
'('           Punctuation
'"'           Literal.String
'b'           Literal.String
'"'           Literal.String
')'           Punctuation
']'           Punctuation
')'           Literal.String.Interpol
'"'           Literal.String
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'odd'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'('           Punctuation
'1'           Literal.Number.Float
'...'         Operator
'h'           Name
')'           Punctuation
'.'           Operator
'where'       Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
' '           Text.Whitespace
'i'           Name
' '           Text.Whitespace
'%'           Operator
' '           Text.Whitespace
'2'           Literal.Number.Float
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Float
' '           Text.Whitespace
'}'           Punctuation
'\n                 ' Text.Whitespace
'.'           Operator
'toList'      Name
'\n'          Text.Whitespace

'var'         Keyword
' '           Text.Whitespace
'emp'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String
'"'           Literal.String
'\n'          Text.Whitespace
