
> rio-de-js@0.0.1 ast /Users/olegkirichenko/projects/divsense/rio-de-js
> node play/generate_ast.js

{
  "type": "Program",
  "body": [
    {
      "type": "ReturnStatement",
      "argument": {
        "type": "ObjectExpression",
        "properties": [
          {
            "type": "Property",
            "key": {
              "type": "Identifier",
              "name": "x"
            },
            "value": {
              "type": "Identifier",
              "name": "x"
            },
            "kind": "init"
          }
        ]
      }
    },
    {
      "type": "VariableDeclaration",
      "declarations": [
        {
          "type": "VariableDeclarator",
          "id": {
            "type": "Identifier",
            "name": "x"
          },
          "init": {
            "type": "ArrowFunctionExpression",
            "params": [
              {
                "type": "Identifier",
                "name": "f"
              }
            ],
            "body": {
              "type": "ArrowFunctionExpression",
              "params": [
                {
                  "type": "Identifier",
                  "name": "i"
                }
              ],
              "body": {
                "type": "BlockStatement",
                "body": [
                  {
                    "type": "VariableDeclaration",
                    "declarations": [
                      {
                        "type": "VariableDeclarator",
                        "id": {
                          "type": "Identifier",
                          "name": "xs"
                        },
                        "init": {
                          "type": "CallExpression",
                          "callee": {
                            "type": "Identifier",
                            "name": "p"
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "name": "i"
                            }
                          ]
                        }
                      }
                    ],
                    "kind": "const"
                  },
                  {
                    "type": "ReturnStatement",
                    "argument": {
                      "type": "Identifier",
                      "name": "xs"
                    }
                  }
                ]
              },
              "expression": false
            },
            "expression": true
          }
        }
      ],
      "kind": "const"
    }
  ]
}
