--- source: src/main.rs expression: parsed input_file: test-data/lua5.4-tests/constructs.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing syntax\"", ), ], ], ), ], line: 4, }, Variable { names: [ ( "debug", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"debug\"", ), ], ], ), ], line: 6, }, ], ], line: 9, column: 0, }, Function { local: true, name: [ Symbol( "checkload", ), ], args: [ "s", "msg", ], body: CodeBlock { start: 19, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "select", ), Call( [ [ Symbol( "2", ), ], [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 10, }, ], ], ), ], line: 10, }, ], ], ), ], line: 10, }, ], [ Ident { expr: [ Symbol( "msg", ), ], line: 10, }, ], ], ), ], line: 10, }, ], ], ), ], line: 10, }, ], end: 39, }, line: 11, column: 1, }, DoBlock( CodeBlock { start: 40, code: [], end: 44, }, ), DoBlock( CodeBlock { start: 46, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 15, }, ], values: [ [ Symbol( "3", ), ], ], line: 15, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 15, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 15, }, ], end: 58, }, ), IfStatement { condition: [ Symbol( "false", ), ], body: CodeBlock { start: 63, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 20, }, ], values: [ [ Symbol( "3", ), Operator( ( "//", true, ), ), Symbol( "0", ), ], ], line: 20, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 20, }, ], values: [ [ Symbol( "0", ), Operator( ( "%", true, ), ), Symbol( "0", ), ], ], line: 20, column: 11, }, ], end: 75, }, next: None, line: 20, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "3", ), Operator( ( "^", true, ), ), Symbol( "2", ), Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Expr( [ Symbol( "3", ), Operator( ( "^", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 25, }, ], ], ), ], line: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "3", ), Operator( ( "*", true, ), ), Symbol( "4", ), Operator( ( "==", true, ), ), Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 26, }, Operator( ( "*", true, ), ), Symbol( "4", ), ], ], ), ], line: 25, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "2.0", ), Operator( ( "^", true, ), ), Operator( ( "-", false, ), ), Symbol( "2", ), Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "/", true, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Operator( ( "-", false, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Operator( ( "-", false, ), ), Operator( ( "-", true, ), ), Symbol( "2", ), Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Operator( ( "-", true, ), ), Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "2", ), Operator( ( ">", true, ), ), Symbol( "3", ), Operator( ( "or", true, ), ), Symbol( "3", ), Operator( ( "<", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 28, }, ], ], ), ], line: 27, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "3", ), Operator( ( "-", true, ), ), Symbol( "1", ), Operator( ( "-", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "+", true, ), ), Symbol( "0", ), Operator( ( "-", true, ), ), Symbol( "9", ), ], ], ), ], line: 28, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "2", ), Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Expr( [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 30, }, Operator( ( "^", true, ), ), Symbol( "2", ), Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Symbol( "2", ), Operator( ( "*", true, ), ), Symbol( "2", ), Operator( ( "-", true, ), ), Symbol( "3", ), Operator( ( "-", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 29, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "3", ), Operator( ( "%", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Operator( ( "-", false, ), ), Symbol( "3", ), Operator( ( "+", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 30, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "2", ), Operator( ( "*", true, ), ), Symbol( "1", ), Operator( ( "+", true, ), ), Symbol( "3", ), Operator( ( "/", true, ), ), Symbol( "3", ), Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Symbol( "1", ), Operator( ( "+", true, ), ), Symbol( "2", ), Operator( ( "..", true, ), ), Symbol( "3", ), Operator( ( "*", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "\"33\"", ), ], ], ), ], line: 31, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "2", ), Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( ">", true, ), ), Symbol( "3", ), Operator( ( "*", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 33, }, Operator( ( "and", true, ), ), Symbol( "\"a\"", ), Operator( ( "..", true, ), ), Symbol( "\"b\"", ), Operator( ( ">", true, ), ), Symbol( "\"a\"", ), ], ], ), ], line: 32, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0xF0", ), Operator( ( "|", true, ), ), Symbol( "0xCC", ), Operator( ( "~", true, ), ), Symbol( "0xAA", ), Operator( ( "&", true, ), ), Symbol( "0xFD", ), Operator( ( "==", true, ), ), Symbol( "0xF4", ), ], ], ), ], line: 33, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0xFD", ), Operator( ( "&", true, ), ), Symbol( "0xAA", ), Operator( ( "~", true, ), ), Symbol( "0xCC", ), Operator( ( "|", true, ), ), Symbol( "0xF0", ), Operator( ( "==", true, ), ), Symbol( "0xF4", ), ], ], ), ], line: 35, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0xF0", ), Operator( ( "&", true, ), ), Symbol( "0x0F", ), Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "0x10", ), ], ], ), ], line: 36, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "3", ), Operator( ( "^", true, ), ), Symbol( "4", ), Operator( ( "//", true, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "3", ), Operator( ( "//", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 37, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "3", ), Operator( ( "+", true, ), ), Symbol( "4", ), Operator( ( "*", true, ), ), Symbol( "5", ), Operator( ( "//", true, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "3", ), Operator( ( "^", true, ), ), Symbol( "2", ), Operator( ( "//", true, ), ), Symbol( "9", ), Operator( ( "+", true, ), ), Symbol( "4", ), Operator( ( "%", true, ), ), Symbol( "10", ), Operator( ( "/", true, ), ), Symbol( "3", ), Operator( ( "==", true, ), ), Expr( [ Operator( ( "-", false, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 41, }, Operator( ( "+", true, ), ), Expr( [ Expr( [ Expr( [ Symbol( "4", ), Operator( ( "*", true, ), ), Symbol( "5", ), ], ), Ident { expr: [], line: 41, }, Operator( ( "//", true, ), ), Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Expr( [ Symbol( "3", ), Operator( ( "^", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 41, }, ], ), Ident { expr: [], line: 41, }, ], ), Ident { expr: [], line: 41, }, Operator( ( "//", true, ), ), Symbol( "9", ), ], ), Ident { expr: [], line: 41, }, Operator( ( "+", true, ), ), Expr( [ Expr( [ Symbol( "4", ), Operator( ( "%", true, ), ), Symbol( "10", ), ], ), Ident { expr: [], line: 41, }, Operator( ( "/", true, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 41, }, ], ], ), ], line: 39, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Expr( [ Symbol( "true", ), Operator( ( "or", true, ), ), Symbol( "false", ), ], ), Ident { expr: [], line: 43, }, Operator( ( "and", true, ), ), Symbol( "nil", ), ], ), Ident { expr: [], line: 43, }, ], ], ), ], line: 41, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "true", ), Operator( ( "or", true, ), ), Symbol( "false", ), Operator( ( "and", true, ), ), Symbol( "nil", ), ], ], ), ], line: 43, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Expr( [ Expr( [ Symbol( "1", ), Operator( ( "or", true, ), ), Symbol( "false", ), ], ), Ident { expr: [], line: 47, }, Operator( ( "and", true, ), ), Symbol( "true", ), ], ), Ident { expr: [], line: 47, }, Operator( ( "or", true, ), ), Symbol( "false", ), ], ), Ident { expr: [], line: 47, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 44, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Expr( [ Expr( [ Symbol( "nil", ), Operator( ( "and", true, ), ), Symbol( "true", ), ], ), Ident { expr: [], line: 48, }, Operator( ( "or", true, ), ), Symbol( "false", ), ], ), Ident { expr: [], line: 48, }, Operator( ( "and", true, ), ), Symbol( "true", ), ], ), Ident { expr: [], line: 48, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 47, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "1", ), ], [ Symbol( "nil", ), ], ], line: 50, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Expr( [ Symbol( "1", ), Operator( ( "or", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 51, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Expr( [ Symbol( "1", ), Operator( ( "and", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 51, }, Operator( ( "+", true, ), ), Expr( [ Operator( ( "-", false, ), ), Symbol( "1.25", ), Operator( ( "or", true, ), ), Operator( ( "-", false, ), ), Symbol( "4", ), ], ), Ident { expr: [], line: 51, }, Operator( ( "==", true, ), ), Symbol( "0.75", ), ], ], ), ], line: 50, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 51, }, ], values: [ [ Expr( [ Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 52, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 52, }, ], ), Ident { expr: [], line: 52, }, Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Expr( [ Symbol( "10", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 52, }, ], ), Ident { expr: [], line: 52, }, Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "11", ), ], ), Ident { expr: [], line: 52, }, ], ], line: 52, column: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 52, }, ], ], ), ], line: 52, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 52, }, ], values: [ [ Expr( [ Expr( [ Expr( [ Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 53, }, Operator( ( "or", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 53, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Expr( [ Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Symbol( "4", ), ], ), Ident { expr: [], line: 53, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ), Ident { expr: [], line: 53, }, ], ], line: 53, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 53, }, ], ], ), ], line: 53, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 53, }, Ident { expr: [ Symbol( "y", ), ], line: 55, }, ], values: [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], line: 55, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "x", ), ], line: 56, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 56, }, ], ), Ident { expr: [], line: 56, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 56, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 56, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 55, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 56, }, Ident { expr: [ Symbol( "y", ), ], line: 57, }, ], values: [ [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], line: 57, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "x", ), ], line: 58, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 58, }, ], ), Ident { expr: [], line: 58, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 58, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 58, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 57, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "1234567890", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'1234567890'", ), ], ], ), ], line: 60, }, Operator( ( "and", true, ), ), Symbol( "1234567890", ), Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "1234567891", ), ], ], ), ], line: 58, }, DoBlock( CodeBlock { start: 582, code: [ Variable { names: [ ( "operand", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "100", ), ], ), ( None, [ Symbol( "5.0", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "10", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "5.0", ), ], ), ( None, [ Symbol( "10000", ), ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "10000", ), ], ), ], line: 67, column: 21, }, ], ], line: 68, column: 0, }, Variable { names: [ ( "operator", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\"+\"", ), ], ), ( None, [ Symbol( "\"-\"", ), ], ), ( None, [ Symbol( "\"*\"", ), ], ), ( None, [ Symbol( "\"/\"", ), ], ), ( None, [ Symbol( "\"//\"", ), ], ), ( None, [ Symbol( "\"%\"", ), ], ), ( None, [ Symbol( "\"^\"", ), ], ), ( None, [ Symbol( "\"&\"", ), ], ), ( None, [ Symbol( "\"|\"", ), ], ), ( None, [ Symbol( "\"^\"", ), ], ), ( None, [ Symbol( "\"<<\"", ), ], ), ( None, [ Symbol( "\">>\"", ), ], ), ( None, [ Symbol( "\"==\"", ), ], ), ( None, [ Symbol( "\"~=\"", ), ], ), ( None, [ Symbol( "\"<\"", ), ], ), ( None, [ Symbol( "\">\"", ), ], ), ( None, [ Symbol( "\"<=\"", ), ], ), ( None, [ Symbol( "\">=\"", ), ], ), ], line: 70, column: 13, }, ], ], line: 71, column: 0, }, ForFuncLoop { iters: [ "_", "op", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Ident { expr: [ Symbol( "operator", ), ], line: 71, }, ], ], ), ], line: 71, }, ], stop: None, initial: None, code: CodeBlock { start: 72, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ MultilineString( "[[return function (x,y)\n return x %s y\n end]]", ), ], [ Ident { expr: [ Symbol( "op", ), ], line: 74, }, ], ], ), ], line: 72, }, ], ], ), ], line: 72, }, ], ], ), Call( [], ), ], line: 72, }, ], ], line: 74, column: 9, }, ForFuncLoop { iters: [ "_", "o1", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Ident { expr: [ Symbol( "operand", ), ], line: 75, }, ], ], ), ], line: 75, }, ], stop: None, initial: None, code: CodeBlock { start: 30, code: [ ForFuncLoop { iters: [ "_", "o2", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Ident { expr: [ Symbol( "operand", ), ], line: 76, }, ], ], ), ], line: 76, }, ], stop: None, initial: None, code: CodeBlock { start: 10, code: [ Variable { names: [ ( "gab", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "o1", ), ], line: 77, }, ], [ Ident { expr: [ Symbol( "o2", ), ], line: 77, }, ], ], ), ], line: 77, }, ], ], line: 77, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "_ENV", ), Symbol( ".", ), Symbol( "XX", ), ], line: 77, }, ], values: [ [ Ident { expr: [ Symbol( "o1", ), ], line: 79, }, ], ], line: 79, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "code", ), ], line: 79, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"return XX %s %s\"", ), ], [ Ident { expr: [ Symbol( "op", ), ], line: 80, }, ], [ Ident { expr: [ Symbol( "o2", ), ], line: 80, }, ], ], ), ], line: 80, }, ], ], line: 80, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "res", ), ], line: 80, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "code", ), ], line: 81, }, ], ], ), ], line: 81, }, ], ], ), Call( [], ), ], line: 81, }, ], ], line: 81, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "res", ), ], line: 82, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "gab", ), ], line: 82, }, ], ], ), ], line: 81, }, Alter { names: [ Ident { expr: [ Symbol( "_ENV", ), Symbol( ".", ), Symbol( "XX", ), ], line: 82, }, ], values: [ [ Ident { expr: [ Symbol( "o2", ), ], line: 84, }, ], ], line: 85, column: 0, }, Variable { names: [ ( "code", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"return (%s) %s XX\"", ), ], [ Ident { expr: [ Symbol( "o1", ), ], line: 85, }, ], [ Ident { expr: [ Symbol( "op", ), ], line: 85, }, ], ], ), ], line: 85, }, ], ], line: 86, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "code", ), ], line: 86, }, ], ], ), ], line: 86, }, ], ], ), Call( [], ), ], line: 86, }, ], ], line: 86, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "res", ), ], line: 87, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "gab", ), ], line: 87, }, ], ], ), ], line: 86, }, Alter { names: [ Ident { expr: [ Symbol( "code", ), ], line: 87, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"return (%s) %s %s\"", ), ], [ Ident { expr: [ Symbol( "o1", ), ], line: 89, }, ], [ Ident { expr: [ Symbol( "op", ), ], line: 89, }, ], [ Ident { expr: [ Symbol( "o2", ), ], line: 89, }, ], ], ), ], line: 89, }, ], ], line: 89, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "res", ), ], line: 89, }, ], values: [ [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "code", ), ], line: 90, }, ], ], ), ], line: 90, }, ], ], ), Call( [], ), ], line: 90, }, ], ], line: 90, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "res", ), ], line: 91, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "gab", ), ], line: 91, }, ], ], ), ], line: 90, }, ], end: 121, }, line: 92, column: 1, }, ], end: 152, }, line: 93, column: 1, }, ], end: 225, }, line: 94, column: 1, }, ], end: 808, }, ), RepeatLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 809, code: [], end: 810, }, line: 99, column: 3, }, RepeatLoop { condition: [ Symbol( "true", ), ], body: CodeBlock { start: 813, code: [], end: 814, }, line: 99, column: 7, }, WhileLoop { condition: [ Symbol( "false", ), ], body: CodeBlock { start: 819, code: [], end: 820, }, line: 100, column: 4, }, WhileLoop { condition: [ Symbol( "nil", ), ], body: CodeBlock { start: 824, code: [], end: 825, }, line: 100, column: 9, }, DoBlock( CodeBlock { start: 827, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 103, column: 3, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "x", ], body: CodeBlock { start: 8, code: [ Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 103, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "a", ), ], ), [ Symbol( "1", ), ], ), ], line: 103, column: 7, }, ], ], line: 103, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 103, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "1", ), ], ), ], line: 103, column: 15, }, ], ], line: 103, column: 16, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 103, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "G", ), ], ), [ Symbol( "1", ), ], ), ], line: 103, column: 23, }, ], ], line: 103, column: 23, }, ], end: 32, }, line: 103, column: 32, }, ], end: 860, }, ), Function { local: false, name: [ Symbol( "f", ), ], args: [ "i", ], body: CodeBlock { start: 865, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 107, }, ], ], ), ], line: 107, }, Operator( ( "~=", true, ), ), Symbol( "'number'", ), ], body: CodeBlock { start: 8, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "i", ), ], line: 107, }, ], [ Symbol( "'jojo'", ), ], ], ), ), ], end: 14, }, next: None, line: 107, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 108, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 20, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "i", ), ], line: 108, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 108, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 108, }, ], ], ), ), ], end: 31, }, next: None, line: 108, column: 16, }, ], end: 898, }, line: 109, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 109, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 111, }, ], ), ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "5", ), ], ], ), ], line: 111, }, ], ), ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 111, }, ], ), ], line: 111, column: 19, }, ], ], line: 111, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 112, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 112, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 112, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 112, }, Operator( ( "==", true, ), ), Symbol( "9", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "12", ), ], ), Symbol( "]", ), ], line: 112, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 111, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "nil", ), ], ), Symbol( "]", ), ], line: 113, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 112, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 113, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "'alo'", ), ], ], ), ], line: 114, }, ], ), ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "'xixi'", ), ], ], ), ], line: 114, }, ], ), ( None, [ Symbol( "nil", ), ], ), ], line: 114, column: 11, }, ], ], line: 114, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 115, }, Operator( ( "==", true, ), ), Symbol( "'alo'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 115, }, Operator( ( "==", true, ), ), Symbol( "'xixi'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 115, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 114, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 115, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "'alo'", ), ], ], ), ], line: 116, }, Operator( ( "..", true, ), ), Symbol( "'xixi'", ), ], ), ], line: 116, column: 8, }, ], ], line: 116, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 117, }, Operator( ( "==", true, ), ), Symbol( "'aloxixi'", ), ], ], ), ], line: 116, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 117, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Table { data: [], line: 118, column: 6, }, ], ], ), ], line: 118, }, ], ), ], line: 118, column: 7, }, ], ], line: 118, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 119, }, Operator( ( "==", true, ), ), Symbol( "'jojo'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 119, }, ], ], ), ], line: 119, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 118, }, Variable { names: [ ( "f", false, ), ], values: [ [ Lambda { args: [ "i", ], body: CodeBlock { start: 1052, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 123, }, Operator( ( "<", true, ), ), Symbol( "10", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "'a'", ), ], ], ), ), ], end: 9, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 124, }, Operator( ( "<", true, ), ), Symbol( "20", ), ], body: CodeBlock { start: 13, code: [ Return( Some( [ [ Symbol( "'b'", ), ], ], ), ), ], end: 17, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 125, }, Operator( ( "<", true, ), ), Symbol( "30", ), ], body: CodeBlock { start: 21, code: [ Return( Some( [ [ Symbol( "'c'", ), ], ], ), ), ], end: 25, }, next: None, line: 126, column: 1, }, ), line: 126, column: 1, }, ), line: 126, column: 1, }, ], end: 1079, }, line: 127, column: 1, }, ], ], line: 127, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 129, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "12", ), ], ], ), ], line: 129, }, Operator( ( "==", true, ), ), Symbol( "'b'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "26", ), ], ], ), ], line: 129, }, Operator( ( "==", true, ), ), Symbol( "'c'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 129, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 127, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 1116, code: [ Break, ], end: 1119, }, line: 131, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 131, }, ], values: [ [ Symbol( "100", ), ], ], line: 132, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 132, }, ], values: [ [ Symbol( "3", ), ], ], line: 133, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 133, }, ], values: [ [ Table { data: [], line: 134, column: 4, }, ], ], line: 134, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 134, }, ], values: [ [ Symbol( "nil", ), ], ], line: 136, column: 0, }, WhileLoop { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 136, }, ], body: CodeBlock { start: 1140, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 137, }, ], values: [ [ Symbol( "0", ), ], ], line: 137, column: 4, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "n", ), ], line: 137, }, ], step: None, code: CodeBlock { start: 11, code: [ ForLoop { iter: "i", start: [ Ident { expr: [ Symbol( "i", ), ], line: 137, }, ], end: [ Symbol( "1", ), ], step: Some( [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), code: CodeBlock { start: 10, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 137, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 137, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 137, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 137, }, ], ), Symbol( "]", ), ], line: 137, }, ], values: [ [ Symbol( "1", ), ], ], line: 137, column: 13, }, ], end: 24, }, line: 137, column: 24, }, ], end: 37, }, line: 137, column: 37, }, ], end: 1179, }, line: 138, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 139, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 139, }, Operator( ( "*", true, ), ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 139, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 139, }, Operator( ( "/", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 139, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 138, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 140, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 140, }, ], ), Symbol( "]", ), ], line: 140, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 140, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 140, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 140, }, ], ], ), ], line: 139, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "b", ], body: CodeBlock { start: 1229, code: [ Variable { names: [ ( "x", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 143, column: 5, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 151, }, Operator( ( ">=", true, ), ), Symbol( "12", ), ], body: CodeBlock { start: 6, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 145, column: 3, }, IfStatement { condition: [ Ident { expr: [ Symbol( "b", ), ], line: 146, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], body: CodeBlock { start: 8, code: [ Variable { names: [ ( "b", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 146, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 146, }, ], values: [ [ Symbol( "10", ), ], ], line: 146, column: 9, }, Break, ], end: 19, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "b", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], body: CodeBlock { start: 23, code: [ Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 147, }, ], values: [ [ Symbol( "20", ), ], ], line: 147, column: 4, }, Break, ], end: 30, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "b", ), ], line: 148, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], body: CodeBlock { start: 34, code: [ Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 148, }, ], values: [ [ Symbol( "30", ), ], ], line: 148, column: 4, }, ], end: 39, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 39, code: [ Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ( "d", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 149, }, ], ], line: 149, column: 16, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 149, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 149, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 149, column: 22, }, ], end: 62, }, next: None, line: 150, column: 1, }, ), line: 150, column: 1, }, ), line: 150, column: 1, }, ), line: 150, column: 1, }, ], end: 69, }, line: 151, column: 4, }, Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 152, }, ], ], ), ), ], end: 1306, }, line: 153, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 155, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 155, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 155, }, Operator( ( "==", true, ), ), Symbol( "30", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 155, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 153, }, Variable { names: [ ( "f", false, ), ], values: [ [ Lambda { args: [ "i", ], body: CodeBlock { start: 1344, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 159, }, Operator( ( "<", true, ), ), Symbol( "10", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "'a'", ), ], ], ), ), ], end: 8, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 160, }, Operator( ( "<", true, ), ), Symbol( "20", ), ], body: CodeBlock { start: 12, code: [ Return( Some( [ [ Symbol( "'b'", ), ], ], ), ), ], end: 15, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 161, }, Operator( ( "<", true, ), ), Symbol( "30", ), ], body: CodeBlock { start: 19, code: [ Return( Some( [ [ Symbol( "'c'", ), ], ], ), ), ], end: 22, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 22, code: [ Return( Some( [ [ Symbol( "8", ), ], ], ), ), ], end: 25, }, next: None, line: 163, column: 1, }, ), line: 163, column: 1, }, ), line: 163, column: 1, }, ), line: 163, column: 1, }, ], end: 1370, }, line: 164, column: 1, }, ], ], line: 164, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 166, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "12", ), ], ], ), ], line: 166, }, Operator( ( "==", true, ), ), Symbol( "'b'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "26", ), ], ], ), ], line: 166, }, Operator( ( "==", true, ), ), Symbol( "'c'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 166, }, Operator( ( "==", true, ), ), Symbol( "8", ), ], ], ), ], line: 164, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "nil", ), ], [ Symbol( "23", ), ], ], line: 168, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 168, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 169, }, Operator( ( "*", true, ), ), Symbol( "2", ), Operator( ( "+", true, ), ), Symbol( "3", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 169, }, ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 169, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 169, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ), ], line: 169, column: 20, }, ], ], line: 169, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 170, }, Operator( ( "==", true, ), ), Symbol( "19", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 170, }, Operator( ( "==", true, ), ), Symbol( "25", ), ], ], ), ], line: 169, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 170, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "f", ), ], ), [ Symbol( "2", ), Operator( ( "+", true, ), ), Symbol( "3", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 171, }, ], ), ( Some( [ Symbol( "a", ), ], ), [ Ident { expr: [ Symbol( "b", ), ], line: 171, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ), ], line: 171, column: 17, }, ], ], line: 171, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "f", ), ], line: 172, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "a", ), ], line: 172, }, Operator( ( "==", true, ), ), Symbol( "25", ), ], ], ), ], line: 171, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 172, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "y", ), ], ), [ Symbol( "1", ), ], ), ], line: 174, column: 7, }, ], ], line: 174, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 174, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], line: 175, }, ], ), ], line: 175, column: 7, }, ], ], line: 175, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 176, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 175, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "i", ], body: CodeBlock { start: 1503, code: [ WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 3, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 180, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 180, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 180, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], line: 180, column: 6, }, ], end: 12, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 12, code: [ Return( None, ), ], end: 15, }, next: None, line: 181, column: 4, }, ), line: 181, column: 4, }, ], end: 20, }, line: 182, column: 1, }, ], end: 1525, }, line: 183, column: 1, }, Function { local: false, name: [ Symbol( "g", ), ], args: [ "i", ], body: CodeBlock { start: 1531, code: [ WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 3, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 187, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 187, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 187, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], line: 187, column: 5, }, ], end: 11, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 11, code: [ Return( None, ), ], end: 13, }, next: None, line: 188, column: 3, }, ), line: 188, column: 3, }, ], end: 17, }, line: 189, column: 1, }, ], end: 1549, }, line: 190, column: 1, }, Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 190, }, Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 192, }, DoBlock( CodeBlock { start: 1560, code: [ Function { local: false, name: [ Symbol( "f", ), ], args: [], body: CodeBlock { start: 4, code: [ Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ), ], end: 12, }, line: 195, column: 12, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 196, }, ], ], line: 196, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 197, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 197, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 197, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 196, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 197, }, Ident { expr: [ Symbol( "b", ), ], line: 198, }, Ident { expr: [ Symbol( "c", ), ], line: 198, }, ], values: [ [ Expr( [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 198, }, ], ), Ident { expr: [], line: 198, }, ], ], line: 198, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 199, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 199, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 199, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 198, }, ], end: 1624, }, ), Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 202, }, ], ], line: 202, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 203, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 203, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 202, }, Function { local: false, name: [ Symbol( "g", ), ], args: [], body: CodeBlock { start: 1649, code: [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 205, }, Return( None, ), ], end: 1656, }, line: 205, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "g", ), Call( [], ), ], line: 206, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 205, }, Function { local: false, name: [ Symbol( "g", ), ], args: [], body: CodeBlock { start: 1669, code: [ Return( Some( [ [ Symbol( "nil", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 207, }, ], ], ), ), ], end: 1676, }, line: 207, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 207, }, Ident { expr: [ Symbol( "b", ), ], line: 208, }, ], values: [ [ Ident { expr: [ Symbol( "g", ), Call( [], ), ], line: 208, }, ], ], line: 208, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 208, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 209, }, DoBlock( CodeBlock { start: 1697, code: [ Variable { names: [ ( "prog", false, ), ], values: [ [ MultilineString( "[[local x = 10]]", ), ], ], line: 214, column: 7, }, Ident { expr: [ Symbol( "checkload", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 215, }, ], [ Symbol( "\"unknown attribute 'XXX'\"", ), ], ], ), ], line: 214, }, Ident { expr: [ Symbol( "checkload", ), Call( [ [ MultilineString( "[[local xxx = 20; xxx = 10]]", ), ], [ Symbol( "\":1: attempt to assign to const variable 'xxx'\"", ), ], ], ), ], line: 215, }, Ident { expr: [ Symbol( "checkload", ), Call( [ [ MultilineString( "[[\n local xx;\n local xxx = 20;\n local yyy;\n local function foo ()\n local abc = xx + yyy + xxx;\n return function () return function () xxx = yyy end end\n end\n ]]", ), ], [ Symbol( "\":6: attempt to assign to const variable 'xxx'\"", ), ], ], ), ], line: 218, }, Ident { expr: [ Symbol( "checkload", ), Call( [ [ MultilineString( "[[\n local x = nil\n x = io.open()\n ]]", ), ], [ Symbol( "\":2: attempt to assign to const variable 'x'\"", ), ], ], ), ], line: 228, }, ], end: 1729, }, ), Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 234, }, ], values: [ [ MultilineString( "[[\nreturn function ( a , b , c , d , e )\n local x = a >= b or c or ( d and e ) or nil\n return x\nend , { a = 1 , b = 2 >= 1 , } or { 1 };\n]]", ), ], ], line: 241, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 241, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 242, }, ], [ Symbol( "\"%s+\"", ), ], [ Symbol( "\"\\n\"", ), ], ], ), ], line: 242, }, ], ], line: 242, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 242, }, Ident { expr: [ Symbol( "a", ), ], line: 243, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 243, }, ], ], ), Call( [], ), ], line: 243, }, ], ], line: 243, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "a", ), ], line: 244, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), ], line: 244, }, ], ], ), ], line: 243, }, Function { local: false, name: [ Symbol( "g", ), ], args: [ "a", "b", "c", "d", "e", ], body: CodeBlock { start: 1781, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 247, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 247, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 247, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 247, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "e", ), ], line: 247, }, Operator( ( "or", true, ), ), Symbol( "nil", ), ], ), Ident { expr: [], line: 247, }, ], body: CodeBlock { start: 16, code: [ Return( Some( [ [ Symbol( "0", ), ], ], ), ), ], end: 20, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 20, code: [ Return( Some( [ [ Symbol( "1", ), ], ], ), ), ], end: 24, }, next: None, line: 247, column: 24, }, ), line: 247, column: 24, }, ], end: 1807, }, line: 248, column: 1, }, Function { local: false, name: [ Symbol( "h", ), ], args: [ "a", "b", "c", "d", "e", ], body: CodeBlock { start: 1820, code: [ WhileLoop { condition: [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 251, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 251, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 251, }, Operator( ( "or", true, ), ), Expr( [ Ident { expr: [ Symbol( "d", ), ], line: 251, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "e", ), ], line: 251, }, ], ), Ident { expr: [], line: 251, }, Operator( ( "or", true, ), ), Symbol( "nil", ), ], ), Ident { expr: [], line: 251, }, ], body: CodeBlock { start: 17, code: [ Return( Some( [ [ Symbol( "1", ), ], ], ), ), ], end: 21, }, line: 251, column: 21, }, Return( Some( [ [ Symbol( "0", ), ], ], ), ), ], end: 1846, }, line: 253, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], ), ], line: 255, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], ), ], line: 255, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], ), ], line: 255, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 253, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 256, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 256, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 256, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 255, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 257, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 256, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 260, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 260, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 260, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 259, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 261, }, Operator( ( "==", true, ), ), Symbol( "'x'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 261, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 261, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 260, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 263, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 263, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 263, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 262, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "nil", ), ], ], ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "nil", ), ], ], ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "nil", ), ], ], ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 264, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "1", ), Operator( ( "and", true, ), ), Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "3", ), Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Symbol( "'a'", ), Operator( ( "<", true, ), ), Symbol( "'b'", ), Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 266, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 268, }, ], values: [ [ Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Symbol( "3", ), ], ], line: 269, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 269, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 269, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 269, }, ], values: [ [ Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "1", ), Operator( ( "or", true, ), ), Expr( [ Symbol( "2", ), Operator( ( ">", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Symbol( "'a'", ), ], ), Ident { expr: [], line: 270, }, ], ], line: 270, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 270, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 270, }, DoBlock( CodeBlock { start: 2158, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 274, column: 3, }, IfStatement { condition: [ Symbol( "nil", ), ], body: CodeBlock { start: 6, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 274, }, ], values: [ [ Symbol( "1", ), ], ], line: 274, column: 4, }, ], end: 11, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 11, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 274, }, ], values: [ [ Symbol( "2", ), ], ], line: 274, column: 4, }, ], end: 16, }, next: None, line: 274, column: 16, }, ), line: 274, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 275, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 274, }, ], end: 2182, }, ), Function { local: false, name: [ Symbol( "F", ), ], args: [ "a", ], body: CodeBlock { start: 2187, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getinfo", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "\"n\"", ), ], ], ), Symbol( ".", ), Symbol( "name", ), ], line: 279, }, Operator( ( "==", true, ), ), Symbol( "'F'", ), ], ], ), ], line: 279, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 280, }, ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ), ], end: 2209, }, line: 281, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 281, }, Ident { expr: [ Symbol( "b", ), ], line: 283, }, ], values: [ [ Ident { expr: [ Symbol( "F", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 283, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], ], line: 283, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 283, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 283, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 283, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 283, }, Ident { expr: [ Symbol( "b", ), ], line: 284, }, ], values: [ [ Ident { expr: [ Symbol( "F", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 284, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], line: 284, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 284, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 284, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 284, }, Alter { names: [ Ident { expr: [ Symbol( "_ENV", ), Symbol( ".", ), Symbol( "GLOB1", ), ], line: 284, }, ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "random", ), Call( [ [ Symbol( "0", ), ], [ Symbol( "1", ), ], ], ), ], line: 290, }, ], ], line: 293, column: 0, }, Variable { names: [ ( "basiccases", false, ), ], values: [ [ Table { data: [ ( None, [ Table { data: [ ( None, [ Symbol( "\"nil\"", ), ], ), ( None, [ Symbol( "nil", ), ], ), ], line: 294, column: 5, }, ], ), ( None, [ Table { data: [ ( None, [ Symbol( "\"false\"", ), ], ), ( None, [ Symbol( "false", ), ], ), ], line: 295, column: 5, }, ], ), ( None, [ Table { data: [ ( None, [ Symbol( "\"true\"", ), ], ), ( None, [ Symbol( "true", ), ], ), ], line: 296, column: 5, }, ], ), ( None, [ Table { data: [ ( None, [ Symbol( "\"10\"", ), ], ), ( None, [ Symbol( "10", ), ], ), ], line: 297, column: 5, }, ], ), ( None, [ Table { data: [ ( None, [ Symbol( "\"(0==_ENV.GLOB1)\"", ), ], ), ( None, [ Symbol( "0", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "_ENV", ), Symbol( ".", ), Symbol( "GLOB1", ), ], line: 298, }, ], ), ], line: 298, column: 9, }, ], ), ], line: 299, column: 1, }, ], ], line: 301, column: 0, }, Variable { names: [ ( "prog", false, ), ], values: [], line: 301, column: 2, }, IfStatement { condition: [ Ident { expr: [ Symbol( "_ENV", ), Symbol( ".", ), Symbol( "GLOB1", ), ], line: 303, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 2312, code: [ Alter { names: [ Ident { expr: [ Symbol( "basiccases", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 304, }, ], values: [ [ Symbol( "\"F\"", ), ], ], line: 304, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 304, }, ], values: [ [ MultilineString( "[[\n local F = false\n if %s then IX = true end\n return %s\n]]", ), ], ], line: 310, column: 1, }, ], end: 2325, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 2325, code: [ Alter { names: [ Ident { expr: [ Symbol( "basiccases", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 312, }, ], values: [ [ Symbol( "\"k10\"", ), ], ], line: 312, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 312, }, ], values: [ [ MultilineString( "[[\n local k10 = 10\n if %s then IX = true end\n return %s\n ]]", ), ], ], line: 318, column: 1, }, ], end: 2338, }, next: None, line: 319, column: 1, }, ), line: 319, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'testing short-circuit optimizations ('", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "_ENV", ), Symbol( ".", ), Symbol( "GLOB1", ), ], line: 321, }, Operator( ( "..", true, ), ), Symbol( "')'", ), ], ], ), ], line: 319, }, Variable { names: [ ( "binops", false, ), ], values: [ [ Table { data: [ ( None, [ Table { data: [ ( None, [ Symbol( "\" and \"", ), ], ), ( None, [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2364, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 326, }, ], body: CodeBlock { start: 4, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 326, }, ], ], ), ), ], end: 7, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "b", ), ], line: 326, }, ], ], ), ), ], end: 10, }, next: None, line: 326, column: 10, }, ), line: 326, column: 10, }, ], end: 2375, }, line: 326, column: 20, }, ], ), ], line: 326, column: 21, }, ], ), ( None, [ Table { data: [ ( None, [ Symbol( "\" or \"", ), ], ), ( None, [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2386, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "a", ), ], line: 327, }, ], body: CodeBlock { start: 3, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 327, }, ], ], ), ), ], end: 6, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 6, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "b", ), ], line: 327, }, ], ], ), ), ], end: 9, }, next: None, line: 327, column: 9, }, ), line: 327, column: 9, }, ], end: 2396, }, line: 327, column: 19, }, ], ), ], line: 327, column: 20, }, ], ), ], line: 328, column: 1, }, ], ], line: 330, column: 0, }, Variable { names: [ ( "cases", false, ), ], values: [ [ Table { data: [], line: 330, column: 8, }, ], ], line: 334, column: 0, }, Function { local: true, name: [ Symbol( "createcases", ), ], args: [ "n", ], body: CodeBlock { start: 2413, code: [ Variable { names: [ ( "res", false, ), ], values: [ [ Table { data: [], line: 335, column: 5, }, ], ], line: 336, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "n", ), ], line: 336, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], step: None, code: CodeBlock { start: 14, code: [ ForFuncLoop { iters: [ "_", "v1", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Ident { expr: [ Symbol( "cases", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 337, }, ], ), Symbol( "]", ), ], line: 337, }, ], ], ), ], line: 337, }, ], stop: None, initial: None, code: CodeBlock { start: 13, code: [ ForFuncLoop { iters: [ "_", "v2", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Ident { expr: [ Symbol( "cases", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 338, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 338, }, ], ), Symbol( "]", ), ], line: 338, }, ], ], ), ], line: 338, }, ], stop: None, initial: None, code: CodeBlock { start: 15, code: [ ForFuncLoop { iters: [ "_", "op", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Ident { expr: [ Symbol( "binops", ), ], line: 339, }, ], ], ), ], line: 339, }, ], stop: None, initial: None, code: CodeBlock { start: 10, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\"(\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "v1", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 341, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "op", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 341, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "v2", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 341, }, Operator( ( "..", true, ), ), Symbol( "\")\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "op", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), Call( [ [ Ident { expr: [ Symbol( "v1", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 342, }, ], [ Ident { expr: [ Symbol( "v2", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 342, }, ], ], ), ], line: 341, }, ], ), ], line: 343, column: 1, }, ], ], line: 343, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 344, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 343, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), ], line: 344, }, ], ], line: 344, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 345, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 344, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "\"not\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 345, }, ], ), ( None, [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 345, }, ], ), ], line: 345, column: 22, }, ], ], line: 345, column: 22, }, ], end: 81, }, line: 346, column: 1, }, ], end: 97, }, line: 347, column: 1, }, ], end: 111, }, line: 348, column: 1, }, ], end: 126, }, line: 349, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "res", ), ], line: 350, }, ], ], ), ), ], end: 2542, }, line: 351, column: 1, }, Variable { names: [ ( "level", false, ), ], values: [ [ Ident { expr: [ Symbol( "_soft", ), ], line: 354, }, Operator( ( "and", true, ), ), Symbol( "3", ), Operator( ( "or", true, ), ), Symbol( "4", ), ], ], line: 354, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "cases", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 354, }, ], values: [ [ Ident { expr: [ Symbol( "basiccases", ), ], line: 356, }, ], ], line: 357, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "2", ), ], end: [ Ident { expr: [ Symbol( "level", ), ], line: 357, }, ], step: None, code: CodeBlock { start: 2563, code: [ Alter { names: [ Ident { expr: [ Symbol( "cases", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 357, }, ], ), Symbol( "]", ), ], line: 357, }, ], values: [ [ Ident { expr: [ Symbol( "createcases", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 357, }, ], ], ), ], line: 357, }, ], ], line: 357, column: 9, }, ], end: 2573, }, line: 357, column: 17, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"+\"", ), ], ], ), ], line: 357, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 361, column: 0, }, ForLoop { iter: "n", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "level", ), ], line: 361, }, ], step: None, code: CodeBlock { start: 2588, code: [ ForFuncLoop { iters: [ "_", "v", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "cases", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 362, }, ], ), Symbol( "]", ), ], line: 362, }, ], ], ), ], line: 362, }, ], stop: None, initial: None, code: CodeBlock { start: 13, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "v", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 363, }, ], ], line: 364, column: 0, }, Variable { names: [ ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 364, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 364, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 364, }, ], ], ), ], line: 364, }, ], [ Symbol( "\"\"", ), ], ], ), ], line: 364, }, ], ], line: 364, column: 18, }, Alter { names: [ Ident { expr: [ Symbol( "IX", ), ], line: 364, }, ], values: [ [ Symbol( "false", ), ], ], line: 365, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "p", ), Call( [], ), ], line: 366, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "v", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 366, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "IX", ), ], line: 366, }, Operator( ( "==", true, ), ), Operator( ( "not", false, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "v", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 366, }, ], ], ), ], line: 365, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 366, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 367, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 368, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 368, }, Operator( ( "%", true, ), ), Symbol( "60000", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 60, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 368, }, ], end: 65, }, next: None, line: 368, column: 12, }, ], end: 79, }, line: 369, column: 1, }, ], end: 2668, }, line: 370, column: 1, }, Ident { expr: [ Symbol( "checkload", ), Call( [ [ Symbol( "\"for x do\"", ), ], [ Symbol( "\"expected\"", ), ], ], ), ], line: 370, }, Ident { expr: [ Symbol( "checkload", ), Call( [ [ Symbol( "\"x:call\"", ), ], [ Symbol( "\"expected\"", ), ], ], ), ], line: 374, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 375, }, ]