'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