'module'      Keyword
' '           Text
'simple'      Name
';'           Punctuation
'\n'          Text

'\n'          Text

'// Importing stuff.\n' Comment.Single

'{'           Punctuation
'\n'          Text

'\t'          Text
'function'    Keyword
' '           Text
'loadMod'     Name
'('           Punctuation
'name'        Name
','           Punctuation
' '           Text
'ns'          Name
')'           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'assert'      Keyword
'('           Punctuation
'name'        Name
' '           Text
'=='          Punctuation
' '           Text
'"mod"'       Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\n\t\t'  Text
'ns'          Name
'.'           Punctuation
'x'           Name
' '           Text
'='           Punctuation
' '           Text
'"I\'m x"'    Literal.String
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'ns'          Name
'.'           Punctuation
'foo'         Name
' '           Text
'='           Punctuation
' '           Text
'function'    Keyword
' '           Text
'foo'         Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'writefln'    Name
'('           Punctuation
'"foo"'       Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'ns'          Name
'.'           Punctuation
'bar'         Name
' '           Text
'='           Punctuation
' '           Text
'function'    Keyword
' '           Text
'bar'         Name
'('           Punctuation
'x'           Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'return'      Keyword
' '           Text
'x'           Name
'['           Punctuation
'0'           Literal.Number.Integer
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'ns'          Name
'.'           Punctuation
'baz'         Name
' '           Text
'='           Punctuation
' '           Text
'function'    Keyword
' '           Text
'baz'         Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'writefln'    Name
'('           Punctuation
'x'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\n\t\t'  Text
'foreach'     Keyword
'('           Punctuation
'k'           Name
','           Punctuation
' '           Text
'v'           Name
';'           Punctuation
' '           Text
'ns'          Name
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'if'          Keyword
'('           Punctuation
'isFunction'  Name
'('           Punctuation
'v'           Name
')'           Punctuation
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'v'           Name
'.'           Punctuation
'environment' Name
'('           Punctuation
'ns'          Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'setModuleLoader' Name
'('           Punctuation
'"mod"'       Literal.String
','           Punctuation
' '           Text
'loadMod'     Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'import'      Keyword
' '           Text
'mod'         Name
' '           Text
':'           Punctuation
' '           Text
'foo'         Name
','           Punctuation
' '           Text
'bar'         Name
';'           Punctuation
'\n'          Text

'\t'          Text
'foo'         Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'writefln'    Name
'('           Punctuation
'bar'         Name
'('           Punctuation
'['           Punctuation
'5'           Literal.Number.Integer
']'           Punctuation
')'           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'mod'         Name
'.'           Punctuation
'baz'         Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\n'          Text

'\t'          Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'}'           Punctuation
'\n'          Text

'\n'          Text

'// Super calls.\n' Comment.Single

'{'           Punctuation
'\n'          Text

'\t'          Text
'class'       Keyword
' '           Text
'Base'        Name
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'function'    Keyword
' '           Text
'fork'        Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'writefln'    Name
'('           Punctuation
'"Base fork."' Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\n'          Text

'\t'          Text
'class'       Keyword
' '           Text
'Derived'     Name
' '           Text
':'           Punctuation
' '           Text
'Base'        Name
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'function'    Keyword
' '           Text
'fork'        Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'writefln'    Name
'('           Punctuation
'"Derived fork!"' Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'super'       Keyword
'.'           Punctuation
'fork'        Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'local'       Keyword
' '           Text
'd'           Name
' '           Text
'='           Punctuation
' '           Text
'Derived'     Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'd'           Name
'.'           Punctuation
'fork'        Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'}'           Punctuation
'\n'          Text

'\n'          Text

'// Coroutines and coroutine iteration.\n' Comment.Single

'{'           Punctuation
'\n'          Text

'\t'          Text
'local'       Keyword
' '           Text
'countDown'   Name
' '           Text
'='           Punctuation
' '           Text
'coroutine'   Name
' '           Text
'function'    Keyword
' '           Text
'countDown'   Name
'('           Punctuation
'x'           Name
')'           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'yield'       Keyword
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\n\t\t'  Text
'while'       Keyword
'('           Punctuation
'x'           Name
' '           Text
'>'           Punctuation
' '           Text
'0'           Literal.Number.Integer
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'yield'       Keyword
'('           Punctuation
'x'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'x'           Name
'--'          Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'foreach'     Keyword
'('           Punctuation
'v'           Name
';'           Punctuation
' '           Text
'countDown'   Name
','           Punctuation
' '           Text
'5'           Literal.Number.Integer
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'v'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\n\t'    Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'local'       Keyword
' '           Text
'forEach'     Name
' '           Text
'='           Punctuation
' '           Text
'coroutine'   Name
' '           Text
'function'    Keyword
' '           Text
'forEach'     Name
'('           Punctuation
't'           Name
')'           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'yield'       Keyword
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'foreach'     Keyword
'('           Punctuation
'k'           Name
','           Punctuation
' '           Text
'v'           Name
';'           Punctuation
' '           Text
't'           Name
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'yield'       Keyword
'('           Punctuation
'k'           Name
','           Punctuation
' '           Text
'v'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'foreach'     Keyword
'('           Punctuation
'_'           Name
','           Punctuation
' '           Text
'k'           Name
','           Punctuation
' '           Text
'v'           Name
';'           Punctuation
' '           Text
'forEach'     Name
','           Punctuation
' '           Text
'{'           Punctuation
'hi'          Name
' '           Text
'='           Punctuation
' '           Text
'1'           Literal.Number.Integer
','           Punctuation
' '           Text
'bye'         Name
' '           Text
'='           Punctuation
' '           Text
'2'           Literal.Number.Integer
'}'           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"key: "'     Literal.String
','           Punctuation
' '           Text
'k'           Name
','           Punctuation
' '           Text
'", value: "' Literal.String
','           Punctuation
' '           Text
'v'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'}'           Punctuation
'\n'          Text

'\n'          Text

'// Testing tailcalls.\n' Comment.Single

'{'           Punctuation
'\n'          Text

'\t'          Text
'function'    Keyword
' '           Text
'recurse'     Name
'('           Punctuation
'x'           Name
')'           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"recurse: "' Literal.String
','           Punctuation
' '           Text
'x'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'if'          Keyword
'('           Punctuation
'x'           Name
' '           Text
'=='          Punctuation
' '           Text
'0'           Literal.Number.Integer
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'return'      Keyword
' '           Text
'toString'    Name
'('           Punctuation
'x'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'else'        Keyword
'\n'          Text

'\t\t\t'      Text
'return'      Keyword
' '           Text
'recurse'     Name
'('           Punctuation
'x'           Name
' '           Text
'-'           Punctuation
' '           Text
'1'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
'recurse'     Name
'('           Punctuation
'5'           Literal.Number.Integer
')'           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'class'       Keyword
' '           Text
'A'           Name
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'function'    Keyword
' '           Text
'f'           Name
'('           Punctuation
'x'           Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'writefln'    Name
'('           Punctuation
'"A.f: "'     Literal.String
','           Punctuation
' '           Text
'x'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\n'          Text

'\t\t\t'      Text
'if'          Keyword
'('           Punctuation
'x'           Name
' '           Text
'=='          Punctuation
' '           Text
'0'           Literal.Number.Integer
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'return'      Keyword
' '           Text
'toString'    Name
'('           Punctuation
'x'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'else'        Keyword
'\n'          Text

'\t\t\t\t'    Text
'return'      Keyword
' '           Text
'this'        Keyword
'.'           Punctuation
'f'           Name
'('           Punctuation
'x'           Name
' '           Text
'-'           Punctuation
' '           Text
'1'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
' '           Text
"// call it as this.f to force a 'method' instruction to be generated\n" Comment.Single

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'local'       Keyword
' '           Text
'a'           Name
' '           Text
'='           Punctuation
' '           Text
'A'           Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'writefln'    Name
'('           Punctuation
'a'           Name
'.'           Punctuation
'f'           Name
'('           Punctuation
'5'           Literal.Number.Integer
')'           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'}'           Punctuation
'\n'          Text

'\n'          Text

'{'           Punctuation
'\n'          Text

'\t'          Text
'// A function which lets us define properties for a class.\n' Comment.Single

'\t'          Text
"// The varargs should be a bunch of tables, each with a 'name' field, and 'getter' and/or 'setter' fields.\n" Comment.Single

'\t'          Text
'function'    Keyword
' '           Text
'mixinProperties' Name
'('           Punctuation
'classType'   Name
','           Punctuation
' '           Text
'vararg'      Keyword
')'           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'classType'   Name
'.'           Punctuation
'mProps'      Name
' '           Text
'='           Punctuation
' '           Text
'{'           Punctuation
' '           Text
'}'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'classType'   Name
'.'           Punctuation
'opIndex'     Name
' '           Text
'='           Punctuation
' '           Text
'function'    Keyword
' '           Text
'opIndex'     Name
'('           Punctuation
'key'         Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'local'       Keyword
' '           Text
'prop'        Name
' '           Text
'='           Punctuation
' '           Text
'mProps'      Name
'['           Punctuation
'key'         Name
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'if'          Keyword
'('           Punctuation
'prop'        Name
' '           Text
'is'          Keyword
' '           Text
'null'        Keyword.Constant
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'throw'       Keyword
' '           Text
'format'      Name
'('           Punctuation
'classType'   Name
','           Punctuation
' '           Text
'".opIndex() - Property \'%s\' does not exist"' Literal.String
','           Punctuation
' '           Text
'key'         Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'local'       Keyword
' '           Text
'getter'      Name
' '           Text
'='           Punctuation
' '           Text
'prop'        Name
'.'           Punctuation
'getter'      Name
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'if'          Keyword
'('           Punctuation
'getter'      Name
' '           Text
'is'          Keyword
' '           Text
'null'        Keyword.Constant
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'throw'       Keyword
' '           Text
'format'      Name
'('           Punctuation
'classType'   Name
','           Punctuation
' '           Text
'".opIndex() - Property \'%s\' has no getter"' Literal.String
','           Punctuation
' '           Text
'key'         Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'return'      Keyword
' '           Text
'getter'      Name
'('           Punctuation
'with'        Keyword
' '           Text
'this'        Keyword
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'classType'   Name
'.'           Punctuation
'opIndexAssign' Name
' '           Text
'='           Punctuation
' '           Text
'function'    Keyword
' '           Text
'opIndexAssign' Name
'('           Punctuation
'key'         Name
','           Punctuation
' '           Text
'value'       Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'local'       Keyword
' '           Text
'prop'        Name
' '           Text
'='           Punctuation
' '           Text
'mProps'      Name
'['           Punctuation
'key'         Name
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'if'          Keyword
'('           Punctuation
'prop'        Name
' '           Text
'is'          Keyword
' '           Text
'null'        Keyword.Constant
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'throw'       Keyword
' '           Text
'format'      Name
'('           Punctuation
'classType'   Name
','           Punctuation
' '           Text
'".opIndexAssign() - Property \'%s\' does not exist"' Literal.String
','           Punctuation
' '           Text
'key'         Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'local'       Keyword
' '           Text
'setter'      Name
' '           Text
'='           Punctuation
' '           Text
'prop'        Name
'.'           Punctuation
'setter'      Name
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'if'          Keyword
'('           Punctuation
'setter'      Name
' '           Text
'is'          Keyword
' '           Text
'null'        Keyword.Constant
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'throw'       Keyword
' '           Text
'format'      Name
'('           Punctuation
'classType'   Name
','           Punctuation
' '           Text
'".opIndexAssign() - Property \'%s\' has no setter"' Literal.String
','           Punctuation
' '           Text
'key'         Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'setter'      Name
'('           Punctuation
'with'        Keyword
' '           Text
'this'        Keyword
','           Punctuation
' '           Text
'value'       Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'foreach'     Keyword
'('           Punctuation
'i'           Name
','           Punctuation
' '           Text
'prop'        Name
';'           Punctuation
' '           Text
'['           Punctuation
'vararg'      Keyword
']'           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'if'          Keyword
'('           Punctuation
'!'           Punctuation
'isTable'     Name
'('           Punctuation
'prop'        Name
')'           Punctuation
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'throw'       Keyword
' '           Text
'format'      Name
'('           Punctuation
'"mixinProperties() - property "' Literal.String
','           Punctuation
' '           Text
'i'           Name
','           Punctuation
' '           Text
'" is not a table"' Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'if'          Keyword
'('           Punctuation
'prop'        Name
'.'           Punctuation
'name'        Name
' '           Text
'is'          Keyword
' '           Text
'null'        Keyword.Constant
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'throw'       Keyword
' '           Text
'format'      Name
'('           Punctuation
'"mixinProperties() - property "' Literal.String
','           Punctuation
' '           Text
'i'           Name
','           Punctuation
' '           Text
'" has no name"' Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'if'          Keyword
'('           Punctuation
'prop'        Name
'.'           Punctuation
'setter'      Name
' '           Text
'is'          Keyword
' '           Text
'null'        Keyword.Constant
' '           Text
'&&'          Punctuation
' '           Text
'prop'        Name
'.'           Punctuation
'getter'      Name
' '           Text
'is'          Keyword
' '           Text
'null'        Keyword.Constant
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'throw'       Keyword
' '           Text
'format'      Name
'('           Punctuation
'"mixinProperties() - property \'%s\' has no getter or setter"' Literal.String
','           Punctuation
' '           Text
'prop'        Name
'.'           Punctuation
'name'        Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'classType'   Name
'.'           Punctuation
'mProps'      Name
'['           Punctuation
'prop'        Name
'.'           Punctuation
'name'        Name
']'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'prop'        Name
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'// Create a class to test out.\n' Comment.Single

'\t'          Text
'class'       Keyword
' '           Text
'PropTest'    Name
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'mX'          Name
' '           Text
'='           Punctuation
' '           Text
'0'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\t'        Text
'mY'          Name
' '           Text
'='           Punctuation
' '           Text
'0'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\t'        Text
'mName'       Name
' '           Text
'='           Punctuation
' '           Text
'""'          Literal.String
';'           Punctuation
'\n'          Text

'\t\t\n\t\t'  Text
'function'    Keyword
' '           Text
'constructor' Name
'('           Punctuation
'name'        Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'mName'       Name
' '           Text
'='           Punctuation
' '           Text
'name'        Name
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'function'    Keyword
' '           Text
'toString'    Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'return'      Keyword
' '           Text
'format'      Name
'('           Punctuation
'"name = \'"' Literal.String
','           Punctuation
' '           Text
'mName'       Name
','           Punctuation
' '           Text
'"\' x = "'   Literal.String
','           Punctuation
' '           Text
'mX'          Name
','           Punctuation
' '           Text
'" y = "'     Literal.String
','           Punctuation
' '           Text
'mY'          Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'// Mix in the properties.\n' Comment.Single

'\t'          Text
'mixinProperties' Name
'\n'          Text

'\t'          Text
'('           Punctuation
'\n'          Text

'\t\t'        Text
'PropTest'    Name
','           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'name'        Name
' '           Text
'='           Punctuation
' '           Text
'"x"'         Literal.String
','           Punctuation
'\n'          Text

'\t\t\t\n\t\t\t' Text
'function'    Keyword
' '           Text
'setter'      Name
'('           Punctuation
'value'       Name
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'mX'          Name
' '           Text
'='           Punctuation
' '           Text
'value'       Name
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'}'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'function'    Keyword
' '           Text
'getter'      Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'return'      Keyword
' '           Text
'mX'          Name
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'}'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
','           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'name'        Name
' '           Text
'='           Punctuation
' '           Text
'"y"'         Literal.String
','           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'function'    Keyword
' '           Text
'setter'      Name
'('           Punctuation
'value'       Name
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'mY'          Name
' '           Text
'='           Punctuation
' '           Text
'value'       Name
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'}'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'function'    Keyword
' '           Text
'getter'      Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'return'      Keyword
' '           Text
'mY'          Name
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'}'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
','           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'name'        Name
' '           Text
'='           Punctuation
' '           Text
'"name"'      Literal.String
','           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'function'    Keyword
' '           Text
'getter'      Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'return'      Keyword
' '           Text
'mName'       Name
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'}'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'// Create an instance and try it out.\n' Comment.Single

'\t'          Text
'local'       Keyword
' '           Text
'p'           Name
' '           Text
'='           Punctuation
' '           Text
'PropTest'    Name
'('           Punctuation
'"hello"'     Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
'p'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'p'           Name
'.'           Punctuation
'x'           Name
' '           Text
'='           Punctuation
' '           Text
'46'          Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t'          Text
'p'           Name
'.'           Punctuation
'y'           Name
' '           Text
'='           Punctuation
' '           Text
'123'         Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t'          Text
'p'           Name
'.'           Punctuation
'x'           Name
' '           Text
'='           Punctuation
' '           Text
'p'           Name
'.'           Punctuation
'x'           Name
' '           Text
'+'           Punctuation
' '           Text
'p'           Name
'.'           Punctuation
'y'           Name
';'           Punctuation
'\n'          Text

'\t'          Text
'writefln'    Name
'('           Punctuation
'p'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'// Try to access a nonexistent property.\n' Comment.Single

'\t'          Text
'try'         Keyword
'\n'          Text

'\t\t'        Text
'p'           Name
'.'           Punctuation
'name'        Name
' '           Text
'='           Punctuation
' '           Text
'"crap"'      Literal.String
';'           Punctuation
'\n'          Text

'\t'          Text
'catch'       Keyword
'('           Punctuation
'e'           Name
')'           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"caught: "'  Literal.String
','           Punctuation
' '           Text
'e'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'getTraceback' Name
'('           Punctuation
')'           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'}'           Punctuation
'\n'          Text

'\n'          Text

'// Some container classes.\n' Comment.Single

'{'           Punctuation
'\n'          Text

'\t'          Text
'class'       Keyword
' '           Text
'PQ'          Name
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'mData'       Name
';'           Punctuation
'\n'          Text

'\t\t'        Text
'mLength'     Name
' '           Text
'='           Punctuation
' '           Text
'0'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'function'    Keyword
' '           Text
'constructor' Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'mData'       Name
' '           Text
'='           Punctuation
' '           Text
'array'       Name
'.'           Punctuation
'new'         Name
'('           Punctuation
'15'          Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'function'    Keyword
' '           Text
'insert'      Name
'('           Punctuation
'data'        Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'resizeArray' Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'mData'       Name
'['           Punctuation
'mLength'     Name
']'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'data'        Name
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'local'       Keyword
' '           Text
'index'       Name
' '           Text
'='           Punctuation
' '           Text
'mLength'     Name
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'local'       Keyword
' '           Text
'parentIndex' Name
' '           Text
'='           Punctuation
' '           Text
'('           Punctuation
'index'       Name
' '           Text
'-'           Punctuation
' '           Text
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text
'/'           Punctuation
' '           Text
'2'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'while'       Keyword
'('           Punctuation
'index'       Name
' '           Text
'>'           Punctuation
' '           Text
'0'           Literal.Number.Integer
' '           Text
'&&'          Punctuation
' '           Text
'mData'       Name
'['           Punctuation
'parentIndex' Name
']'           Punctuation
' '           Text
'>'           Punctuation
' '           Text
'mData'       Name
'['           Punctuation
'index'       Name
']'           Punctuation
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'local'       Keyword
' '           Text
'temp'        Name
' '           Text
'='           Punctuation
' '           Text
'mData'       Name
'['           Punctuation
'parentIndex' Name
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'mData'       Name
'['           Punctuation
'parentIndex' Name
']'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'mData'       Name
'['           Punctuation
'index'       Name
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'mData'       Name
'['           Punctuation
'index'       Name
']'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'temp'        Name
';'           Punctuation
'\n'          Text

'\t\n\t\t\t\t' Text
'index'       Name
' '           Text
'='           Punctuation
' '           Text
'parentIndex' Name
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'parentIndex' Name
' '           Text
'='           Punctuation
' '           Text
'('           Punctuation
'index'       Name
' '           Text
'-'           Punctuation
' '           Text
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text
'/'           Punctuation
' '           Text
'2'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'}'           Punctuation
'\n'          Text

'\t\t\t\n\t\t\t' Text
'mLength'     Name
' '           Text
'+='          Punctuation
' '           Text
'1'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'function'    Keyword
' '           Text
'remove'      Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'if'          Keyword
'('           Punctuation
'mLength'     Name
' '           Text
'=='          Punctuation
' '           Text
'0'           Literal.Number.Integer
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'throw'       Keyword
' '           Text
'"PQ.remove() - No items to remove"' Literal.String
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'local'       Keyword
' '           Text
'data'        Name
' '           Text
'='           Punctuation
' '           Text
'mData'       Name
'['           Punctuation
'0'           Literal.Number.Integer
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'mLength'     Name
' '           Text
'-='          Punctuation
' '           Text
'1'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'mData'       Name
'['           Punctuation
'0'           Literal.Number.Integer
']'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'mData'       Name
'['           Punctuation
'mLength'     Name
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\n\t\t\t' Text
'local'       Keyword
' '           Text
'index'       Name
' '           Text
'='           Punctuation
' '           Text
'0'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'local'       Keyword
' '           Text
'left'        Name
' '           Text
'='           Punctuation
' '           Text
'1'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'local'       Keyword
' '           Text
'right'       Name
' '           Text
'='           Punctuation
' '           Text
'2'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'while'       Keyword
'('           Punctuation
'index'       Name
' '           Text
'<'           Punctuation
' '           Text
'mLength'     Name
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'local'       Keyword
' '           Text
'smaller'     Name
';'           Punctuation
'\n'          Text

'\t\t\t\t\n\t\t\t\t' Text
'if'          Keyword
'('           Punctuation
'left'        Name
' '           Text
'>='          Punctuation
' '           Text
'mLength'     Name
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t\t'  Text
'if'          Keyword
'('           Punctuation
'right'       Name
' '           Text
'>='          Punctuation
' '           Text
'mLength'     Name
')'           Punctuation
'\n'          Text

'\t\t\t\t\t\t' Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\t\t\t\t'  Text
'else'        Keyword
'\n'          Text

'\t\t\t\t\t\t' Text
'smaller'     Name
' '           Text
'='           Punctuation
' '           Text
'right'       Name
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'}'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'else'        Keyword
'\n'          Text

'\t\t\t\t'    Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t\t'  Text
'if'          Keyword
'('           Punctuation
'right'       Name
' '           Text
'>='          Punctuation
' '           Text
'mLength'     Name
')'           Punctuation
'\n'          Text

'\t\t\t\t\t\t' Text
'smaller'     Name
' '           Text
'='           Punctuation
' '           Text
'left'        Name
';'           Punctuation
'\n'          Text

'\t\t\t\t\t'  Text
'else'        Keyword
'\n'          Text

'\t\t\t\t\t'  Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t\t\t' Text
'if'          Keyword
'('           Punctuation
'mData'       Name
'['           Punctuation
'left'        Name
']'           Punctuation
' '           Text
'<'           Punctuation
' '           Text
'mData'       Name
'['           Punctuation
'right'       Name
']'           Punctuation
')'           Punctuation
'\n'          Text

'\t\t\t\t\t\t\t' Text
'smaller'     Name
' '           Text
'='           Punctuation
' '           Text
'left'        Name
';'           Punctuation
'\n'          Text

'\t\t\t\t\t\t' Text
'else'        Keyword
'\n'          Text

'\t\t\t\t\t\t\t' Text
'smaller'     Name
' '           Text
'='           Punctuation
' '           Text
'right'       Name
';'           Punctuation
'\n'          Text

'\t\t\t\t\t'  Text
'}'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'}'           Punctuation
'\n'          Text

'\t\n\t\t\t\t' Text
'if'          Keyword
'('           Punctuation
'mData'       Name
'['           Punctuation
'index'       Name
']'           Punctuation
' '           Text
'>'           Punctuation
' '           Text
'mData'       Name
'['           Punctuation
'smaller'     Name
']'           Punctuation
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t\t'  Text
'local'       Keyword
' '           Text
'temp'        Name
' '           Text
'='           Punctuation
' '           Text
'mData'       Name
'['           Punctuation
'index'       Name
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t\t'  Text
'mData'       Name
'['           Punctuation
'index'       Name
']'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'mData'       Name
'['           Punctuation
'smaller'     Name
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t\t'  Text
'mData'       Name
'['           Punctuation
'smaller'     Name
']'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'temp'        Name
';'           Punctuation
'\n'          Text

'\t\t\t\t\t\n\t\t\t\t\t' Text
'index'       Name
' '           Text
'='           Punctuation
' '           Text
'smaller'     Name
';'           Punctuation
'\n'          Text

'\t\t\t\t\t'  Text
'left'        Name
' '           Text
'='           Punctuation
' '           Text
'('           Punctuation
'index'       Name
' '           Text
'*'           Punctuation
' '           Text
'2'           Literal.Number.Integer
')'           Punctuation
' '           Text
'+'           Punctuation
' '           Text
'1'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\t\t\t\t'  Text
'right'       Name
' '           Text
'='           Punctuation
' '           Text
'left'        Name
' '           Text
'+'           Punctuation
' '           Text
'1'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'}'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'else'        Keyword
'\n'          Text

'\t\t\t\t\t'  Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'}'           Punctuation
'\n'          Text

'\t\t\t\n\t\t\t' Text
'return'      Keyword
' '           Text
'data'        Name
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t\t\n\t\t'  Text
'function'    Keyword
' '           Text
'resizeArray' Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'if'          Keyword
'('           Punctuation
'mLength'     Name
' '           Text
'>='          Punctuation
' '           Text
'#'           Punctuation
'mData'       Name
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'mData'       Name
'.'           Punctuation
'length'      Name
'('           Punctuation
'('           Punctuation
'#'           Punctuation
'mData'       Name
' '           Text
'+'           Punctuation
' '           Text
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text
'*'           Punctuation
' '           Text
'2'           Literal.Number.Integer
' '           Text
'-'           Punctuation
' '           Text
'1'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t\t\n\t\t'  Text
'function'    Keyword
' '           Text
'hasData'     Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'return'      Keyword
' '           Text
'mLength'     Name
' '           Text
'!='          Punctuation
' '           Text
'0'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'class'       Keyword
' '           Text
'Stack'       Name
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'mHead'       Name
' '           Text
'='           Punctuation
' '           Text
'null'        Keyword.Constant
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'function'    Keyword
' '           Text
'push'        Name
'('           Punctuation
'data'        Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'local'       Keyword
' '           Text
't'           Name
' '           Text
'='           Punctuation
' '           Text
'{'           Punctuation
' '           Text
'data'        Name
' '           Text
'='           Punctuation
' '           Text
'data'        Name
','           Punctuation
' '           Text
'next'        Name
' '           Text
'='           Punctuation
' '           Text
'mHead'       Name
' '           Text
'}'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'mHead'       Name
' '           Text
'='           Punctuation
' '           Text
't'           Name
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t\t\n\t\t'  Text
'function'    Keyword
' '           Text
'pop'         Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'if'          Keyword
'('           Punctuation
'mHead'       Name
' '           Text
'is'          Keyword
' '           Text
'null'        Keyword.Constant
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'throw'       Keyword
' '           Text
'"Stack.pop() - No items to pop"' Literal.String
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'local'       Keyword
' '           Text
'item'        Name
' '           Text
'='           Punctuation
' '           Text
'mHead'       Name
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'mHead'       Name
' '           Text
'='           Punctuation
' '           Text
'mHead'       Name
'.'           Punctuation
'next'        Name
';'           Punctuation
'\n'          Text

'\t\t\t\n\t\t\t' Text
'return'      Keyword
' '           Text
'item'        Name
'.'           Punctuation
'data'        Name
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'function'    Keyword
' '           Text
'hasData'     Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'return'      Keyword
' '           Text
'mHead'       Name
' '           Text
'!'           Punctuation
'is'          Keyword
' '           Text
'null'        Keyword.Constant
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'class'       Keyword
' '           Text
'Queue'       Name
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'mHead'       Name
' '           Text
'='           Punctuation
' '           Text
'null'        Keyword.Constant
';'           Punctuation
'\n'          Text

'\t\t'        Text
'mTail'       Name
' '           Text
'='           Punctuation
' '           Text
'null'        Keyword.Constant
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'function'    Keyword
' '           Text
'push'        Name
'('           Punctuation
'data'        Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'local'       Keyword
' '           Text
't'           Name
' '           Text
'='           Punctuation
' '           Text
'{'           Punctuation
' '           Text
'data'        Name
' '           Text
'='           Punctuation
' '           Text
'data'        Name
','           Punctuation
' '           Text
'next'        Name
' '           Text
'='           Punctuation
' '           Text
'null'        Keyword.Constant
' '           Text
'}'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'if'          Keyword
'('           Punctuation
'mTail'       Name
' '           Text
'is'          Keyword
' '           Text
'null'        Keyword.Constant
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'mHead'       Name
' '           Text
'='           Punctuation
' '           Text
't'           Name
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'mTail'       Name
' '           Text
'='           Punctuation
' '           Text
't'           Name
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'}'           Punctuation
'\n'          Text

'\t\t\t'      Text
'else'        Keyword
'\n'          Text

'\t\t\t'      Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'mTail'       Name
'.'           Punctuation
'next'        Name
' '           Text
'='           Punctuation
' '           Text
't'           Name
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'mTail'       Name
' '           Text
'='           Punctuation
' '           Text
't'           Name
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'}'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t\t\n\t\t'  Text
'function'    Keyword
' '           Text
'pop'         Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'if'          Keyword
'('           Punctuation
'mTail'       Name
' '           Text
'is'          Keyword
' '           Text
'null'        Keyword.Constant
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'throw'       Keyword
' '           Text
'"Queue.pop() - No items to pop"' Literal.String
';'           Punctuation
'\n'          Text

'\t\t\t\t\n\t\t\t' Text
'local'       Keyword
' '           Text
'item'        Name
' '           Text
'='           Punctuation
' '           Text
'mHead'       Name
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'mHead'       Name
' '           Text
'='           Punctuation
' '           Text
'mHead'       Name
'.'           Punctuation
'next'        Name
';'           Punctuation
'\n'          Text

'\t\t\t\n\t\t\t' Text
'if'          Keyword
'('           Punctuation
'mHead'       Name
' '           Text
'is'          Keyword
' '           Text
'null'        Keyword.Constant
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'mTail'       Name
' '           Text
'='           Punctuation
' '           Text
'null'        Keyword.Constant
';'           Punctuation
'\n'          Text

'\t\t\t\t\n\t\t\t' Text
'return'      Keyword
' '           Text
'item'        Name
'.'           Punctuation
'data'        Name
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t\t\n\t\t'  Text
'function'    Keyword
' '           Text
'hasData'     Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'return'      Keyword
' '           Text
'mHead'       Name
' '           Text
'!'           Punctuation
'is'          Keyword
' '           Text
'null'        Keyword.Constant
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
'"Priority queue (heap)"' Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'local'       Keyword
' '           Text
'prioQ'       Name
' '           Text
'='           Punctuation
' '           Text
'PQ'          Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'for'         Keyword
'('           Punctuation
'i'           Name
' '           Text
':'           Punctuation
' '           Text
'0'           Literal.Number.Integer
' '           Text
'..'          Punctuation
' '           Text
'10'          Literal.Number.Integer
')'           Punctuation
'\n'          Text

'\t\t'        Text
'prioQ'       Name
'.'           Punctuation
'insert'      Name
'('           Punctuation
'math'        Name
'.'           Punctuation
'rand'        Name
'('           Punctuation
'0'           Literal.Number.Integer
','           Punctuation
' '           Text
'20'          Literal.Number.Integer
')'           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'while'       Keyword
'('           Punctuation
'prioQ'       Name
'.'           Punctuation
'hasData'     Name
'('           Punctuation
')'           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'prioQ'       Name
'.'           Punctuation
'remove'      Name
'('           Punctuation
')'           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\n\t'    Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'writefln'    Name
'('           Punctuation
'"Stack"'     Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'local'       Keyword
' '           Text
'stack'       Name
' '           Text
'='           Punctuation
' '           Text
'Stack'       Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'for'         Keyword
'('           Punctuation
'i'           Name
' '           Text
':'           Punctuation
' '           Text
'0'           Literal.Number.Integer
' '           Text
'..'          Punctuation
' '           Text
'5'           Literal.Number.Integer
')'           Punctuation
'\n'          Text

'\t\t'        Text
'stack'       Name
'.'           Punctuation
'push'        Name
'('           Punctuation
'i'           Name
' '           Text
'+'           Punctuation
' '           Text
'1'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'while'       Keyword
'('           Punctuation
'stack'       Name
'.'           Punctuation
'hasData'     Name
'('           Punctuation
')'           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'stack'       Name
'.'           Punctuation
'pop'         Name
'('           Punctuation
')'           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'writefln'    Name
'('           Punctuation
'"Queue"'     Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'local'       Keyword
' '           Text
'queue'       Name
' '           Text
'='           Punctuation
' '           Text
'Queue'       Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'for'         Keyword
'('           Punctuation
'i'           Name
' '           Text
':'           Punctuation
' '           Text
'0'           Literal.Number.Integer
' '           Text
'..'          Punctuation
' '           Text
'5'           Literal.Number.Integer
')'           Punctuation
'\n'          Text

'\t\t'        Text
'queue'       Name
'.'           Punctuation
'push'        Name
'('           Punctuation
'i'           Name
' '           Text
'+'           Punctuation
' '           Text
'1'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'while'       Keyword
'('           Punctuation
'queue'       Name
'.'           Punctuation
'hasData'     Name
'('           Punctuation
')'           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'queue'       Name
'.'           Punctuation
'pop'         Name
'('           Punctuation
')'           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'}'           Punctuation
'\n'          Text

'\n'          Text

'// opApply tests.\n' Comment.Single

'{'           Punctuation
'\n'          Text

'\t'          Text
'class'       Keyword
' '           Text
'Test'        Name
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'mData'       Name
' '           Text
'='           Punctuation
' '           Text
'['           Punctuation
'4'           Literal.Number.Integer
','           Punctuation
' '           Text
'5'           Literal.Number.Integer
','           Punctuation
' '           Text
'6'           Literal.Number.Integer
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'function'    Keyword
' '           Text
'opApply'     Name
'('           Punctuation
'extra'       Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'if'          Keyword
'('           Punctuation
'isString'    Name
'('           Punctuation
'extra'       Name
')'           Punctuation
' '           Text
'&&'          Punctuation
' '           Text
'extra'       Name
' '           Text
'=='          Punctuation
' '           Text
'"reverse"'   Literal.String
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'local'       Keyword
' '           Text
'function'    Keyword
' '           Text
'iterator_reverse' Name
'('           Punctuation
'index'       Name
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t\t'  Text
'index'       Name
'--'          Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t\t\n\t\t\t\t\t' Text
'if'          Keyword
'('           Punctuation
'index'       Name
' '           Text
'<'           Punctuation
' '           Text
'0'           Literal.Number.Integer
')'           Punctuation
'\n'          Text

'\t\t\t\t\t\t' Text
'return'      Keyword
';'           Punctuation
'\n'          Text

'\t\t\t\t\t\t\n\t\t\t\t\t' Text
'return'      Keyword
' '           Text
'index'       Name
','           Punctuation
' '           Text
'mData'       Name
'['           Punctuation
'index'       Name
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'}'           Punctuation
'\n'          Text

'\t\n\t\t\t\t' Text
'return'      Keyword
' '           Text
'iterator_reverse' Name
','           Punctuation
' '           Text
'this'        Keyword
','           Punctuation
' '           Text
'#'           Punctuation
'mData'       Name
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'}'           Punctuation
'\n'          Text

'\t\t\t'      Text
'else'        Keyword
'\n'          Text

'\t\t\t'      Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'local'       Keyword
' '           Text
'function'    Keyword
' '           Text
'iterator'    Name
'('           Punctuation
'index'       Name
')'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t\t'  Text
'index'       Name
'++'          Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t\t\t\t' Text
'if'          Keyword
'('           Punctuation
'index'       Name
' '           Text
'>='          Punctuation
' '           Text
'#'           Punctuation
'mData'       Name
')'           Punctuation
'\n'          Text

'\t\t\t\t\t\t' Text
'return'      Keyword
';'           Punctuation
'\n'          Text

'\t\t\n\t\t\t\t\t' Text
'return'      Keyword
' '           Text
'index'       Name
','           Punctuation
' '           Text
'mData'       Name
'['           Punctuation
'index'       Name
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'}'           Punctuation
'\n'          Text

'\t\n\t\t\t\t' Text
'return'      Keyword
' '           Text
'iterator'    Name
','           Punctuation
' '           Text
'this'        Keyword
','           Punctuation
' '           Text
'-'           Punctuation
'1'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'}'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'local'       Keyword
' '           Text
'test'        Name
' '           Text
'='           Punctuation
' '           Text
'Test'        Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'foreach'     Keyword
'('           Punctuation
'k'           Name
','           Punctuation
' '           Text
'v'           Name
';'           Punctuation
' '           Text
'test'        Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"test["'     Literal.String
','           Punctuation
' '           Text
'k'           Name
','           Punctuation
' '           Text
'"] = "'      Literal.String
','           Punctuation
' '           Text
'v'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'foreach'     Keyword
'('           Punctuation
'k'           Name
','           Punctuation
' '           Text
'v'           Name
';'           Punctuation
' '           Text
'test'        Name
','           Punctuation
' '           Text
'"reverse"'   Literal.String
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"test["'     Literal.String
','           Punctuation
' '           Text
'k'           Name
','           Punctuation
' '           Text
'"] = "'      Literal.String
','           Punctuation
' '           Text
'v'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\n\t'    Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'test'        Name
' '           Text
'='           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'fork'        Name
' '           Text
'='           Punctuation
' '           Text
'5'           Literal.Number.Integer
','           Punctuation
'\n'          Text

'\t\t'        Text
'knife'       Name
' '           Text
'='           Punctuation
' '           Text
'10'          Literal.Number.Integer
','           Punctuation
'\n'          Text

'\t\t'        Text
'spoon'       Name
' '           Text
'='           Punctuation
' '           Text
'"hi"'        Literal.String
'\n'          Text

'\t'          Text
'}'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'foreach'     Keyword
'('           Punctuation
'k'           Name
','           Punctuation
' '           Text
'v'           Name
';'           Punctuation
' '           Text
'test'        Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"test["'     Literal.String
','           Punctuation
' '           Text
'k'           Name
','           Punctuation
' '           Text
'"] = "'      Literal.String
','           Punctuation
' '           Text
'v'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'test'        Name
' '           Text
'='           Punctuation
' '           Text
'['           Punctuation
'5'           Literal.Number.Integer
','           Punctuation
' '           Text
'10'          Literal.Number.Integer
','           Punctuation
' '           Text
'"hi"'        Literal.String
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'foreach'     Keyword
'('           Punctuation
'k'           Name
','           Punctuation
' '           Text
'v'           Name
';'           Punctuation
' '           Text
'test'        Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"test["'     Literal.String
','           Punctuation
' '           Text
'k'           Name
','           Punctuation
' '           Text
'"] = "'      Literal.String
','           Punctuation
' '           Text
'v'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'foreach'     Keyword
'('           Punctuation
'k'           Name
','           Punctuation
' '           Text
'v'           Name
';'           Punctuation
' '           Text
'test'        Name
','           Punctuation
' '           Text
'"reverse"'   Literal.String
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"test["'     Literal.String
','           Punctuation
' '           Text
'k'           Name
','           Punctuation
' '           Text
'"] = "'      Literal.String
','           Punctuation
' '           Text
'v'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'foreach'     Keyword
'('           Punctuation
'k'           Name
','           Punctuation
' '           Text
'v'           Name
';'           Punctuation
' '           Text
'"hello"'     Literal.String
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"str["'      Literal.String
','           Punctuation
' '           Text
'k'           Name
','           Punctuation
' '           Text
'"] = "'      Literal.String
','           Punctuation
' '           Text
'v'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'foreach'     Keyword
'('           Punctuation
'k'           Name
','           Punctuation
' '           Text
'v'           Name
';'           Punctuation
' '           Text
'"hello"'     Literal.String
','           Punctuation
' '           Text
'"reverse"'   Literal.String
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"str["'      Literal.String
','           Punctuation
' '           Text
'k'           Name
','           Punctuation
' '           Text
'"] = "'      Literal.String
','           Punctuation
' '           Text
'v'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'}'           Punctuation
'\n'          Text

'\n'          Text

'// Testing upvalues in for loops.\n' Comment.Single

'{'           Punctuation
'\n'          Text

'\t'          Text
'local'       Keyword
' '           Text
'arr'         Name
' '           Text
'='           Punctuation
' '           Text
'array'       Name
'.'           Punctuation
'new'         Name
'('           Punctuation
'10'          Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'for'         Keyword
'('           Punctuation
'i'           Name
' '           Text
':'           Punctuation
' '           Text
'0'           Literal.Number.Integer
' '           Text
'..'          Punctuation
' '           Text
'10'          Literal.Number.Integer
')'           Punctuation
'\n'          Text

'\t\t'        Text
'arr'         Name
'['           Punctuation
'i'           Name
']'           Punctuation
' '           Text
'='           Punctuation
' '           Text
'function'    Keyword
'('           Punctuation
')'           Punctuation
' '           Text
'{'           Punctuation
' '           Text
'return'      Keyword
' '           Text
'i'           Name
';'           Punctuation
' '           Text
'}'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
'"This should be the values 0 through 9:"' Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'foreach'     Keyword
'('           Punctuation
'func'        Name
';'           Punctuation
' '           Text
'arr'         Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'func'        Name
'('           Punctuation
')'           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'}'           Punctuation
'\n'          Text

'\n'          Text

'// Testing nested functions.\n' Comment.Single

'{'           Punctuation
'\n'          Text

'\t'          Text
'function'    Keyword
' '           Text
'outer'       Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'local'       Keyword
' '           Text
'x'           Name
' '           Text
'='           Punctuation
' '           Text
'3'           Literal.Number.Integer
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'function'    Keyword
' '           Text
'inner'       Name
'('           Punctuation
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'x'           Name
'++'          Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'writefln'    Name
'('           Punctuation
'"inner x: "' Literal.String
','           Punctuation
' '           Text
'x'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'writefln'    Name
'('           Punctuation
'"outer x: "' Literal.String
','           Punctuation
' '           Text
'x'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'inner'       Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"outer x: "' Literal.String
','           Punctuation
' '           Text
'x'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'return'      Keyword
' '           Text
'inner'       Name
';'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'local'       Keyword
' '           Text
'func'        Name
' '           Text
'='           Punctuation
' '           Text
'outer'       Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'func'        Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'}'           Punctuation
'\n'          Text

'\n'          Text

'// Testing Exceptions.\n' Comment.Single

'{'           Punctuation
'\n'          Text

'\t'          Text
'function'    Keyword
' '           Text
'thrower'     Name
'('           Punctuation
'x'           Name
')'           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'if'          Keyword
'('           Punctuation
'x'           Name
' '           Text
'>='          Punctuation
' '           Text
'3'           Literal.Number.Integer
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'throw'       Keyword
' '           Text
'"Sorry, x is too big for me!"' Literal.String
';'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'function'    Keyword
' '           Text
'tryCatch'    Name
'('           Punctuation
'iterations'  Name
')'           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'try'         Keyword
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'for'         Keyword
'('           Punctuation
'i'           Name
' '           Text
':'           Punctuation
' '           Text
'0'           Literal.Number.Integer
' '           Text
'..'          Punctuation
' '           Text
'iterations'  Name
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'{'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'writefln'    Name
'('           Punctuation
'"tryCatch: "' Literal.String
','           Punctuation
' '           Text
'i'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'thrower'     Name
'('           Punctuation
'i'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'}'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t\t'        Text
'catch'       Keyword
'('           Punctuation
'e'           Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'writefln'    Name
'('           Punctuation
'"tryCatch caught: "' Literal.String
','           Punctuation
' '           Text
'e'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'throw'       Keyword
' '           Text
'e'           Name
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t\t'        Text
'finally'     Keyword
'\n'          Text

'\t\t\t'      Text
'writefln'    Name
'('           Punctuation
'"tryCatch finally"' Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'try'         Keyword
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'tryCatch'    Name
'('           Punctuation
'2'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t'        Text
'tryCatch'    Name
'('           Punctuation
'5'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'catch'       Keyword
'('           Punctuation
'e'           Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"caught: "'  Literal.String
','           Punctuation
' '           Text
'e'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'}'           Punctuation
'\n'          Text

'\n'          Text

'// Testing arrays.\n' Comment.Single

'{'           Punctuation
'\n'          Text

'\t'          Text
'local'       Keyword
' '           Text
'array'       Name
' '           Text
'='           Punctuation
' '           Text
'['           Punctuation
'7'           Literal.Number.Integer
','           Punctuation
' '           Text
'9'           Literal.Number.Integer
','           Punctuation
' '           Text
'2'           Literal.Number.Integer
','           Punctuation
' '           Text
'3'           Literal.Number.Integer
','           Punctuation
' '           Text
'6'           Literal.Number.Integer
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'array'       Name
'.'           Punctuation
'sort'        Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'foreach'     Keyword
'('           Punctuation
'i'           Name
','           Punctuation
' '           Text
'v'           Name
';'           Punctuation
' '           Text
'array'       Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"arr["'      Literal.String
','           Punctuation
' '           Text
'i'           Name
','           Punctuation
' '           Text
'"] = "'      Literal.String
','           Punctuation
' '           Text
'v'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'array'       Name
' '           Text
'~='          Punctuation
' '           Text
'['           Punctuation
'"foo"'       Literal.String
','           Punctuation
' '           Text
'"far"'       Literal.String
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'foreach'     Keyword
'('           Punctuation
'i'           Name
','           Punctuation
' '           Text
'v'           Name
';'           Punctuation
' '           Text
'array'       Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'writefln'    Name
'('           Punctuation
'"arr["'      Literal.String
','           Punctuation
' '           Text
'i'           Name
','           Punctuation
' '           Text
'"] = "'      Literal.String
','           Punctuation
' '           Text
'v'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'}'           Punctuation
'\n'          Text

'\n'          Text

'// Testing vararg functions.\n' Comment.Single

'{'           Punctuation
'\n'          Text

'\t'          Text
'function'    Keyword
' '           Text
'vargs'       Name
'('           Punctuation
'vararg'      Keyword
')'           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'local'       Keyword
' '           Text
'args'        Name
' '           Text
'='           Punctuation
' '           Text
'['           Punctuation
'vararg'      Keyword
']'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'writefln'    Name
'('           Punctuation
'"num varargs: "' Literal.String
','           Punctuation
' '           Text
'#'           Punctuation
'args'        Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'foreach'     Keyword
'('           Punctuation
'i'           Name
','           Punctuation
' '           Text
'v'           Name
';'           Punctuation
' '           Text
'args'        Name
')'           Punctuation
'\n'          Text

'\t\t\t'      Text
'writefln'    Name
'('           Punctuation
'"args["'     Literal.String
','           Punctuation
' '           Text
'i'           Name
','           Punctuation
' '           Text
'"] = "'      Literal.String
','           Punctuation
' '           Text
'v'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'vargs'       Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'vargs'       Name
'('           Punctuation
'2'           Literal.Number.Integer
','           Punctuation
' '           Text
'3'           Literal.Number.Integer
','           Punctuation
' '           Text
'5'           Literal.Number.Integer
','           Punctuation
' '           Text
'"foo"'       Literal.String
','           Punctuation
' '           Text
'"bar"'       Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'}'           Punctuation
'\n'          Text

'\n'          Text

'// Testing switches.\n' Comment.Single

'{'           Punctuation
'\n'          Text

'\t'          Text
'foreach'     Keyword
'('           Punctuation
'v'           Name
';'           Punctuation
' '           Text
'['           Punctuation
'"hi"'        Literal.String
','           Punctuation
' '           Text
'"bye"'       Literal.String
','           Punctuation
' '           Text
'"foo"'       Literal.String
']'           Punctuation
')'           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'switch'      Keyword
'('           Punctuation
'v'           Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'case'        Keyword
' '           Text
'"hi"'        Literal.String
':'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'writefln'    Name
'('           Punctuation
'"switched to hi"' Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\t\t\t\n\t\t\t' Text
'case'        Keyword
' '           Text
'"bye"'       Literal.String
':'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'writefln'    Name
'('           Punctuation
'"switched to bye"' Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\t\t\t\n\t\t\t' Text
'default'     Keyword
':'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'writefln'    Name
'('           Punctuation
'"switched to something else"' Literal.String
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'foreach'     Keyword
'('           Punctuation
'v'           Name
';'           Punctuation
' '           Text
'['           Punctuation
'null'        Keyword.Constant
','           Punctuation
' '           Text
'false'       Keyword.Constant
','           Punctuation
' '           Text
'1'           Literal.Number.Integer
','           Punctuation
' '           Text
'2.3'         Literal.Number.Float
','           Punctuation
' '           Text
"'x'"         Literal.String.Char
','           Punctuation
' '           Text
'"hi"'        Literal.String
']'           Punctuation
')'           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'switch'      Keyword
'('           Punctuation
'v'           Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'case'        Keyword
' '           Text
'null'        Keyword.Constant
':'           Punctuation
' '           Text
'writefln'    Name
'('           Punctuation
'"null"'      Literal.String
')'           Punctuation
';'           Punctuation
' '           Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'case'        Keyword
' '           Text
'false'       Keyword.Constant
':'           Punctuation
' '           Text
'writefln'    Name
'('           Punctuation
'"false"'     Literal.String
')'           Punctuation
';'           Punctuation
' '           Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'case'        Keyword
' '           Text
'1'           Literal.Number.Integer
':'           Punctuation
' '           Text
'writefln'    Name
'('           Punctuation
'"1"'         Literal.String
')'           Punctuation
';'           Punctuation
' '           Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'case'        Keyword
' '           Text
'2.3'         Literal.Number.Float
':'           Punctuation
' '           Text
'writefln'    Name
'('           Punctuation
'"2.3"'       Literal.String
')'           Punctuation
';'           Punctuation
' '           Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'case'        Keyword
' '           Text
"'x'"         Literal.String.Char
':'           Punctuation
' '           Text
'writefln'    Name
'('           Punctuation
'"x"'         Literal.String
')'           Punctuation
';'           Punctuation
' '           Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'case'        Keyword
' '           Text
'"hi"'        Literal.String
':'           Punctuation
' '           Text
'writefln'    Name
'('           Punctuation
'"hi"'        Literal.String
')'           Punctuation
';'           Punctuation
' '           Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'writefln'    Name
'('           Punctuation
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'class'       Keyword
' '           Text
'A'           Name
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'mValue'      Name
';'           Punctuation
'\n'          Text

'\t\t\n\t\t'  Text
'this'        Keyword
'('           Punctuation
'value'       Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'mValue'      Name
' '           Text
'='           Punctuation
' '           Text
'value'       Name
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'function'    Keyword
' '           Text
'opCmp'       Name
'('           Punctuation
'other'       Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'assert'      Keyword
'('           Punctuation
'other'       Name
' '           Text
'as'          Keyword
' '           Text
'A'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t'      Text
'return'      Keyword
' '           Text
'mValue'      Name
' '           Text
'<=>'         Punctuation
' '           Text
'other'       Name
'.'           Punctuation
'mValue'      Name
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'\t\n\t'      Text
'local'       Keyword
' '           Text
'a1'          Name
' '           Text
'='           Punctuation
' '           Text
'A'           Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'local'       Keyword
' '           Text
'a2'          Name
' '           Text
'='           Punctuation
' '           Text
'A'           Name
'('           Punctuation
'2'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t'          Text
'local'       Keyword
' '           Text
'a3'          Name
' '           Text
'='           Punctuation
' '           Text
'A'           Name
'('           Punctuation
'3'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t'      Text
'for'         Keyword
'('           Punctuation
's'           Name
' '           Text
':'           Punctuation
' '           Text
'1'           Literal.Number.Integer
' '           Text
'..'          Punctuation
' '           Text
'4'           Literal.Number.Integer
')'           Punctuation
'\n'          Text

'\t'          Text
'{'           Punctuation
'\n'          Text

'\t\t'        Text
'local'       Keyword
' '           Text
'ss'          Name
' '           Text
'='           Punctuation
' '           Text
'A'           Name
'('           Punctuation
's'           Name
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\n\t\t'    Text
'switch'      Keyword
'('           Punctuation
'ss'          Name
')'           Punctuation
'\n'          Text

'\t\t'        Text
'{'           Punctuation
'\n'          Text

'\t\t\t'      Text
'case'        Keyword
' '           Text
'a1'          Name
':'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'writefln'    Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'case'        Keyword
' '           Text
'a2'          Name
':'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'writefln'    Name
'('           Punctuation
'2'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\n\t\t\t'  Text
'case'        Keyword
' '           Text
'a3'          Name
':'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'writefln'    Name
'('           Punctuation
'3'           Literal.Number.Integer
')'           Punctuation
';'           Punctuation
'\n'          Text

'\t\t\t\t'    Text
'break'       Keyword
';'           Punctuation
'\n'          Text

'\t\t'        Text
'}'           Punctuation
'\n'          Text

'\t'          Text
'}'           Punctuation
'\n'          Text

'}'           Punctuation
'\n'          Text
