'-- transform.moon' Comment.Single '\n' Text.Whitespace '-- Leaf Corcoran (leafot@gmail.com) 2011' Comment.Single '\n' Text.Whitespace '--' Comment.Single '\n' Text.Whitespace '-- This is part of the MoonScript compiler. See ' Comment.Single '\n' Text.Whitespace '-- MoonScript is licensed under the MIT License' Comment.Single '\n' Text.Whitespace '--' Comment.Single '\n' Text.Whitespace '\n' Text.Whitespace 'module' Name ' ' Text '"' Literal.String.Double 'moonscript.transform' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'package' Name '.' Operator 'seeall' Name '\n' Text.Whitespace '\n' Text.Whitespace 'types' Name ' ' Text '=' Operator ' ' Text 'require' Name.Builtin ' ' Text '"' Literal.String.Double 'moonscript.types' Literal.String '"' Literal.String.Double '\n' Text.Whitespace 'util' Name ' ' Text '=' Operator ' ' Text 'require' Name.Builtin ' ' Text '"' Literal.String.Double 'moonscript.util' Literal.String '"' Literal.String.Double '\n' Text.Whitespace 'data' Name ' ' Text '=' Operator ' ' Text 'require' Name.Builtin ' ' Text '"' Literal.String.Double 'moonscript.data' Literal.String '"' Literal.String.Double '\n' Text.Whitespace '\n' Text.Whitespace 'import' Keyword ' ' Text 'reversed' Name ' ' Text 'from' Keyword ' ' Text 'util' Name '\n' Text.Whitespace 'import' Keyword ' ' Text 'ntype' Name ',' Punctuation ' ' Text 'build' Name ',' Punctuation ' ' Text 'smart_node' Name ',' Punctuation ' ' Text 'is_slice' Name ' ' Text 'from' Keyword ' ' Text 'types' Name '\n' Text.Whitespace 'import' Keyword ' ' Text 'insert' Name ' ' Text 'from' Keyword ' ' Text 'table' Name '\n' Text.Whitespace '\n' Text.Whitespace 'export' Keyword ' ' Text 'Statement' Name.Class ',' Punctuation ' ' Text 'Value' Name.Class ',' Punctuation ' ' Text 'NameProxy' Name.Class ',' Punctuation ' ' Text 'LocalName' Name.Class ',' Punctuation ' ' Text 'Run' Name.Class '\n' Text.Whitespace '\n' Text.Whitespace '-- always declares as local' Comment.Single '\n' Text.Whitespace 'class' Keyword ' ' Text 'LocalName' Name.Class '\n' Text.Whitespace ' ' Text 'new:' Name.Variable ' ' Text '(' Keyword.Type '@name' Name.Variable.Class ')' Keyword.Type ' ' Text '=>' Name.Function ' ' Text 'self' Name.Builtin.Pseudo '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type ' ' Text '=' Operator ' ' Text '"' Literal.String.Double 'temp_name' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'get_name:' Name.Variable ' ' Text '=>' Name.Function ' ' Text '@name' Name.Variable.Class '\n' Text.Whitespace '\n' Text.Whitespace 'class' Keyword ' ' Text 'NameProxy' Name.Class '\n' Text.Whitespace ' ' Text 'new:' Name.Variable ' ' Text '(' Keyword.Type '@prefix' Name.Variable.Class ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'self' Name.Builtin.Pseudo '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type ' ' Text '=' Operator ' ' Text '"' Literal.String.Double 'temp_name' Literal.String '"' Literal.String.Double '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'get_name:' Name.Variable ' ' Text '(' Keyword.Type 'scope' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'not' Keyword ' ' Text '@name' Name.Variable.Class '\n' Text.Whitespace ' ' Text '@name' Name.Variable.Class ' ' Text '=' Operator ' ' Text 'scope' Name '\\' Operator 'free_name' Name ' ' Text '@prefix' Name.Variable.Class ',' Punctuation ' ' Text 'true' Keyword.Constant '\n' Text.Whitespace ' ' Text '@name' Name.Variable.Class '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'chain:' Name.Variable ' ' Text '(' Keyword.Type '...' Operator ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'items' Name ' ' Text '=' Operator ' ' Text '{' Keyword.Type '...' Operator '}' Keyword.Type ' ' Text '-- todo: fix ... propagation' Comment.Single '\n' Text.Whitespace ' ' Text 'items' Name ' ' Text '=' Operator ' ' Text 'for' Keyword ' ' Text 'i' Name ' ' Text 'in' Keyword ' ' Text '*' Operator 'items' Name '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'type' Name.Builtin '(' Keyword.Type 'i' Name ')' Keyword.Type ' ' Text '==' Operator ' ' Text '"' Literal.String.Double 'string' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'dot' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'i' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'i' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'chain' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'base:' Name.Variable ' ' Text 'self' Name.Builtin.Pseudo '\n' Text.Whitespace ' ' Text 'unpack' Name ' ' Text 'items' Name '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'index:' Name.Variable ' ' Text '(' Keyword.Type 'key' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'chain' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'base:' Name.Variable ' ' Text 'self' Name.Builtin.Pseudo ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'index' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'key' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '__tostring:' Name.Variable ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text '@name' Name.Variable.Class '\n' Text.Whitespace ' ' Text '(' Keyword.Type '"' Literal.String.Double 'name<%s>' Literal.String '"' Literal.String.Double ')' Keyword.Type '\\' Operator 'format' Name ' ' Text '@name' Name.Variable.Class '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text '(' Keyword.Type '"' Literal.String.Double 'name' Literal.String '"' Literal.String.Double ')' Keyword.Type '\\' Operator 'format' Name ' ' Text '@prefix' Name.Variable.Class '\n' Text.Whitespace '\n' Text.Whitespace 'class' Keyword ' ' Text 'Run' Name.Class '\n' Text.Whitespace ' ' Text 'new:' Name.Variable ' ' Text '(' Keyword.Type '@fn' Name.Variable.Class ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'self' Name.Builtin.Pseudo '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type ' ' Text '=' Operator ' ' Text '"' Literal.String.Double 'run' Literal.String '"' Literal.String.Double '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'call:' Name.Variable ' ' Text '(' Keyword.Type 'state' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'self' Name.Builtin.Pseudo '.' Operator 'fn' Name ' ' Text 'state' Name '\n' Text.Whitespace '\n' Text.Whitespace '-- transform the last stm is a list of stms' Comment.Single '\n' Text.Whitespace '-- will puke on group' Comment.Single '\n' Text.Whitespace 'apply_to_last' Name ' ' Text '=' Operator ' ' Text '(' Keyword.Type 'stms' Name ',' Punctuation ' ' Text 'fn' Name ')' Keyword.Type ' ' Text '->' Name.Function '\n' Text.Whitespace ' ' Text '-- find last (real) exp' Comment.Single '\n' Text.Whitespace ' ' Text 'last_exp_id' Name ' ' Text '=' Operator ' ' Text '0' Literal.Number.Integer '\n' Text.Whitespace ' ' Text 'for' Keyword ' ' Text 'i' Name ' ' Text '=' Operator ' ' Text '#' Operator 'stms' Name ',' Punctuation ' ' Text '1' Literal.Number.Integer ',' Punctuation ' ' Text '-' Operator '1' Literal.Number.Integer '\n' Text.Whitespace ' ' Text 'stm' Name ' ' Text '=' Operator ' ' Text 'stms' Name '[' Keyword.Type 'i' Name ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'stm' Name ' ' Text 'and' Keyword ' ' Text 'util' Name '.' Operator 'moon' Name '.' Operator 'type' Name.Builtin '(' Keyword.Type 'stm' Name ')' Keyword.Type ' ' Text '!=' Operator ' ' Text 'Run' Name.Class '\n' Text.Whitespace ' ' Text 'last_exp_id' Name ' ' Text '=' Operator ' ' Text 'i' Name '\n' Text.Whitespace ' ' Text 'break' Keyword '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'return' Keyword ' ' Text 'for' Keyword ' ' Text 'i' Name ',' Punctuation ' ' Text 'stm' Name ' ' Text 'in' Keyword ' ' Text 'ipairs' Name.Builtin ' ' Text 'stms' Name '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'i' Name ' ' Text '==' Operator ' ' Text 'last_exp_id' Name '\n' Text.Whitespace ' ' Text 'fn' Name ' ' Text 'stm' Name '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'stm' Name '\n' Text.Whitespace '\n' Text.Whitespace '-- is a body a sindle expression/statement' Comment.Single '\n' Text.Whitespace 'is_singular' Name ' ' Text '=' Operator ' ' Text '(' Keyword.Type 'body' Name ')' Keyword.Type ' ' Text '->' Name.Function '\n' Text.Whitespace ' ' Text 'return' Keyword ' ' Text 'false' Keyword.Constant ' ' Text 'if' Keyword ' ' Text '#' Operator 'body' Name ' ' Text '!=' Operator ' ' Text '1' Literal.Number.Integer '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text '"' Literal.String.Double 'group' Literal.String '"' Literal.String.Double ' ' Text '==' Operator ' ' Text 'ntype' Name ' ' Text 'body' Name '\n' Text.Whitespace ' ' Text 'is_singular' Name ' ' Text 'body' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'true' Keyword.Constant '\n' Text.Whitespace '\n' Text.Whitespace 'constructor_name' Name ' ' Text '=' Operator ' ' Text '"' Literal.String.Double 'new' Literal.String '"' Literal.String.Double '\n' Text.Whitespace '\n' Text.Whitespace 'class' Keyword ' ' Text 'Transformer' Name.Class '\n' Text.Whitespace ' ' Text 'new:' Name.Variable ' ' Text '(' Keyword.Type '@transformers' Name.Variable.Class ',' Punctuation ' ' Text '@scope' Name.Variable.Class ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '@seen_nodes' Name.Variable.Class ' ' Text '=' Operator ' ' Text '{' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'transform:' Name.Variable ' ' Text '(' Keyword.Type 'scope' Name ',' Punctuation ' ' Text 'node' Name ',' Punctuation ' ' Text '...' Operator ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '-- print scope, node, ...' Comment.Single '\n' Text.Whitespace ' ' Text 'return' Keyword ' ' Text 'node' Name ' ' Text 'if' Keyword ' ' Text '@seen_nodes' Name.Variable.Class '[' Keyword.Type 'node' Name ']' Keyword.Type '\n' Text.Whitespace ' ' Text '@seen_nodes' Name.Variable.Class '[' Keyword.Type 'node' Name ']' Keyword.Type ' ' Text '=' Operator ' ' Text 'true' Keyword.Constant '\n' Text.Whitespace ' ' Text 'while' Keyword ' ' Text 'true' Keyword.Constant '\n' Text.Whitespace ' ' Text 'transformer' Name ' ' Text '=' Operator ' ' Text '@transformers' Name.Variable.Class '[' Keyword.Type 'ntype' Name ' ' Text 'node' Name ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'res' Name ' ' Text '=' Operator ' ' Text 'if' Keyword ' ' Text 'transformer' Name '\n' Text.Whitespace ' ' Text 'transformer' Name '(' Keyword.Type 'scope' Name ',' Punctuation ' ' Text 'node' Name ',' Punctuation ' ' Text '...' Operator ')' Keyword.Type ' ' Text 'or' Keyword ' ' Text 'node' Name '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'node' Name '\n' Text.Whitespace ' ' Text 'return' Keyword ' ' Text 'node' Name ' ' Text 'if' Keyword ' ' Text 'res' Name ' ' Text '==' Operator ' ' Text 'node' Name '\n' Text.Whitespace ' ' Text 'node' Name ' ' Text '=' Operator ' ' Text 'res' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '__call:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ',' Punctuation ' ' Text '...' Operator ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '@transform' Name.Variable.Class ' ' Text '@scope' Name.Variable.Class ',' Punctuation ' ' Text 'node' Name ',' Punctuation ' ' Text '...' Operator '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'instance:' Name.Variable ' ' Text '(' Keyword.Type 'scope' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'Transformer' Name.Class ' ' Text '@transformers' Name.Variable.Class ',' Punctuation ' ' Text 'scope' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'can_transform:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '@transformers' Name.Variable.Class '[' Keyword.Type 'ntype' Name ' ' Text 'node' Name ']' Keyword.Type ' ' Text '!=' Operator ' ' Text 'nil' Keyword.Constant '\n' Text.Whitespace '\n' Text.Whitespace 'construct_comprehension' Name ' ' Text '=' Operator ' ' Text '(' Keyword.Type 'inner' Name ',' Punctuation ' ' Text 'clauses' Name ')' Keyword.Type ' ' Text '->' Name.Function '\n' Text.Whitespace ' ' Text 'current_stms' Name ' ' Text '=' Operator ' ' Text 'inner' Name '\n' Text.Whitespace ' ' Text 'for' Keyword ' ' Text '_' Name ',' Punctuation ' ' Text 'clause' Name ' ' Text 'in' Keyword ' ' Text 'reversed' Name ' ' Text 'clauses' Name '\n' Text.Whitespace ' ' Text 't' Name ' ' Text '=' Operator ' ' Text 'clause' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'current_stms' Name ' ' Text '=' Operator ' ' Text 'if' Keyword ' ' Text 't' Name ' ' Text '==' Operator ' ' Text '"' Literal.String.Double 'for' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text '_' Name ',' Punctuation ' ' Text 'names' Name ',' Punctuation ' ' Text 'iter' Name ' ' Text '=' Operator ' ' Text 'unpack' Name ' ' Text 'clause' Name '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'foreach' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'names' Name ',' Punctuation ' ' Text 'iter' Name ',' Punctuation ' ' Text 'current_stms' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'elseif' Keyword ' ' Text 't' Name ' ' Text '==' Operator ' ' Text '"' Literal.String.Double 'when' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text '_' Name ',' Punctuation ' ' Text 'cond' Name ' ' Text '=' Operator ' ' Text 'unpack' Name ' ' Text 'clause' Name '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'if' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'cond' Name ',' Punctuation ' ' Text 'current_stms' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'error' Name.Builtin ' ' Text '"' Literal.String.Double 'Unknown comprehension clause: ' Literal.String '"' Literal.String.Double '..' Operator 't' Name '\n' Text.Whitespace ' ' Text 'current_stms' Name ' ' Text '=' Operator ' ' Text '{' Keyword.Type 'current_stms' Name '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'current_stms' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace 'Statement' Name.Class ' ' Text '=' Operator ' ' Text 'Transformer' Name.Class ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'assign:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '_' Name ',' Punctuation ' ' Text 'names' Name ',' Punctuation ' ' Text 'values' Name ' ' Text '=' Operator ' ' Text 'unpack' Name ' ' Text 'node' Name '\n' Text.Whitespace ' ' Text '-- bubble cascading assigns' Comment.Single '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text '#' Operator 'values' Name ' ' Text '==' Operator ' ' Text '1' Literal.Number.Integer ' ' Text 'and' Keyword ' ' Text 'types' Name '.' Operator 'cascading' Name '[' Keyword.Type 'ntype' Name ' ' Text 'values' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'values' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type ' ' Text '=' Operator ' ' Text '@transform' Name.Variable.Class '.' Operator 'statement' Name ' ' Text 'values' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type ',' Punctuation ' ' Text '(' Keyword.Type 'stm' Name ')' Keyword.Type ' ' Text '->' Name.Function '\n' Text.Whitespace ' ' Text 't' Name ' ' Text '=' Operator ' ' Text 'ntype' Name ' ' Text 'stm' Name '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'types' Name '.' Operator 'is_value' Name ' ' Text 'stm' Name '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'assign' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'names' Name ',' Punctuation ' ' Text '{' Keyword.Type 'stm' Name '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'stm' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'group' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'declare' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'names' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'values' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'node' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'export:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '-- assign values if they are included' Comment.Single '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text '#' Operator 'node' Name ' ' Text '>' Operator ' ' Text '2' Literal.Number.Integer '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'node' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type ' ' Text '==' Operator ' ' Text '"' Literal.String.Double 'class' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'cls' Name ' ' Text '=' Operator ' ' Text 'smart_node' Name ' ' Text 'node' Name '[' Keyword.Type '3' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'group' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'export' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type 'cls' Name '.' Operator 'name' Name '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'cls' Name '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'group' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'node' Name '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'names:' Name.Variable ' ' Text 'node' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'values:' Name.Variable ' ' Text 'node' Name '[' Keyword.Type '3' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'nil' Keyword.Constant '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'update:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '_' Name ',' Punctuation ' ' Text 'name' Name ',' Punctuation ' ' Text 'op' Name ',' Punctuation ' ' Text 'exp' Name ' ' Text '=' Operator ' ' Text 'unpack' Name ' ' Text 'node' Name '\n' Text.Whitespace ' ' Text 'op_final' Name ' ' Text '=' Operator ' ' Text 'op' Name '\\' Operator 'match' Name ' ' Text '"' Literal.String.Double '^(.+)=$' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'error' Name.Builtin ' ' Text '"' Literal.String.Double 'Unknown op: ' Literal.String '"' Literal.String.Double '..' Operator 'op' Name ' ' Text 'if' Keyword ' ' Text 'not' Keyword ' ' Text 'op_final' Name '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text 'name' Name ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'exp' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'name' Name ',' Punctuation ' ' Text 'op_final' Name ',' Punctuation ' ' Text 'exp' Name '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'import:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '_' Name ',' Punctuation ' ' Text 'names' Name ',' Punctuation ' ' Text 'source' Name ' ' Text '=' Operator ' ' Text 'unpack' Name ' ' Text 'node' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'stubs' Name ' ' Text '=' Operator ' ' Text 'for' Keyword ' ' Text 'name' Name ' ' Text 'in' Keyword ' ' Text '*' Operator 'names' Name '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'type' Name.Builtin '(' Keyword.Type 'name' Name ')' Keyword.Type ' ' Text '==' Operator ' ' Text '"' Literal.String.Double 'table' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'name' Name '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'dot' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'name' Name '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'real_names' Name ' ' Text '=' Operator ' ' Text 'for' Keyword ' ' Text 'name' Name ' ' Text 'in' Keyword ' ' Text '*' Operator 'names' Name '\n' Text.Whitespace ' ' Text 'type' Name.Builtin '(' Keyword.Type 'name' Name ')' Keyword.Type ' ' Text '==' Operator ' ' Text '"' Literal.String.Double 'table' Literal.String '"' Literal.String.Double ' ' Text 'and' Keyword ' ' Text 'name' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type ' ' Text 'or' Keyword ' ' Text 'name' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'type' Name.Builtin '(' Keyword.Type 'source' Name ')' Keyword.Type ' ' Text '==' Operator ' ' Text '"' Literal.String.Double 'string' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'names:' Name.Variable ' ' Text 'real_names' Name '\n' Text.Whitespace ' ' Text 'values:' Name.Variable ' ' Text '[' Keyword.Type 'build' Name '.' Operator 'chain' Name ' ' Text '{' Keyword.Type ' ' Text 'base:' Name.Variable ' ' Text 'source' Name ',' Punctuation ' ' Text 'stub' Name '}' Keyword.Type ' ' Text 'for' Keyword ' ' Text 'stub' Name ' ' Text 'in' Keyword ' ' Text '*' Operator 'stubs' Name ']' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'source_name' Name ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'table' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'group' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'declare' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'real_names' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '[' Keyword.Type '"' Literal.String.Double 'do' Literal.String '"' Literal.String.Double ']' Keyword.Type ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text 'source_name' Name ',' Punctuation ' ' Text 'source' Name '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'names:' Name.Variable ' ' Text 'real_names' Name '\n' Text.Whitespace ' ' Text 'values:' Name.Variable ' ' Text '[' Keyword.Type 'build' Name '.' Operator 'chain' Name ' ' Text '{' Keyword.Type ' ' Text 'base:' Name.Variable ' ' Text 'source_name' Name ',' Punctuation ' ' Text 'stub' Name '}' Keyword.Type ' ' Text 'for' Keyword ' ' Text 'stub' Name ' ' Text 'in' Keyword ' ' Text '*' Operator 'stubs' Name ']' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'comprehension:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ',' Punctuation ' ' Text 'action' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '_' Name ',' Punctuation ' ' Text 'exp' Name ',' Punctuation ' ' Text 'clauses' Name ' ' Text '=' Operator ' ' Text 'unpack' Name ' ' Text 'node' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'action' Name ' ' Text '=' Operator ' ' Text 'action' Name ' ' Text 'or' Keyword ' ' Text '(' Keyword.Type 'exp' Name ')' Keyword.Type ' ' Text '->' Name.Function ' ' Text '{' Keyword.Type 'exp' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'construct_comprehension' Name ' ' Text 'action' Name '(' Keyword.Type 'exp' Name ')' Keyword.Type ',' Punctuation ' ' Text 'clauses' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '-- handle cascading return decorator' Comment.Single '\n' Text.Whitespace ' ' Text 'if:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ',' Punctuation ' ' Text 'ret' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'ret' Name '\n' Text.Whitespace ' ' Text 'smart_node' Name ' ' Text 'node' Name '\n' Text.Whitespace ' ' Text '-- mutate all the bodies' Comment.Single '\n' Text.Whitespace ' ' Text 'node' Name '[' Keyword.Type "'" Literal.String.Single 'then' Literal.String "'" Literal.String.Single ']' Keyword.Type ' ' Text '=' Operator ' ' Text 'apply_to_last' Name ' ' Text 'node' Name '[' Keyword.Type "'" Literal.String.Single 'then' Literal.String "'" Literal.String.Single ']' Keyword.Type ',' Punctuation ' ' Text 'ret' Name '\n' Text.Whitespace ' ' Text 'for' Keyword ' ' Text 'i' Name ' ' Text '=' Operator ' ' Text '4' Literal.Number.Integer ',' Punctuation ' ' Text '#' Operator 'node' Name '\n' Text.Whitespace ' ' Text 'case' Name ' ' Text '=' Operator ' ' Text 'node' Name '[' Keyword.Type 'i' Name ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'body_idx' Name ' ' Text '=' Operator ' ' Text '#' Operator 'node' Name '[' Keyword.Type 'i' Name ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'case' Name '[' Keyword.Type 'body_idx' Name ']' Keyword.Type ' ' Text '=' Operator ' ' Text 'apply_to_last' Name ' ' Text 'case' Name '[' Keyword.Type 'body_idx' Name ']' Keyword.Type ',' Punctuation ' ' Text 'ret' Name '\n' Text.Whitespace ' ' Text 'node' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'with:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ',' Punctuation ' ' Text 'ret' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '_' Name ',' Punctuation ' ' Text 'exp' Name ',' Punctuation ' ' Text 'block' Name ' ' Text '=' Operator ' ' Text 'unpack' Name ' ' Text 'node' Name '\n' Text.Whitespace ' ' Text 'scope_name' Name ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'with' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'build' Name '[' Keyword.Type '"' Literal.String.Double 'do' Literal.String '"' Literal.String.Double ']' Keyword.Type ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text 'scope_name' Name ',' Punctuation ' ' Text 'exp' Name '\n' Text.Whitespace ' ' Text 'Run' Name.Class ' ' Text '=>' Name.Function ' ' Text '@set' Name.Variable.Class ' ' Text '"' Literal.String.Double 'scope_var' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'scope_name' Name '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'group' Name ' ' Text 'block' Name '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'ret' Name '\n' Text.Whitespace ' ' Text 'ret' Name ' ' Text 'scope_name' Name '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'foreach:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'smart_node' Name ' ' Text 'node' Name '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'ntype' Name '(' Keyword.Type 'node' Name '.' Operator 'iter' Name ')' Keyword.Type ' ' Text '==' Operator ' ' Text '"' Literal.String.Double 'unpack' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'list' Name ' ' Text '=' Operator ' ' Text 'node' Name '.' Operator 'iter' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'index_name' Name ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'index' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'list_name' Name ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'list' Literal.String '"' Literal.String.Double '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'slice_var' Name ' ' Text '=' Operator ' ' Text 'nil' Keyword.Constant '\n' Text.Whitespace ' ' Text 'bounds' Name ' ' Text '=' Operator ' ' Text 'if' Keyword ' ' Text 'is_slice' Name ' ' Text 'list' Name '\n' Text.Whitespace ' ' Text 'slice' Name ' ' Text '=' Operator ' ' Text 'list' Name '[' Keyword.Type '#' Operator 'list' Name ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'table.remove' Name.Builtin ' ' Text 'list' Name '\n' Text.Whitespace ' ' Text 'table.remove' Name.Builtin ' ' Text 'slice' Name ',' Punctuation ' ' Text '1' Literal.Number.Integer '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'slice' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type ' ' Text '=' Operator ' ' Text 'if' Keyword ' ' Text 'slice' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type ' ' Text 'and' Keyword ' ' Text 'slice' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type ' ' Text '!=' Operator ' ' Text '"' Literal.String.Double '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'max_tmp_name' Name ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'max' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'slice_var' Name ' ' Text '=' Operator ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text 'max_tmp_name' Name ',' Punctuation ' ' Text 'slice' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'exp' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'max_tmp_name' Name ',' Punctuation ' ' Text '"' Literal.String.Double '<' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '0' Literal.Number.Integer '\n' Text.Whitespace ' ' Text '"' Literal.String.Double 'and' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'length' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'list_name' Name '}' Keyword.Type ',' Punctuation ' ' Text '"' Literal.String.Double '+' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'max_tmp_name' Name '\n' Text.Whitespace ' ' Text '"' Literal.String.Double 'or' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'max_tmp_name' Name ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'length' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'list_name' Name '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'slice' Name '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text '{' Keyword.Type '1' Literal.Number.Integer ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'length' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'list_name' Name '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'group' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text 'list_name' Name ',' Punctuation ' ' Text 'list' Name '\n' Text.Whitespace ' ' Text 'slice_var' Name '\n' Text.Whitespace ' ' Text 'build' Name '[' Keyword.Type '"' Literal.String.Double 'for' Literal.String '"' Literal.String.Double ']' Keyword.Type ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'name:' Name.Variable ' ' Text 'index_name' Name '\n' Text.Whitespace ' ' Text 'bounds:' Name.Variable ' ' Text 'bounds' Name '\n' Text.Whitespace ' ' Text 'body:' Name.Variable ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'assign' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'node' Name '.' Operator 'names' Name ',' Punctuation ' ' Text '{' Keyword.Type 'list_name' Name '\\' Operator 'index' Name ' ' Text 'index_name' Name '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'group' Name ' ' Text 'node' Name '.' Operator 'body' Name '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'switch:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ',' Punctuation ' ' Text 'ret' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '_' Name ',' Punctuation ' ' Text 'exp' Name ',' Punctuation ' ' Text 'conds' Name ' ' Text '=' Operator ' ' Text 'unpack' Name ' ' Text 'node' Name '\n' Text.Whitespace ' ' Text 'exp_name' Name ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'exp' Literal.String '"' Literal.String.Double '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '-- convert switch conds into if statment conds' Comment.Single '\n' Text.Whitespace ' ' Text 'convert_cond' Name ' ' Text '=' Operator ' ' Text '(' Keyword.Type 'cond' Name ')' Keyword.Type ' ' Text '->' Name.Function '\n' Text.Whitespace ' ' Text 't' Name ',' Punctuation ' ' Text 'case_exp' Name ',' Punctuation ' ' Text 'body' Name ' ' Text '=' Operator ' ' Text 'unpack' Name ' ' Text 'cond' Name '\n' Text.Whitespace ' ' Text 'out' Name ' ' Text '=' Operator ' ' Text '{' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'out' Name ',' Punctuation ' ' Text 't' Name ' ' Text '==' Operator ' ' Text '"' Literal.String.Double 'case' Literal.String '"' Literal.String.Double ' ' Text 'and' Keyword ' ' Text '"' Literal.String.Double 'elseif' Literal.String '"' Literal.String.Double ' ' Text 'or' Keyword ' ' Text '"' Literal.String.Double 'else' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 't' Name ' ' Text '!=' Operator ' ' Text '"' Literal.String.Double 'else' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'out' Name ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'exp' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'case_exp' Name ',' Punctuation ' ' Text '"' Literal.String.Double '==' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'exp_name' Name '}' Keyword.Type ' ' Text 'if' Keyword ' ' Text 't' Name ' ' Text '!=' Operator ' ' Text '"' Literal.String.Double 'else' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'body' Name ' ' Text '=' Operator ' ' Text 'case_exp' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'ret' Name '\n' Text.Whitespace ' ' Text 'body' Name ' ' Text '=' Operator ' ' Text 'apply_to_last' Name ' ' Text 'body' Name ',' Punctuation ' ' Text 'ret' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'out' Name ',' Punctuation ' ' Text 'body' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'out' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'first' Name ' ' Text '=' Operator ' ' Text 'true' Keyword.Constant '\n' Text.Whitespace ' ' Text 'if_stm' Name ' ' Text '=' Operator ' ' Text '{' Keyword.Type '"' Literal.String.Double 'if' Literal.String '"' Literal.String.Double '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'for' Keyword ' ' Text 'cond' Name ' ' Text 'in' Keyword ' ' Text '*' Operator 'conds' Name '\n' Text.Whitespace ' ' Text 'if_cond' Name ' ' Text '=' Operator ' ' Text 'convert_cond' Name ' ' Text 'cond' Name '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'first' Name '\n' Text.Whitespace ' ' Text 'first' Name ' ' Text '=' Operator ' ' Text 'false' Keyword.Constant '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'if_stm' Name ',' Punctuation ' ' Text 'if_cond' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'if_stm' Name ',' Punctuation ' ' Text 'if_cond' Name '[' Keyword.Type '3' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'if_stm' Name ',' Punctuation ' ' Text 'if_cond' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'group' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text 'exp_name' Name ',' Punctuation ' ' Text 'exp' Name '\n' Text.Whitespace ' ' Text 'if_stm' Name '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'class:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '_' Name ',' Punctuation ' ' Text 'name' Name ',' Punctuation ' ' Text 'parent_val' Name ',' Punctuation ' ' Text 'body' Name ' ' Text '=' Operator ' ' Text 'unpack' Name ' ' Text 'node' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '-- split apart properties and statements' Comment.Single '\n' Text.Whitespace ' ' Text 'statements' Name ' ' Text '=' Operator ' ' Text '{' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'properties' Name ' ' Text '=' Operator ' ' Text '{' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'for' Keyword ' ' Text 'item' Name ' ' Text 'in' Keyword ' ' Text '*' Operator 'body' Name '\n' Text.Whitespace ' ' Text 'switch' Keyword ' ' Text 'item' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'when' Keyword ' ' Text '"' Literal.String.Double 'stm' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'statements' Name ',' Punctuation ' ' Text 'item' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'when' Keyword ' ' Text '"' Literal.String.Double 'props' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'for' Keyword ' ' Text 'tuple' Name ' ' Text 'in' Keyword ' ' Text '*' Operator 'item' Name '[' Keyword.Type '2' Literal.Number.Integer ',' Punctuation ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'properties' Name ',' Punctuation ' ' Text 'tuple' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '-- find constructor' Comment.Single '\n' Text.Whitespace ' ' Text 'constructor' Name ' ' Text '=' Operator ' ' Text 'nil' Keyword.Constant '\n' Text.Whitespace ' ' Text 'properties' Name ' ' Text '=' Operator ' ' Text 'for' Keyword ' ' Text 'tuple' Name ' ' Text 'in' Keyword ' ' Text '*' Operator 'properties' Name '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'tuple' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type ' ' Text '==' Operator ' ' Text 'constructor_name' Name '\n' Text.Whitespace ' ' Text 'constructor' Name ' ' Text '=' Operator ' ' Text 'tuple' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'nil' Keyword.Constant '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'tuple' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'parent_cls_name' Name ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'parent' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'base_name' Name ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'base' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'self_name' Name ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'self' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'cls_name' Name ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'class' Literal.String '"' Literal.String.Double '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'not' Keyword ' ' Text 'constructor' Name '\n' Text.Whitespace ' ' Text 'constructor' Name ' ' Text '=' Operator ' ' Text 'build' Name '.' Operator 'fndef' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'args:' Name.Variable ' ' Text '{' Keyword.Type '{' Keyword.Type '"' Literal.String.Double '...' Literal.String '"' Literal.String.Double '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'arrow:' Name.Variable ' ' Text '"' Literal.String.Double 'fat' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'body:' Name.Variable ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '[' Keyword.Type '"' Literal.String.Double 'if' Literal.String '"' Literal.String.Double ']' Keyword.Type ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'cond:' Name.Variable ' ' Text 'parent_cls_name' Name '\n' Text.Whitespace ' ' Text 'then:' Name.Variable ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'chain' Name ' ' Text '{' Keyword.Type ' ' Text 'base:' Name.Variable ' ' Text '"' Literal.String.Double 'super' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'call' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double '...' Literal.String '"' Literal.String.Double '}' Keyword.Type '}' Keyword.Type ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'smart_node' Name ' ' Text 'constructor' Name '\n' Text.Whitespace ' ' Text 'constructor' Name '.' Operator 'arrow' Name ' ' Text '=' Operator ' ' Text '"' Literal.String.Double 'fat' Literal.String '"' Literal.String.Double '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'cls' Name ' ' Text '=' Operator ' ' Text 'build' Name '.' Operator 'table' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double '__init' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'constructor' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double '__base' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'base_name' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double '__name' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'string' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text "'" Literal.String.Single '"' Literal.String "'" Literal.String.Single ',' Punctuation ' ' Text 'name' Name '}' Keyword.Type '}' Keyword.Type ' ' Text '-- "quote the string"' Comment.Single '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double '__parent' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'parent_cls_name' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '-- look up a name in the class object' Comment.Single '\n' Text.Whitespace ' ' Text 'class_lookup' Name ' ' Text '=' Operator ' ' Text 'build' Name '[' Keyword.Type '"' Literal.String.Double 'if' Literal.String '"' Literal.String.Double ']' Keyword.Type ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'cond:' Name.Variable ' ' Text '{' Keyword.Type '"' Literal.String.Double 'exp' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '"' Literal.String.Double 'val' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '"' Literal.String.Double '==' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '"' Literal.String.Double 'nil' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '"' Literal.String.Double 'and' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'parent_cls_name' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'then:' Name.Variable ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'parent_cls_name' Name '\\' Operator 'index' Name '"' Literal.String.Double 'name' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'class_lookup' Name ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'else' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'val' Literal.String '"' Literal.String.Double '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'cls_mt' Name ' ' Text '=' Operator ' ' Text 'build' Name '.' Operator 'table' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double '__index' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'build' Name '.' Operator 'fndef' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'args:' Name.Variable ' ' Text '{' Keyword.Type '{' Keyword.Type '"' Literal.String.Double 'cls' Literal.String '"' Literal.String.Double '}' Keyword.Type ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'name' Literal.String '"' Literal.String.Double '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'body:' Name.Variable ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text 'LocalName' Name.Class '"' Literal.String.Double 'val' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'build' Name '.' Operator 'chain' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'base:' Name.Variable ' ' Text '"' Literal.String.Double 'rawget' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'call' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type 'base_name' Name ',' Punctuation ' ' Text '"' Literal.String.Double 'name' Literal.String '"' Literal.String.Double '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'class_lookup' Name '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double '__call' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'build' Name '.' Operator 'fndef' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'args:' Name.Variable ' ' Text '{' Keyword.Type '{' Keyword.Type '"' Literal.String.Double 'cls' Literal.String '"' Literal.String.Double '}' Keyword.Type ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double '...' Literal.String '"' Literal.String.Double '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'body:' Name.Variable ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text 'self_name' Name ',' Punctuation ' ' Text 'build' Name '.' Operator 'chain' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'base:' Name.Variable ' ' Text '"' Literal.String.Double 'setmetatable' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'call' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double '{}' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'base_name' Name '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'chain' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'base:' Name.Variable ' ' Text '"' Literal.String.Double 'cls.__init' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'call' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type 'self_name' Name ',' Punctuation ' ' Text '"' Literal.String.Double '...' Literal.String '"' Literal.String.Double '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'self_name' Name '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'cls' Name ' ' Text '=' Operator ' ' Text 'build' Name '.' Operator 'chain' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'base:' Name.Variable ' ' Text '"' Literal.String.Double 'setmetatable' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'call' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type 'cls' Name ',' Punctuation ' ' Text 'cls_mt' Name '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'value' Name ' ' Text '=' Operator ' ' Text 'nil' Keyword.Constant '\n' Text.Whitespace ' ' Text 'with' Keyword ' ' Text 'build' Name '\n' Text.Whitespace ' ' Text 'value' Name ' ' Text '=' Operator ' ' Text '.' Operator 'block_exp' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'Run' Name.Class ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '@set' Name.Variable.Class ' ' Text '"' Literal.String.Double 'super' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '(' Keyword.Type 'block' Name ',' Punctuation ' ' Text 'chain' Name ')' Keyword.Type ' ' Text '->' Name.Function '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'chain' Name '\n' Text.Whitespace ' ' Text 'slice' Name ' ' Text '=' Operator ' ' Text '[' Keyword.Type 'item' Name ' ' Text 'for' Keyword ' ' Text 'item' Name ' ' Text 'in' Keyword ' ' Text '*' Operator 'chain' Name '[' Keyword.Type '3' Literal.Number.Integer ',' Punctuation ']' Keyword.Type ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'new_chain' Name ' ' Text '=' Operator ' ' Text '{' Keyword.Type '"' Literal.String.Double 'chain' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'parent_cls_name' Name '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'head' Name ' ' Text '=' Operator ' ' Text 'slice' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'head' Name ' ' Text '==' Operator ' ' Text 'nil' Keyword.Constant '\n' Text.Whitespace ' ' Text 'return' Keyword ' ' Text 'parent_cls_name' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'switch' Keyword ' ' Text 'head' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text '-- calling super, inject calling name and self into chain' Comment.Single '\n' Text.Whitespace ' ' Text 'when' Keyword ' ' Text '"' Literal.String.Double 'call' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'calling_name' Name ' ' Text '=' Operator ' ' Text 'block' Name '\\' Operator 'get' Name '"' Literal.String.Double 'current_block' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'slice' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type ' ' Text '=' Operator ' ' Text '{' Keyword.Type '"' Literal.String.Double 'call' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'self' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'unpack' Name ' ' Text 'head' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'act' Name ' ' Text '=' Operator ' ' Text 'if' Keyword ' ' Text 'ntype' Name '(' Keyword.Type 'calling_name' Name ')' Keyword.Type ' ' Text '!=' Operator ' ' Text '"' Literal.String.Double 'value' Literal.String '"' Literal.String.Double ' ' Text 'then' Keyword ' ' Text '"' Literal.String.Double 'index' Literal.String '"' Literal.String.Double ' ' Text 'else' Keyword ' ' Text '"' Literal.String.Double 'dot' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'new_chain' Name ',' Punctuation ' ' Text '{' Keyword.Type 'act' Name ',' Punctuation ' ' Text 'calling_name' Name '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '-- colon call on super, replace class with self as first arg' Comment.Single '\n' Text.Whitespace ' ' Text 'when' Keyword ' ' Text '"' Literal.String.Double 'colon' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'call' Name ' ' Text '=' Operator ' ' Text 'head' Name '[' Keyword.Type '3' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'new_chain' Name ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'dot' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'head' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'slice' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type ' ' Text '=' Operator ' ' Text '{' Keyword.Type ' ' Text '"' Literal.String.Double 'call' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type ' ' Text '"' Literal.String.Double 'self' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'unpack' Name ' ' Text 'call' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type ' ' Text '}' Keyword.Type ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'new_chain' Name ',' Punctuation ' ' Text 'item' Name ' ' Text 'for' Keyword ' ' Text 'item' Name ' ' Text 'in' Keyword ' ' Text '*' Operator 'slice' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'new_chain' Name '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'parent_cls_name' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '.' Operator 'assign_one' Name ' ' Text 'parent_cls_name' Name ',' Punctuation ' ' Text 'parent_val' Name ' ' Text '==' Operator ' ' Text '"' Literal.String.Double '"' Literal.String.Double ' ' Text 'and' Keyword ' ' Text '"' Literal.String.Double 'nil' Literal.String '"' Literal.String.Double ' ' Text 'or' Keyword ' ' Text 'parent_val' Name '\n' Text.Whitespace ' ' Text '.' Operator 'assign_one' Name ' ' Text 'base_name' Name ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'table' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'properties' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text '.' Operator 'assign_one' Name ' ' Text 'base_name' Name '\\' Operator 'chain' Name '"' Literal.String.Double '__index' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'base_name' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'build' Name '[' Keyword.Type '"' Literal.String.Double 'if' Literal.String '"' Literal.String.Double ']' Keyword.Type ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'cond:' Name.Variable ' ' Text 'parent_cls_name' Name '\n' Text.Whitespace ' ' Text 'then:' Name.Variable ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text '.' Operator 'chain' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'base:' Name.Variable ' ' Text '"' Literal.String.Double 'setmetatable' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'call' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'base_name' Name ',' Punctuation '\n' Text.Whitespace ' ' Text '.' Operator 'chain' Name ' ' Text '{' Keyword.Type ' ' Text 'base:' Name.Variable ' ' Text 'parent_cls_name' Name ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'dot' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '"' Literal.String.Double '__base' Literal.String '"' Literal.String.Double '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '.' Operator 'assign_one' Name ' ' Text 'cls_name' Name ',' Punctuation ' ' Text 'cls' Name '\n' Text.Whitespace ' ' Text '.' Operator 'assign_one' Name ' ' Text 'base_name' Name '\\' Operator 'chain' Name '"' Literal.String.Double '__class' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'cls_name' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '.' Operator 'group' Name ' ' Text 'if' Keyword ' ' Text '#' Operator 'statements' Name ' ' Text '>' Operator ' ' Text '0' Literal.Number.Integer ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text '.' Operator 'assign_one' Name ' ' Text 'LocalName' Name.Class '"' Literal.String.Double 'self' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'cls_name' Name '\n' Text.Whitespace ' ' Text '.' Operator 'group' Name ' ' Text 'statements' Name '\n' Text.Whitespace ' ' Text '}' Keyword.Type ' ' Text 'else' Keyword ' ' Text '{' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'cls_name' Name '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'value' Name ' ' Text '=' Operator ' ' Text '.' Operator 'group' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text '.' Operator 'declare' Name ' ' Text 'names:' Name.Variable ' ' Text '{' Keyword.Type 'name' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text '.' Operator 'assign' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'names:' Name.Variable ' ' Text '{' Keyword.Type 'name' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'values:' Name.Variable ' ' Text '{' Keyword.Type 'value' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'value' Name '\n' Text.Whitespace '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace 'class' Keyword ' ' Text 'Accumulator' Name.Class '\n' Text.Whitespace ' ' Text 'body_idx:' Name.Variable ' ' Text '{' Keyword.Type ' ' Text 'for:' Name.Variable ' ' Text '4' Literal.Number.Integer ',' Punctuation ' ' Text 'while:' Name.Variable ' ' Text '3' Literal.Number.Integer ',' Punctuation ' ' Text 'foreach:' Name.Variable ' ' Text '4' Literal.Number.Integer ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'new:' Name.Variable ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '@accum_name' Name.Variable.Class ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'accum' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text '@value_name' Name.Variable.Class ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'value' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text '@len_name' Name.Variable.Class ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'len' Literal.String '"' Literal.String.Double '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '-- wraps node and mutates body' Comment.Single '\n' Text.Whitespace ' ' Text 'convert:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'index' Name ' ' Text '=' Operator ' ' Text '@body_idx' Name.Variable.Class '[' Keyword.Type 'ntype' Name ' ' Text 'node' Name ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'node' Name '[' Keyword.Type 'index' Name ']' Keyword.Type ' ' Text '=' Operator ' ' Text '@mutate_body' Name.Variable.Class ' ' Text 'node' Name '[' Keyword.Type 'index' Name ']' Keyword.Type '\n' Text.Whitespace ' ' Text '@wrap' Name.Variable.Class ' ' Text 'node' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '-- wrap the node into a block_exp' Comment.Single '\n' Text.Whitespace ' ' Text 'wrap:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'block_exp' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text '@accum_name' Name.Variable.Class ',' Punctuation ' ' Text 'build' Name '.' Operator 'table' Name '!' Operator '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text '@len_name' Name.Variable.Class ',' Punctuation ' ' Text '0' Literal.Number.Integer '\n' Text.Whitespace ' ' Text 'node' Name '\n' Text.Whitespace ' ' Text '@accum_name' Name.Variable.Class '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '-- mutates the body of a loop construct to save last value into accumulator' Comment.Single '\n' Text.Whitespace ' ' Text '-- can optionally skip nil results' Comment.Single '\n' Text.Whitespace ' ' Text 'mutate_body:' Name.Variable ' ' Text '(' Keyword.Type 'body' Name ',' Punctuation ' ' Text 'skip_nil' Name '=' Operator 'true' Keyword.Constant ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'val' Name ' ' Text '=' Operator ' ' Text 'if' Keyword ' ' Text 'not' Keyword ' ' Text 'skip_nil' Name ' ' Text 'and' Keyword ' ' Text 'is_singular' Name ' ' Text 'body' Name '\n' Text.Whitespace ' ' Text 'with' Keyword ' ' Text 'body' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'body' Name ' ' Text '=' Operator ' ' Text '{' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'body' Name ' ' Text '=' Operator ' ' Text 'apply_to_last' Name ' ' Text 'body' Name ',' Punctuation ' ' Text '(' Keyword.Type 'n' Name ')' Keyword.Type ' ' Text '->' Name.Function '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text '@value_name' Name.Variable.Class ',' Punctuation ' ' Text 'n' Name '\n' Text.Whitespace ' ' Text '@value_name' Name.Variable.Class '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'update' Name ' ' Text '=' Operator ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'update' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '@len_name' Name.Variable.Class ',' Punctuation ' ' Text '"' Literal.String.Double '+=' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '1' Literal.Number.Integer '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text '@accum_name' Name.Variable.Class '\\' Operator 'index' Name '(' Keyword.Type '@len_name' Name.Variable.Class ')' Keyword.Type ',' Punctuation ' ' Text 'val' Name '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'skip_nil' Name '\n' Text.Whitespace ' ' Text 'table.insert' Name.Builtin ' ' Text 'body' Name ',' Punctuation ' ' Text 'build' Name '[' Keyword.Type '"' Literal.String.Double 'if' Literal.String '"' Literal.String.Double ']' Keyword.Type ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'cond:' Name.Variable ' ' Text '{' Keyword.Type '"' Literal.String.Double 'exp' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '@value_name' Name.Variable.Class ',' Punctuation ' ' Text '"' Literal.String.Double '!=' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '"' Literal.String.Double 'nil' Literal.String '"' Literal.String.Double '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'then:' Name.Variable ' ' Text 'update' Name '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'table.insert' Name.Builtin ' ' Text 'body' Name ',' Punctuation ' ' Text 'build' Name '.' Operator 'group' Name ' ' Text 'update' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'body' Name '\n' Text.Whitespace '\n' Text.Whitespace 'default_accumulator' Name ' ' Text '=' Operator ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'Accumulator' Name.Class '!' Operator '\\' Operator 'convert' Name ' ' Text 'node' Name '\n' Text.Whitespace '\n' Text.Whitespace '\n' Text.Whitespace 'implicitly_return' Name ' ' Text '=' Operator ' ' Text '(' Keyword.Type 'scope' Name ')' Keyword.Type ' ' Text '->' Name.Function '\n' Text.Whitespace ' ' Text 'fn' Name ' ' Text '=' Operator ' ' Text '(' Keyword.Type 'stm' Name ')' Keyword.Type ' ' Text '->' Name.Function '\n' Text.Whitespace ' ' Text 't' Name ' ' Text '=' Operator ' ' Text 'ntype' Name ' ' Text 'stm' Name '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'types' Name '.' Operator 'manual_return' Name '[' Keyword.Type 't' Name ']' Keyword.Type ' ' Text 'or' Keyword ' ' Text 'not' Keyword ' ' Text 'types' Name '.' Operator 'is_value' Name ' ' Text 'stm' Name '\n' Text.Whitespace ' ' Text 'stm' Name '\n' Text.Whitespace ' ' Text 'elseif' Keyword ' ' Text 'types' Name '.' Operator 'cascading' Name '[' Keyword.Type 't' Name ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'scope' Name '.' Operator 'transform' Name '.' Operator 'statement' Name ' ' Text 'stm' Name ',' Punctuation ' ' Text 'fn' Name '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 't' Name ' ' Text '==' Operator ' ' Text '"' Literal.String.Double 'comprehension' Literal.String '"' Literal.String.Double ' ' Text 'and' Keyword ' ' Text 'not' Keyword ' ' Text 'types' Name '.' Operator 'comprehension_has_value' Name ' ' Text 'stm' Name '\n' Text.Whitespace ' ' Text 'stm' Name '\n' Text.Whitespace ' ' Text 'else' Keyword '\n' Text.Whitespace ' ' Text '{' Keyword.Type '"' Literal.String.Double 'return' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'stm' Name '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'fn' Name '\n' Text.Whitespace '\n' Text.Whitespace 'Value' Name.Class ' ' Text '=' Operator ' ' Text 'Transformer' Name.Class ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'for:' Name.Variable ' ' Text 'default_accumulator' Name '\n' Text.Whitespace ' ' Text 'while:' Name.Variable ' ' Text 'default_accumulator' Name '\n' Text.Whitespace ' ' Text 'foreach:' Name.Variable ' ' Text 'default_accumulator' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'comprehension:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'a' Name ' ' Text '=' Operator ' ' Text 'Accumulator' Name.Class '!' Operator '\n' Text.Whitespace ' ' Text 'node' Name ' ' Text '=' Operator ' ' Text '@transform' Name.Variable.Class '.' Operator 'statement' Name ' ' Text 'node' Name ',' Punctuation ' ' Text '(' Keyword.Type 'exp' Name ')' Keyword.Type ' ' Text '->' Name.Function '\n' Text.Whitespace ' ' Text 'a' Name '\\' Operator 'mutate_body' Name ' ' Text '{' Keyword.Type 'exp' Name '}' Keyword.Type ',' Punctuation ' ' Text 'false' Keyword.Constant '\n' Text.Whitespace ' ' Text 'a' Name '\\' Operator 'wrap' Name ' ' Text 'node' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'tblcomprehension:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '_' Name ',' Punctuation ' ' Text 'key_exp' Name ',' Punctuation ' ' Text 'value_exp' Name ',' Punctuation ' ' Text 'clauses' Name ' ' Text '=' Operator ' ' Text 'unpack' Name ' ' Text 'node' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'accum' Name ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'tbl' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'dest' Name ' ' Text '=' Operator ' ' Text 'build' Name '.' Operator 'chain' Name ' ' Text '{' Keyword.Type ' ' Text 'base:' Name.Variable ' ' Text 'accum' Name ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'index' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'key_exp' Name '}' Keyword.Type ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'inner' Name ' ' Text '=' Operator ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text 'dest' Name ',' Punctuation ' ' Text 'value_exp' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'block_exp' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign_one' Name ' ' Text 'accum' Name ',' Punctuation ' ' Text 'build' Name '.' Operator 'table' Name '!' Operator '\n' Text.Whitespace ' ' Text 'construct_comprehension' Name ' ' Text '{' Keyword.Type 'inner' Name '}' Keyword.Type ',' Punctuation ' ' Text 'clauses' Name '\n' Text.Whitespace ' ' Text 'accum' Name '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'fndef:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'smart_node' Name ' ' Text 'node' Name '\n' Text.Whitespace ' ' Text 'node' Name '.' Operator 'body' Name ' ' Text '=' Operator ' ' Text 'apply_to_last' Name ' ' Text 'node' Name '.' Operator 'body' Name ',' Punctuation ' ' Text 'implicitly_return' Name ' ' Text 'self' Name.Builtin.Pseudo '\n' Text.Whitespace ' ' Text 'node' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'if:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function ' ' Text 'build' Name '.' Operator 'block_exp' Name ' ' Text '{' Keyword.Type ' ' Text 'node' Name ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'with:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function ' ' Text 'build' Name '.' Operator 'block_exp' Name ' ' Text '{' Keyword.Type ' ' Text 'node' Name ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'switch:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'block_exp' Name ' ' Text '{' Keyword.Type ' ' Text 'node' Name ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text '-- pull out colon chain' Comment.Single '\n' Text.Whitespace ' ' Text 'chain:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'stub' Name ' ' Text '=' Operator ' ' Text 'node' Name '[' Keyword.Type '#' Operator 'node' Name ']' Keyword.Type '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text 'type' Name.Builtin '(' Keyword.Type 'stub' Name ')' Keyword.Type ' ' Text '==' Operator ' ' Text '"' Literal.String.Double 'table' Literal.String '"' Literal.String.Double ' ' Text 'and' Keyword ' ' Text 'stub' Name '[' Keyword.Type '1' Literal.Number.Integer ']' Keyword.Type ' ' Text '==' Operator ' ' Text '"' Literal.String.Double 'colon_stub' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'table.remove' Name.Builtin ' ' Text 'node' Name ',' Punctuation ' ' Text '#' Operator 'node' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'base_name' Name ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'base' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'fn_name' Name ' ' Text '=' Operator ' ' Text 'NameProxy' Name.Class ' ' Text '"' Literal.String.Double 'fn' Literal.String '"' Literal.String.Double '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'is_super' Name ' ' Text '=' Operator ' ' Text 'node' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type ' ' Text '==' Operator ' ' Text '"' Literal.String.Double 'super' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text '@transform' Name.Variable.Class '.' Operator 'value' Name ' ' Text 'build' Name '.' Operator 'block_exp' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'names:' Name.Variable ' ' Text '{' Keyword.Type 'base_name' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'values:' Name.Variable ' ' Text '{' Keyword.Type 'node' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'assign' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'names:' Name.Variable ' ' Text '{' Keyword.Type 'fn_name' Name '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'values:' Name.Variable ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'chain' Name ' ' Text '{' Keyword.Type ' ' Text 'base:' Name.Variable ' ' Text 'base_name' Name ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'dot' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'stub' Name '[' Keyword.Type '2' Literal.Number.Integer ']' Keyword.Type '}' Keyword.Type ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'fndef' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'args:' Name.Variable ' ' Text '{' Keyword.Type '{' Keyword.Type '"' Literal.String.Double '...' Literal.String '"' Literal.String.Double '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text 'body:' Name.Variable ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'chain' Name ' ' Text '{' Keyword.Type '\n' Text.Whitespace ' ' Text 'base:' Name.Variable ' ' Text 'fn_name' Name ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'call' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text '{' Keyword.Type 'is_super' Name ' ' Text 'and' Keyword ' ' Text '"' Literal.String.Double 'self' Literal.String '"' Literal.String.Double ' ' Text 'or' Keyword ' ' Text 'base_name' Name ',' Punctuation ' ' Text '"' Literal.String.Double '...' Literal.String '"' Literal.String.Double '}' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace ' ' Text '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'block_exp:' Name.Variable ' ' Text '(' Keyword.Type 'node' Name ')' Keyword.Type ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text '_' Name ',' Punctuation ' ' Text 'body' Name ' ' Text '=' Operator ' ' Text 'unpack' Name ' ' Text 'node' Name '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'fn' Name ' ' Text '=' Operator ' ' Text 'nil' Keyword.Constant '\n' Text.Whitespace ' ' Text 'arg_list' Name ' ' Text '=' Operator ' ' Text '{' Keyword.Type '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'body' Name ',' Punctuation ' ' Text 'Run' Name.Class ' ' Text '=>' Name.Function '\n' Text.Whitespace ' ' Text 'if' Keyword ' ' Text '@has_varargs' Name.Variable.Class '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'arg_list' Name ',' Punctuation ' ' Text '"' Literal.String.Double '...' Literal.String '"' Literal.String.Double '\n' Text.Whitespace ' ' Text 'insert' Name ' ' Text 'fn' Name '.' Operator 'args' Name ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double '...' Literal.String '"' Literal.String.Double '}' Keyword.Type '\n' Text.Whitespace '\n' Text.Whitespace ' ' Text 'fn' Name ' ' Text '=' Operator ' ' Text 'smart_node' Name ' ' Text 'build' Name '.' Operator 'fndef' Name ' ' Text 'body:' Name.Variable ' ' Text 'body' Name '\n' Text.Whitespace ' ' Text 'build' Name '.' Operator 'chain' Name ' ' Text '{' Keyword.Type ' ' Text 'base:' Name.Variable ' ' Text '{' Keyword.Type '"' Literal.String.Double 'parens' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'fn' Name '}' Keyword.Type ',' Punctuation ' ' Text '{' Keyword.Type '"' Literal.String.Double 'call' Literal.String '"' Literal.String.Double ',' Punctuation ' ' Text 'arg_list' Name '}' Keyword.Type ' ' Text '}' Keyword.Type '\n' Text.Whitespace '}' Keyword.Type '\n' Text.Whitespace