--- source: src/main.rs expression: parsed input_file: test-data/lua5.2-tests/constructs.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing syntax\"", ), ], ], ), ], line: 1, }, Variable { names: [ ( "debug", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"debug\"", ), ], ], ), ], line: 3, }, ], ], line: 6, column: 0, }, DoBlock( CodeBlock { start: 12, code: [], end: 16, }, ), DoBlock( CodeBlock { start: 18, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 7, }, ], values: [ [ Symbol( "3", ), ], ], line: 7, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 7, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 7, }, ], end: 30, }, ), 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: 13, }, ], ], ), ], line: 8, }, 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: 14, }, Operator( ( "*", true, ), ), Symbol( "4", ), ], ], ), ], line: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "2", ), 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: 14, }, 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: 16, }, ], ], ), ], line: 15, }, 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: 16, }, 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: 18, }, 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: 17, }, 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: 18, }, 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: 20, }, Operator( ( "and", true, ), ), Symbol( "\"a\"", ), Operator( ( "..", true, ), ), Symbol( "\"b\"", ), Operator( ( ">", true, ), ), Symbol( "\"a\"", ), ], ], ), ], line: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Expr( [ Symbol( "true", ), Operator( ( "or", true, ), ), Symbol( "false", ), ], ), Ident { expr: [], line: 22, }, Operator( ( "and", true, ), ), Symbol( "nil", ), ], ), Ident { expr: [], line: 22, }, ], ], ), ], line: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "true", ), Operator( ( "or", true, ), ), Symbol( "false", ), Operator( ( "and", true, ), ), Symbol( "nil", ), ], ], ), ], line: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Expr( [ Expr( [ Symbol( "1", ), Operator( ( "or", true, ), ), Symbol( "false", ), ], ), Ident { expr: [], line: 26, }, Operator( ( "and", true, ), ), Symbol( "true", ), ], ), Ident { expr: [], line: 26, }, Operator( ( "or", true, ), ), Symbol( "false", ), ], ), Ident { expr: [], line: 26, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Expr( [ Expr( [ Symbol( "nil", ), Operator( ( "and", true, ), ), Symbol( "true", ), ], ), Ident { expr: [], line: 27, }, Operator( ( "or", true, ), ), Symbol( "false", ), ], ), Ident { expr: [], line: 27, }, Operator( ( "and", true, ), ), Symbol( "true", ), ], ), Ident { expr: [], line: 27, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 26, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "1", ), ], [ Symbol( "nil", ), ], ], line: 29, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Expr( [ Symbol( "1", ), Operator( ( "or", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 30, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Expr( [ Symbol( "1", ), Operator( ( "and", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 30, }, Operator( ( "+", true, ), ), Expr( [ Operator( ( "-", false, ), ), Symbol( "1.25", ), Operator( ( "or", true, ), ), Operator( ( "-", false, ), ), Symbol( "4", ), ], ), Ident { expr: [], line: 30, }, Operator( ( "==", true, ), ), Symbol( "0.75", ), ], ], ), ], line: 29, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 30, }, ], values: [ [ Expr( [ Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 31, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 31, }, ], ), Ident { expr: [], line: 31, }, Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Expr( [ Symbol( "10", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 31, }, ], ), Ident { expr: [], line: 31, }, Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "11", ), ], ), Ident { expr: [], line: 31, }, ], ], line: 31, column: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 31, }, ], ], ), ], line: 31, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 31, }, ], values: [ [ Expr( [ Expr( [ Expr( [ Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 32, }, Operator( ( "or", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 32, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Expr( [ Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Symbol( "4", ), ], ), Ident { expr: [], line: 32, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ), Ident { expr: [], line: 32, }, ], ], line: 32, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 32, }, ], ], ), ], line: 32, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 32, }, Ident { expr: [ Symbol( "y", ), ], line: 34, }, ], values: [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], line: 34, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "x", ), ], line: 35, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 35, }, ], ), Ident { expr: [], line: 35, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 35, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 35, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 34, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 35, }, Ident { expr: [ Symbol( "y", ), ], line: 36, }, ], values: [ [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], line: 36, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "x", ), ], line: 37, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 37, }, ], ), Ident { expr: [], line: 37, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 37, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 37, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 36, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "1234567890", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "tonumber", ), Call( [ [ Symbol( "'1234567890'", ), ], ], ), ], line: 39, }, Operator( ( "and", true, ), ), Symbol( "1234567890", ), Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Symbol( "1234567891", ), ], ], ), ], line: 37, }, RepeatLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 415, code: [], end: 416, }, line: 43, column: 3, }, RepeatLoop { condition: [ Symbol( "true", ), ], body: CodeBlock { start: 419, code: [], end: 420, }, line: 43, column: 7, }, WhileLoop { condition: [ Symbol( "false", ), ], body: CodeBlock { start: 425, code: [], end: 426, }, line: 44, column: 4, }, WhileLoop { condition: [ Symbol( "nil", ), ], body: CodeBlock { start: 430, code: [], end: 431, }, line: 44, column: 9, }, DoBlock( CodeBlock { start: 433, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 47, column: 3, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "x", ], body: CodeBlock { start: 8, code: [ Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 47, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "a", ), ], ), [ Symbol( "1", ), ], ), ], line: 47, column: 7, }, ], ], line: 47, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 47, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "1", ), ], ), ], line: 47, column: 15, }, ], ], line: 47, column: 16, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 47, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "G", ), ], ), [ Symbol( "1", ), ], ), ], line: 47, column: 23, }, ], ], line: 47, column: 23, }, ], end: 32, }, line: 47, column: 32, }, ], end: 466, }, ), Function { local: false, name: [ Symbol( "f", ), ], args: [ "i", ], body: CodeBlock { start: 471, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 51, }, ], ], ), ], line: 51, }, Operator( ( "~=", true, ), ), Symbol( "'number'", ), ], body: CodeBlock { start: 8, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "i", ), ], line: 51, }, ], [ Symbol( "'jojo'", ), ], ], ), ), ], end: 14, }, next: None, line: 51, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 52, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 20, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "i", ), ], line: 52, }, ], [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 52, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 52, }, ], ], ), ), ], end: 31, }, next: None, line: 52, column: 16, }, ], end: 504, }, line: 53, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 53, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 55, }, ], ), ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "5", ), ], ], ), ], line: 55, }, ], ), ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 55, }, ], ), ], line: 55, column: 19, }, ], ], line: 55, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 56, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 56, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 56, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 56, }, Operator( ( "==", true, ), ), Symbol( "9", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "12", ), ], ), Symbol( "]", ), ], line: 56, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 55, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "nil", ), ], ), Symbol( "]", ), ], line: 57, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 56, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 57, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "'alo'", ), ], ], ), ], line: 58, }, ], ), ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "'xixi'", ), ], ], ), ], line: 58, }, ], ), ( None, [ Symbol( "nil", ), ], ), ], line: 58, column: 11, }, ], ], line: 58, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 59, }, Operator( ( "==", true, ), ), Symbol( "'alo'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 59, }, Operator( ( "==", true, ), ), Symbol( "'xixi'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 59, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 58, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 59, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "'alo'", ), ], ], ), ], line: 60, }, Operator( ( "..", true, ), ), Symbol( "'xixi'", ), ], ), ], line: 60, column: 8, }, ], ], line: 60, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 61, }, Operator( ( "==", true, ), ), Symbol( "'aloxixi'", ), ], ], ), ], line: 60, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 61, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Table { data: [], line: 62, column: 6, }, ], ], ), ], line: 62, }, ], ), ], line: 62, column: 7, }, ], ], line: 62, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 63, }, Operator( ( "==", true, ), ), Symbol( "'jojo'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 63, }, ], ], ), ], line: 63, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 62, }, Variable { names: [ ( "f", false, ), ], values: [ [ Lambda { args: [ "i", ], body: CodeBlock { start: 658, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 67, }, Operator( ( "<", true, ), ), Symbol( "10", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "'a'", ), ], ], ), ), ], end: 9, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 68, }, Operator( ( "<", true, ), ), Symbol( "20", ), ], body: CodeBlock { start: 13, code: [ Return( Some( [ [ Symbol( "'b'", ), ], ], ), ), ], end: 17, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 69, }, Operator( ( "<", true, ), ), Symbol( "30", ), ], body: CodeBlock { start: 21, code: [ Return( Some( [ [ Symbol( "'c'", ), ], ], ), ), ], end: 25, }, next: None, line: 70, column: 1, }, ), line: 70, column: 1, }, ), line: 70, column: 1, }, ], end: 685, }, line: 71, column: 1, }, ], ], line: 71, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 73, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "12", ), ], ], ), ], line: 73, }, Operator( ( "==", true, ), ), Symbol( "'b'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "26", ), ], ], ), ], line: 73, }, Operator( ( "==", true, ), ), Symbol( "'c'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 73, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 71, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 722, code: [ Break, ], end: 725, }, line: 75, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 75, }, ], values: [ [ Symbol( "100", ), ], ], line: 76, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 76, }, ], values: [ [ Symbol( "3", ), ], ], line: 77, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 77, }, ], values: [ [ Table { data: [], line: 78, column: 4, }, ], ], line: 78, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 78, }, ], values: [ [ Symbol( "nil", ), ], ], line: 80, column: 0, }, WhileLoop { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 80, }, ], body: CodeBlock { start: 746, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 81, }, ], values: [ [ Symbol( "0", ), ], ], line: 81, column: 4, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "n", ), ], line: 81, }, ], step: None, code: CodeBlock { start: 11, code: [ ForLoop { iter: "i", start: [ Ident { expr: [ Symbol( "i", ), ], line: 81, }, ], end: [ Symbol( "1", ), ], step: Some( [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ), code: CodeBlock { start: 10, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 81, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 81, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 81, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 81, }, ], ), Symbol( "]", ), ], line: 81, }, ], values: [ [ Symbol( "1", ), ], ], line: 81, column: 13, }, ], end: 24, }, line: 81, column: 24, }, ], end: 37, }, line: 81, column: 37, }, ], end: 785, }, line: 82, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 83, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "n", ), ], line: 83, }, Operator( ( "*", true, ), ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 83, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 83, }, Operator( ( "/", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 83, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 82, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 84, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 84, }, ], ), Symbol( "]", ), ], line: 84, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 84, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 84, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 84, }, ], ], ), ], line: 83, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "b", ], body: CodeBlock { start: 835, code: [ Variable { names: [ ( "x", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 87, column: 5, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "x", ), ], line: 95, }, Operator( ( ">=", true, ), ), Symbol( "12", ), ], body: CodeBlock { start: 6, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 89, column: 3, }, IfStatement { condition: [ Ident { expr: [ Symbol( "b", ), ], line: 90, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], body: CodeBlock { start: 8, code: [ Variable { names: [ ( "b", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 90, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 90, }, ], values: [ [ Symbol( "10", ), ], ], line: 90, column: 9, }, Break, ], end: 19, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "b", ), ], line: 91, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], body: CodeBlock { start: 23, code: [ Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 91, }, ], values: [ [ Symbol( "20", ), ], ], line: 91, column: 4, }, Break, ], end: 30, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "b", ), ], line: 92, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], body: CodeBlock { start: 34, code: [ Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 92, }, ], values: [ [ Symbol( "30", ), ], ], line: 92, 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: 93, }, ], ], line: 93, column: 16, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 93, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 93, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 93, column: 22, }, ], end: 62, }, next: None, line: 94, column: 1, }, ), line: 94, column: 1, }, ), line: 94, column: 1, }, ), line: 94, column: 1, }, ], end: 69, }, line: 95, column: 4, }, Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 96, }, ], ], ), ), ], end: 912, }, line: 97, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 99, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 99, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 99, }, Operator( ( "==", true, ), ), Symbol( "30", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 99, }, Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 97, }, Variable { names: [ ( "f", false, ), ], values: [ [ Lambda { args: [ "i", ], body: CodeBlock { start: 950, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 103, }, Operator( ( "<", true, ), ), Symbol( "10", ), ], body: CodeBlock { start: 5, code: [ Return( Some( [ [ Symbol( "'a'", ), ], ], ), ), ], end: 8, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 104, }, Operator( ( "<", true, ), ), Symbol( "20", ), ], body: CodeBlock { start: 12, code: [ Return( Some( [ [ Symbol( "'b'", ), ], ], ), ), ], end: 15, }, next: Some( IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 105, }, 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: 107, column: 1, }, ), line: 107, column: 1, }, ), line: 107, column: 1, }, ), line: 107, column: 1, }, ], end: 976, }, line: 108, column: 1, }, ], ], line: 108, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 110, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "12", ), ], ], ), ], line: 110, }, Operator( ( "==", true, ), ), Symbol( "'b'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "26", ), ], ], ), ], line: 110, }, Operator( ( "==", true, ), ), Symbol( "'c'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 110, }, Operator( ( "==", true, ), ), Symbol( "8", ), ], ], ), ], line: 108, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "nil", ), ], [ Symbol( "23", ), ], ], line: 112, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 112, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "100", ), ], ], ), ], line: 113, }, Operator( ( "*", true, ), ), Symbol( "2", ), Operator( ( "+", true, ), ), Symbol( "3", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 113, }, ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 113, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 113, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ), ], line: 113, column: 20, }, ], ], line: 113, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 114, }, Operator( ( "==", true, ), ), Symbol( "19", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 114, }, Operator( ( "==", true, ), ), Symbol( "25", ), ], ], ), ], line: 113, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 114, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "f", ), ], ), [ Symbol( "2", ), Operator( ( "+", true, ), ), Symbol( "3", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 115, }, ], ), ( Some( [ Symbol( "a", ), ], ), [ Ident { expr: [ Symbol( "b", ), ], line: 115, }, Operator( ( "+", true, ), ), Symbol( "2", ), ], ), ], line: 115, column: 17, }, ], ], line: 115, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "f", ), ], line: 116, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "a", ), ], line: 116, }, Operator( ( "==", true, ), ), Symbol( "25", ), ], ], ), ], line: 115, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 116, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "y", ), ], ), [ Symbol( "1", ), ], ), ], line: 118, column: 7, }, ], ], line: 118, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 118, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "y", ), ], line: 119, }, ], ), ], line: 119, column: 7, }, ], ], line: 119, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 120, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 119, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "i", ], body: CodeBlock { start: 1109, code: [ WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 3, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 124, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 124, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 124, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], line: 124, column: 6, }, ], end: 12, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 12, code: [ Return( None, ), ], end: 15, }, next: None, line: 125, column: 4, }, ), line: 125, column: 4, }, ], end: 20, }, line: 126, column: 1, }, ], end: 1131, }, line: 127, column: 1, }, Function { local: false, name: [ Symbol( "g", ), ], args: [ "i", ], body: CodeBlock { start: 1137, code: [ WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 3, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 131, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 131, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 131, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], line: 131, column: 5, }, ], end: 11, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 11, code: [ Return( None, ), ], end: 13, }, next: None, line: 132, column: 3, }, ), line: 132, column: 3, }, ], end: 17, }, line: 133, column: 1, }, ], end: 1155, }, line: 134, column: 1, }, Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 134, }, Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 136, }, DoBlock( CodeBlock { start: 1166, code: [ Function { local: false, name: [ Symbol( "f", ), ], args: [], body: CodeBlock { start: 4, code: [ Return( Some( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ), ], end: 12, }, line: 139, column: 12, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 140, }, ], ], line: 140, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 140, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 141, }, Ident { expr: [ Symbol( "b", ), ], line: 142, }, Ident { expr: [ Symbol( "c", ), ], line: 142, }, ], values: [ [ Expr( [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 142, }, ], ), Ident { expr: [], line: 142, }, ], ], line: 142, column: 12, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 143, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 143, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 143, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 142, }, ], end: 1230, }, ), Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 146, }, ], ], line: 146, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 146, }, Function { local: false, name: [ Symbol( "g", ), ], args: [], body: CodeBlock { start: 1255, code: [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 149, }, Return( None, ), ], end: 1262, }, line: 149, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "g", ), Call( [], ), ], line: 150, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 149, }, Function { local: false, name: [ Symbol( "g", ), ], args: [], body: CodeBlock { start: 1275, code: [ Return( Some( [ [ Symbol( "nil", ), Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 151, }, ], ], ), ), ], end: 1282, }, line: 151, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 151, }, Ident { expr: [ Symbol( "b", ), ], line: 152, }, ], values: [ [ Ident { expr: [ Symbol( "g", ), Call( [], ), ], line: 152, }, ], ], line: 152, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 153, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 153, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 152, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 153, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 155, }, ], 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: 163, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 163, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 164, }, ], [ Symbol( "\"%s+\"", ), ], [ Symbol( "\"\\n\"", ), ], ], ), ], line: 164, }, ], ], line: 164, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 164, }, Ident { expr: [ Symbol( "a", ), ], line: 165, }, ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 165, }, ], ], ), Call( [], ), ], line: 165, }, ], ], line: 165, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "a", ), ], line: 166, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "b", ), ], line: 166, }, ], ], ), ], line: 165, }, Function { local: false, name: [ Symbol( "g", ), ], args: [ "a", "b", "c", "d", "e", ], body: CodeBlock { start: 1354, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 169, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 169, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 169, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 169, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "e", ), ], line: 169, }, Operator( ( "or", true, ), ), Symbol( "nil", ), ], ), Ident { expr: [], line: 169, }, ], 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: 169, column: 24, }, ), line: 169, column: 24, }, ], end: 1380, }, line: 170, column: 1, }, Function { local: false, name: [ Symbol( "h", ), ], args: [ "a", "b", "c", "d", "e", ], body: CodeBlock { start: 1393, code: [ WhileLoop { condition: [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 173, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 173, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 173, }, Operator( ( "or", true, ), ), Expr( [ Ident { expr: [ Symbol( "d", ), ], line: 173, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "e", ), ], line: 173, }, ], ), Ident { expr: [], line: 173, }, Operator( ( "or", true, ), ), Symbol( "nil", ), ], ), Ident { expr: [], line: 173, }, ], body: CodeBlock { start: 17, code: [ Return( Some( [ [ Symbol( "1", ), ], ], ), ), ], end: 21, }, line: 173, column: 21, }, Return( Some( [ [ Symbol( "0", ), ], ], ), ), ], end: 1419, }, line: 175, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], ), ], line: 177, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], ), ], line: 177, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "2", ), ], [ Symbol( "1", ), ], ], ), ], line: 177, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 175, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 178, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 178, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 178, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 177, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 179, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], [ Symbol( "\"\"", ), ], ], ), ], line: 178, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 182, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 182, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "'a'", ), ], ], ), ], line: 182, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 181, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 183, }, Operator( ( "==", true, ), ), Symbol( "'x'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 183, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 183, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 182, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 185, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 185, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], [ Symbol( "'x'", ), ], ], ), ], line: 185, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 184, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "nil", ), ], ], ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "g", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "nil", ), ], ], ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "h", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "nil", ), ], [ Symbol( "1", ), ], [ Symbol( "nil", ), ], ], ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 186, }, 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: 188, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 190, }, ], values: [ [ Symbol( "2", ), Operator( ( "<", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Symbol( "3", ), ], ], line: 191, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 191, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 191, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 191, }, ], 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: 192, }, ], ], line: 192, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 192, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), ], ], ), ], line: 192, }, DoBlock( CodeBlock { start: 1731, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 196, column: 3, }, IfStatement { condition: [ Symbol( "nil", ), ], body: CodeBlock { start: 6, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 196, }, ], values: [ [ Symbol( "1", ), ], ], line: 196, column: 4, }, ], end: 11, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 11, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 196, }, ], values: [ [ Symbol( "2", ), ], ], line: 196, column: 4, }, ], end: 16, }, next: None, line: 196, column: 16, }, ), line: 196, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 197, }, Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 196, }, ], end: 1755, }, ), Function { local: false, name: [ Symbol( "F", ), ], args: [ "a", ], body: CodeBlock { start: 1760, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getinfo", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "\"n\"", ), ], ], ), Symbol( ".", ), Symbol( "name", ), ], line: 201, }, Operator( ( "==", true, ), ), Symbol( "'F'", ), ], ], ), ], line: 201, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 202, }, ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ), ], end: 1782, }, line: 203, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 203, }, Ident { expr: [ Symbol( "b", ), ], line: 205, }, ], values: [ [ Ident { expr: [ Symbol( "F", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 205, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], ], line: 205, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 205, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 205, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 205, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 205, }, Ident { expr: [ Symbol( "b", ), ], line: 206, }, ], values: [ [ Ident { expr: [ Symbol( "F", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 206, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], line: 206, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 206, }, Operator( ( "==", true, ), ), Symbol( "true", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 206, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 206, }, Function { local: false, name: [ Symbol( "ID", ), ], args: [ "x", ], body: CodeBlock { start: 1830, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), ], line: 213, }, ], ], ), ), ], end: 1833, }, line: 213, column: 8, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "t", "i", ], body: CodeBlock { start: 1840, code: [ Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "n", ), ], line: 216, }, ], ], line: 217, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "fmod", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "floor", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 217, }, Operator( ( "/", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 217, }, ], ], ), ], line: 217, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 217, }, ], ], ), ], line: 217, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 217, column: 20, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 217, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), ], line: 218, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 218, }, ], ], line: 219, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "res", ), ], line: 219, }, ], ), Symbol( "]", ), ], line: 219, }, ], ], ), ), ], end: 1877, }, line: 220, column: 1, }, Variable { names: [ ( "arg", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\" ( 1 < 2 ) \"", ), ], ), ( None, [ Symbol( "\" ( 1 >= 2 ) \"", ), ], ), ( None, [ Symbol( "\" F ( ) \"", ), ], ), ( None, [ Symbol( "\" nil \"", ), ], ), ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ], line: 222, column: 16, }, ], ], line: 224, column: 0, }, Variable { names: [ ( "op", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\" and \"", ), ], ), ( None, [ Symbol( "\" or \"", ), ], ), ( None, [ Symbol( "\" == \"", ), ], ), ( None, [ Symbol( "\" ~= \"", ), ], ), ( Some( [ Symbol( "n", ), ], ), [ Symbol( "4", ), ], ), ], line: 224, column: 16, }, ], ], line: 226, column: 0, }, Variable { names: [ ( "neg", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "\" \"", ), ], ), ( None, [ Symbol( "\" not \"", ), ], ), ( Some( [ Symbol( "n", ), ], ), [ Symbol( "2", ), ], ), ], line: 226, column: 12, }, ], ], line: 228, column: 0, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 229, column: 0, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 250, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 250, }, ], body: CodeBlock { start: 1926, code: [ Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 230, }, ], values: [ [ Symbol( "1", ), ], ], line: 231, column: 0, }, Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "neg", ), ], line: 231, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 231, }, ], ], ), ], line: 231, }, Operator( ( "..", true, ), ), Symbol( "'ID('", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "neg", ), ], line: 231, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 231, }, ], ], ), ], line: 231, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), ], line: 231, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 231, }, ], ], ), ], line: 231, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "op", ), ], line: 231, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 231, }, ], ], ), ], line: 231, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "neg", ), ], line: 232, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 232, }, ], ], ), ], line: 231, }, Operator( ( "..", true, ), ), Symbol( "'ID('", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), ], line: 232, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 232, }, ], ], ), ], line: 232, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "op", ), ], line: 232, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 232, }, ], ], ), ], line: 232, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "neg", ), ], line: 232, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 232, }, ], ], ), ], line: 232, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "f", ), Call( [ [ Ident { expr: [ Symbol( "arg", ), ], line: 232, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 232, }, ], ], ), ], line: 232, }, Operator( ( "..", true, ), ), Symbol( "'))'", ), ], ], line: 233, column: 0, }, Variable { names: [ ( "s1", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 233, }, ], [ Symbol( "'ID'", ), ], [ Symbol( "''", ), ], ], ), ], line: 233, }, ], ], line: 233, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "K", ), ], line: 233, }, Ident { expr: [ Symbol( "X", ), ], line: 234, }, Ident { expr: [ Symbol( "NX", ), ], line: 234, }, Ident { expr: [ Symbol( "WX1", ), ], line: 234, }, Ident { expr: [ Symbol( "WX2", ), ], line: 234, }, ], values: [ [ Symbol( "nil", ), ], ], line: 234, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 234, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ MultilineString( "[[\n local a = %s\n local b = not %s\n K = b\n local xxx; \n if %s then X = a else X = b end\n if %s then NX = b else NX = a end\n while %s do WX1 = a; break end\n while %s do WX2 = a; break end\n repeat if (%s) then break end; assert(b) until not(%s)\n ]]", ), ], [ Ident { expr: [ Symbol( "s1", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "s1", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "s1", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "s1", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 245, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 245, }, ], ], ), ], line: 235, }, ], ], line: 245, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 246, }, ], ], ), ], line: 246, }, ], ], ), Call( [], ), ], line: 245, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), ], line: 247, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "NX", ), ], line: 247, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "WX1", ), ], line: 247, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "K", ), ], line: 247, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "WX2", ), ], line: 247, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "K", ), ], line: 247, }, ], ], ), ], line: 246, }, IfStatement { condition: [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "fmod", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 248, }, ], [ Symbol( "4000", ), ], ], ), ], line: 248, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 162, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 248, }, ], end: 167, }, next: None, line: 248, column: 17, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 248, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 249, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 249, column: 5, }, ], end: 2099, }, line: 250, column: 4, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 250, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'testing short-circuit optimizations'", ), ], ], ), ], line: 252, }, Alter { names: [ Ident { expr: [ Symbol( "_ENV", ), Symbol( ".", ), Symbol( "GLOB1", ), ], line: 255, }, ], values: [ [ Symbol( "1", ), ], ], line: 257, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "_ENV", ), Symbol( ".", ), Symbol( "GLOB2", ), ], line: 257, }, ], values: [ [ Symbol( "2", ), ], ], line: 260, column: 0, }, Variable { names: [ ( "basiccases", false, ), ], values: [ [ Table { data: [ ( None, [ Table { data: [ ( None, [ Symbol( "\"nil\"", ), ], ), ( None, [ Symbol( "nil", ), ], ), ], line: 261, column: 5, }, ], ), ( None, [ Table { data: [ ( None, [ Symbol( "\"false\"", ), ], ), ( None, [ Symbol( "false", ), ], ), ], line: 262, column: 5, }, ], ), ( None, [ Table { data: [ ( None, [ Symbol( "\"true\"", ), ], ), ( None, [ Symbol( "true", ), ], ), ], line: 263, column: 5, }, ], ), ( None, [ Table { data: [ ( None, [ Symbol( "\"10\"", ), ], ), ( None, [ Symbol( "10", ), ], ), ], line: 264, column: 5, }, ], ), ( None, [ Table { data: [ ( None, [ Symbol( "\"(_ENV.GLOB1 < _ENV.GLOB2)\"", ), ], ), ( None, [ Symbol( "true", ), ], ), ], line: 265, column: 5, }, ], ), ( None, [ Table { data: [ ( None, [ Symbol( "\"(_ENV.GLOB2 < _ENV.GLOB1)\"", ), ], ), ( None, [ Symbol( "false", ), ], ), ], line: 266, column: 5, }, ], ), ], line: 267, column: 1, }, ], ], line: 270, column: 0, }, Variable { names: [ ( "binops", false, ), ], values: [ [ Table { data: [ ( None, [ Table { data: [ ( None, [ Symbol( "\" and \"", ), ], ), ( None, [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2170, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 271, }, ], body: CodeBlock { start: 4, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 271, }, ], ], ), ), ], end: 7, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "b", ), ], line: 271, }, ], ], ), ), ], end: 10, }, next: None, line: 271, column: 10, }, ), line: 271, column: 10, }, ], end: 2181, }, line: 271, column: 20, }, ], ), ], line: 271, column: 21, }, ], ), ( None, [ Table { data: [ ( None, [ Symbol( "\" or \"", ), ], ), ( None, [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2192, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "a", ), ], line: 272, }, ], body: CodeBlock { start: 3, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 272, }, ], ], ), ), ], end: 6, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 6, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "b", ), ], line: 272, }, ], ], ), ), ], end: 9, }, next: None, line: 272, column: 9, }, ), line: 272, column: 9, }, ], end: 2202, }, line: 272, column: 19, }, ], ), ], line: 272, column: 20, }, ], ), ], line: 273, column: 1, }, ], ], line: 275, column: 0, }, Variable { names: [ ( "mem", false, ), ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "basiccases", ), ], line: 275, }, ], ), ], line: 275, column: 6, }, ], ], line: 277, column: 0, }, Function { local: true, name: [ Symbol( "allcases", ), ], args: [ "n", ], body: CodeBlock { start: 2217, code: [ IfStatement { condition: [ Ident { expr: [ Symbol( "mem", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 278, }, ], ), Symbol( "]", ), ], line: 278, }, ], body: CodeBlock { start: 6, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "mem", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 278, }, ], ), Symbol( "]", ), ], line: 278, }, ], ], ), ), ], end: 12, }, next: None, line: 278, column: 12, }, Variable { names: [ ( "res", false, ), ], values: [ [ Table { data: [], line: 279, column: 5, }, ], ], line: 281, column: 0, }, ForFuncLoop { iters: [ "_", "v", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Ident { expr: [ Symbol( "allcases", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 281, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 281, }, ], ], ), ], line: 281, }, ], stop: None, initial: None, code: CodeBlock { start: 32, code: [ Alter { names: [ Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 282, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 282, }, ], values: [ [ Ident { expr: [ Symbol( "v", ), ], line: 282, }, ], ], line: 282, column: 9, }, ], end: 42, }, line: 283, column: 1, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "n", ), ], line: 284, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], step: None, code: CodeBlock { start: 51, code: [ ForFuncLoop { iters: [ "_", "v1", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Ident { expr: [ Symbol( "allcases", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 285, }, ], ], ), ], line: 285, }, ], ], ), ], line: 285, }, ], stop: None, initial: None, code: CodeBlock { start: 13, code: [ ForFuncLoop { iters: [ "_", "v2", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Ident { expr: [ Symbol( "allcases", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 286, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 286, }, ], ], ), ], line: 286, }, ], ], ), ], line: 286, }, ], stop: None, initial: None, code: CodeBlock { start: 15, code: [ ForFuncLoop { iters: [ "_", "op", ], expr: [ Ident { expr: [ Symbol( "ipairs", ), Call( [ [ Ident { expr: [ Symbol( "binops", ), ], line: 287, }, ], ], ), ], line: 287, }, ], stop: None, initial: None, code: CodeBlock { start: 10, code: [ Alter { names: [ Ident { expr: [ Symbol( "res", ), Symbol( "[", ), Expr( [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "res", ), ], line: 288, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 288, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "\"(\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "v1", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 289, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "op", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 289, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "v2", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 289, }, Operator( ( "..", true, ), ), Symbol( "\")\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "op", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), Call( [ [ Ident { expr: [ Symbol( "v1", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 290, }, ], [ Ident { expr: [ Symbol( "v2", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 290, }, ], ], ), ], line: 289, }, ], ), ], line: 291, column: 1, }, ], ], line: 291, column: 1, }, ], end: 55, }, line: 292, column: 1, }, ], end: 71, }, line: 293, column: 1, }, ], end: 85, }, line: 294, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 294, }, ], end: 141, }, line: 296, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "mem", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 297, }, ], ), Symbol( "]", ), ], line: 296, }, ], values: [ [ Ident { expr: [ Symbol( "res", ), ], line: 297, }, ], ], line: 298, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "res", ), ], line: 298, }, ], ], ), ), ], end: 2367, }, line: 299, column: 1, }, Variable { names: [ ( "level", false, ), ], values: [ [ Ident { expr: [ Symbol( "_soft", ), ], line: 302, }, Operator( ( "and", true, ), ), Symbol( "3", ), Operator( ( "or", true, ), ), Symbol( "4", ), ], ], line: 304, column: 0, }, ForFuncLoop { iters: [ "_", "v", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "allcases", ), Call( [ [ Ident { expr: [ Symbol( "level", ), ], line: 304, }, ], ], ), ], line: 304, }, ], ], ), ], line: 304, }, ], stop: None, initial: None, code: CodeBlock { start: 2388, code: [ Variable { names: [ ( "res", false, ), ], values: [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Symbol( "\"return \"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "v", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 305, }, ], ], ), Call( [], ), ], line: 305, }, ], ], line: 305, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "res", ), ], line: 306, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "v", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 306, }, ], ], ), ], line: 305, }, ], end: 2412, }, line: 307, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 307, }, ]