1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| { CLASS: 'TopLevelBlock', statements: [ { CLASS: 'FunctionDeclaration', name: 'fib', parameters: [ { CLASS: 'Parameter', name: 'n', typeDeclared: { CLASS: 'NamedTypeNode', name: 'Int', type: Int }, externalName: undefined, type: Int } ], block: { CLASS: 'Block', statements: [ { condition: { CLASS: 'LogicalOperatorCall', operator: '==', left: { CLASS: 'Id', value: 'n', symbol: { CLASS: 'ConstantTypeSymbol', name: 'n', type: Int, cannotOverwrite: true }, type: Int }, right: { CLASS: 'IntLiteral', value: 0, symbol: undefined, type: Int }, type: Bool }, block: { CLASS: 'Block', statements: [ { CLASS: 'ReturnStatement', expression: { CLASS: 'IntLiteral', value: 0, symbol: undefined, type: Int }, type: Int } ] } }, { condition: { CLASS: 'LogicalOperatorCall', operator: '==', left: { CLASS: 'Id', value: 'n', symbol: { CLASS: 'ConstantTypeSymbol', name: 'n', type: Int, cannotOverwrite: true }, type: Int }, right: { CLASS: 'IntLiteral', value: 1, symbol: undefined, type: Int }, type: Bool }, block: { CLASS: 'Block', statements: [ { CLASS: 'ReturnStatement', expression: { CLASS: 'IntLiteral', value: 1, symbol: undefined, type: Int }, type: Int } ] } }, { CLASS: 'ReturnStatement', expression: { CLASS: 'OperatorCall', operator: '+', left: { CLASS: 'FunctionCall', callee: 'fib', args: { CLASS: 'ParenthesizedExpression', expressions: [ { CLASS: 'OperatorCall', operator: '-', left: { CLASS: 'Id', value: 'n', symbol: { CLASS: 'ConstantTypeSymbol', name: 'n', type: Int, cannotOverwrite: true }, type: Int }, right: { CLASS: 'IntLiteral', value: 1, symbol: undefined, type: Int }, type: Int } ], ids: [ undefined ], expressionsTypes: [ Int ], type: (Int) }, functionType: Function (Int) -> Int, type: Int }, right: { CLASS: 'FunctionCall', callee: 'fib', args: { CLASS: 'ParenthesizedExpression', expressions: [ { CLASS: 'OperatorCall', operator: '-', left: { CLASS: 'Id', value: 'n', symbol: { CLASS: 'ConstantTypeSymbol', name: 'n', type: Int, cannotOverwrite: true }, type: Int }, right: { CLASS: 'IntLiteral', value: 2, symbol: undefined, type: Int }, type: Int } ], ids: [ undefined ], expressionsTypes: [ Int ], type: (Int) }, functionType: Function (Int) -> Int, type: Int }, type: Int }, type: Int } ] }, returnTypeDeclaredBare: { CLASS: 'NamedTypeNode', name: 'Int', type: Int }, paramsTypes: (Int), returnType: Int }, { CLASS: 'ConstantDeclaration', pattern: { CLASS: 'IdentifierPattern', name: 'resultFor7', typeBare: undefined, type: Int }, expression: { CLASS: 'FunctionCall', callee: 'fib', args: { CLASS: 'ParenthesizedExpression', expressions: [ { CLASS: 'IntLiteral', value: 7, symbol: undefined, type: Int } ], ids: [ undefined ], expressionsTypes: [ Int ], type: (Int) }, functionType: Function (Int) -> Int, type: Int }, type: Int } ] }
|