rinha 0.0.6

Competição saudável de compiladores
Documentation
{
  "name": "files/fib.rinha",
  "expression": {
    "kind": "Let",
    "name": {
      "text": "fib",
      "location": { "start": 4, "end": 7, "filename": "files/fib.rinha" }
    },
    "value": {
      "kind": "Function",
      "parameters": [
        {
          "text": "n",
          "location": { "start": 14, "end": 15, "filename": "files/fib.rinha" }
        }
      ],
      "value": {
        "kind": "If",
        "condition": {
          "kind": "Binary",
          "lhs": {
            "kind": "Var",
            "text": "n",
            "location": {
              "start": 28,
              "end": 29,
              "filename": "files/fib.rinha"
            }
          },
          "op": "Lt",
          "rhs": {
            "kind": "Int",
            "value": 2,
            "location": {
              "start": 32,
              "end": 33,
              "filename": "files/fib.rinha"
            }
          },
          "location": { "start": 28, "end": 33, "filename": "files/fib.rinha" }
        },
        "then": {
          "kind": "Var",
          "text": "n",
          "location": { "start": 41, "end": 42, "filename": "files/fib.rinha" }
        },
        "otherwise": {
          "kind": "Binary",
          "lhs": {
            "kind": "Call",
            "callee": {
              "kind": "Var",
              "text": "fib",
              "location": {
                "start": 58,
                "end": 61,
                "filename": "files/fib.rinha"
              }
            },
            "arguments": [
              {
                "kind": "Binary",
                "lhs": {
                  "kind": "Var",
                  "text": "n",
                  "location": {
                    "start": 62,
                    "end": 63,
                    "filename": "files/fib.rinha"
                  }
                },
                "op": "Sub",
                "rhs": {
                  "kind": "Int",
                  "value": 1,
                  "location": {
                    "start": 66,
                    "end": 67,
                    "filename": "files/fib.rinha"
                  }
                },
                "location": {
                  "start": 62,
                  "end": 67,
                  "filename": "files/fib.rinha"
                }
              }
            ],
            "location": {
              "start": 58,
              "end": 68,
              "filename": "files/fib.rinha"
            }
          },
          "op": "Add",
          "rhs": {
            "kind": "Call",
            "callee": {
              "kind": "Var",
              "text": "fib",
              "location": {
                "start": 71,
                "end": 74,
                "filename": "files/fib.rinha"
              }
            },
            "arguments": [
              {
                "kind": "Binary",
                "lhs": {
                  "kind": "Var",
                  "text": "n",
                  "location": {
                    "start": 75,
                    "end": 76,
                    "filename": "files/fib.rinha"
                  }
                },
                "op": "Sub",
                "rhs": {
                  "kind": "Int",
                  "value": 2,
                  "location": {
                    "start": 79,
                    "end": 80,
                    "filename": "files/fib.rinha"
                  }
                },
                "location": {
                  "start": 75,
                  "end": 80,
                  "filename": "files/fib.rinha"
                }
              }
            ],
            "location": {
              "start": 71,
              "end": 81,
              "filename": "files/fib.rinha"
            }
          },
          "location": { "start": 58, "end": 81, "filename": "files/fib.rinha" }
        },
        "location": { "start": 24, "end": 85, "filename": "files/fib.rinha" }
      },
      "location": { "start": 10, "end": 87, "filename": "files/fib.rinha" }
    },
    "next": {
      "kind": "Print",
      "value": {
        "kind": "Call",
        "callee": {
          "kind": "Var",
          "text": "fib",
          "location": { "start": 97, "end": 100, "filename": "files/fib.rinha" }
        },
        "arguments": [
          {
            "kind": "Int",
            "value": 10,
            "location": {
              "start": 101,
              "end": 103,
              "filename": "files/fib.rinha"
            }
          }
        ],
        "location": { "start": 97, "end": 104, "filename": "files/fib.rinha" }
      },
      "location": { "start": 90, "end": 105, "filename": "files/fib.rinha" }
    },
    "location": { "start": 0, "end": 105, "filename": "files/fib.rinha" }
  },
  "location": { "start": 0, "end": 105, "filename": "files/fib.rinha" }
}