[
  {
    "type": "data_step",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "data_step_header",
          "named": true
        },
        {
          "type": "generic_statement",
          "named": true
        },
        {
          "type": "include_statement",
          "named": true
        },
        {
          "type": "line_comment",
          "named": true
        },
        {
          "type": "macro_call_statement",
          "named": true
        },
        {
          "type": "macro_definition",
          "named": true
        },
        {
          "type": "macro_do_statement",
          "named": true
        },
        {
          "type": "macro_if_statement",
          "named": true
        },
        {
          "type": "macro_variable_assignment",
          "named": true
        },
        {
          "type": "merge_statement",
          "named": true
        },
        {
          "type": "null_statement",
          "named": true
        },
        {
          "type": "output_statement",
          "named": true
        },
        {
          "type": "run_statement",
          "named": true
        },
        {
          "type": "set_statement",
          "named": true
        },
        {
          "type": "update_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "data_step_header",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "dataset_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "dataset_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "macro_variable_ref",
          "named": true
        }
      ]
    }
  },
  {
    "type": "ds_options",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "macro_call",
          "named": true
        },
        {
          "type": "macro_do_statement",
          "named": true
        },
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "numeric_literal",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "generic_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "macro_call",
          "named": true
        },
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "numeric_literal",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "include_statement",
    "named": true,
    "fields": {
      "source": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "fileref_source",
            "named": true
          },
          {
            "type": "string_literal",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "libname_statement",
    "named": true,
    "fields": {
      "libref": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_arguments",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "macro_call",
          "named": true
        },
        {
          "type": "macro_do_statement",
          "named": true
        },
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "numeric_literal",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_call",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "macro_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "macro_arguments",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_call_statement",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "macro_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "macro_arguments",
          "named": true
        },
        {
          "type": "macro_call",
          "named": true
        },
        {
          "type": "macro_do_statement",
          "named": true
        },
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "numeric_literal",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_definition",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "macro_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "data_step",
          "named": true
        },
        {
          "type": "generic_statement",
          "named": true
        },
        {
          "type": "include_statement",
          "named": true
        },
        {
          "type": "line_comment",
          "named": true
        },
        {
          "type": "macro_call",
          "named": true
        },
        {
          "type": "macro_call_statement",
          "named": true
        },
        {
          "type": "macro_definition",
          "named": true
        },
        {
          "type": "macro_do_statement",
          "named": true
        },
        {
          "type": "macro_end",
          "named": true
        },
        {
          "type": "macro_if_statement",
          "named": true
        },
        {
          "type": "macro_label",
          "named": true
        },
        {
          "type": "macro_options",
          "named": true
        },
        {
          "type": "macro_parameters",
          "named": true
        },
        {
          "type": "macro_variable_assignment",
          "named": true
        },
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "null_statement",
          "named": true
        },
        {
          "type": "numeric_literal",
          "named": true
        },
        {
          "type": "proc_sql_step",
          "named": true
        },
        {
          "type": "proc_step",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_do_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "data_step",
          "named": true
        },
        {
          "type": "generic_statement",
          "named": true
        },
        {
          "type": "include_statement",
          "named": true
        },
        {
          "type": "line_comment",
          "named": true
        },
        {
          "type": "macro_call",
          "named": true
        },
        {
          "type": "macro_call_statement",
          "named": true
        },
        {
          "type": "macro_definition",
          "named": true
        },
        {
          "type": "macro_do_statement",
          "named": true
        },
        {
          "type": "macro_if_statement",
          "named": true
        },
        {
          "type": "macro_label",
          "named": true
        },
        {
          "type": "macro_variable_assignment",
          "named": true
        },
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "null_statement",
          "named": true
        },
        {
          "type": "numeric_literal",
          "named": true
        },
        {
          "type": "proc_sql_step",
          "named": true
        },
        {
          "type": "proc_step",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_end",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "macro_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_if_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "data_step",
          "named": true
        },
        {
          "type": "generic_statement",
          "named": true
        },
        {
          "type": "include_statement",
          "named": true
        },
        {
          "type": "line_comment",
          "named": true
        },
        {
          "type": "macro_call",
          "named": true
        },
        {
          "type": "macro_call_statement",
          "named": true
        },
        {
          "type": "macro_definition",
          "named": true
        },
        {
          "type": "macro_do_statement",
          "named": true
        },
        {
          "type": "macro_if_statement",
          "named": true
        },
        {
          "type": "macro_label",
          "named": true
        },
        {
          "type": "macro_variable_assignment",
          "named": true
        },
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "null_statement",
          "named": true
        },
        {
          "type": "numeric_literal",
          "named": true
        },
        {
          "type": "proc_sql_step",
          "named": true
        },
        {
          "type": "proc_step",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_label",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "macro_name",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_name",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_options",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_parameters",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "macro_call",
          "named": true
        },
        {
          "type": "macro_do_statement",
          "named": true
        },
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "numeric_literal",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "macro_variable_assignment",
    "named": true,
    "fields": {
      "name": {
        "multiple": true,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          },
          {
            "type": "macro_variable_ref",
            "named": true
          }
        ]
      },
      "value": {
        "multiple": true,
        "required": false,
        "types": [
          {
            "type": "macro_call",
            "named": true
          },
          {
            "type": "macro_variable_ref",
            "named": true
          },
          {
            "type": "numeric_literal",
            "named": true
          },
          {
            "type": "string_literal",
            "named": true
          }
        ]
      }
    }
  },
  {
    "type": "merge_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "dataset_name",
          "named": true
        },
        {
          "type": "ds_options",
          "named": true
        }
      ]
    }
  },
  {
    "type": "null_statement",
    "named": true,
    "fields": {}
  },
  {
    "type": "options_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "output_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "dataset_name",
          "named": true
        },
        {
          "type": "ds_options",
          "named": true
        }
      ]
    }
  },
  {
    "type": "proc_sql_header",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "proc_sql_step",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "generic_statement",
          "named": true
        },
        {
          "type": "include_statement",
          "named": true
        },
        {
          "type": "line_comment",
          "named": true
        },
        {
          "type": "macro_call_statement",
          "named": true
        },
        {
          "type": "macro_definition",
          "named": true
        },
        {
          "type": "macro_do_statement",
          "named": true
        },
        {
          "type": "macro_if_statement",
          "named": true
        },
        {
          "type": "macro_variable_assignment",
          "named": true
        },
        {
          "type": "null_statement",
          "named": true
        },
        {
          "type": "proc_sql_header",
          "named": true
        },
        {
          "type": "run_or_quit_statement",
          "named": true
        },
        {
          "type": "sql_create_statement",
          "named": true
        },
        {
          "type": "sql_insert_statement",
          "named": true
        },
        {
          "type": "sql_select_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "proc_step",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "generic_statement",
          "named": true
        },
        {
          "type": "include_statement",
          "named": true
        },
        {
          "type": "line_comment",
          "named": true
        },
        {
          "type": "macro_call_statement",
          "named": true
        },
        {
          "type": "macro_definition",
          "named": true
        },
        {
          "type": "macro_do_statement",
          "named": true
        },
        {
          "type": "macro_if_statement",
          "named": true
        },
        {
          "type": "macro_variable_assignment",
          "named": true
        },
        {
          "type": "null_statement",
          "named": true
        },
        {
          "type": "proc_step_header",
          "named": true
        },
        {
          "type": "run_or_quit_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "proc_step_header",
    "named": true,
    "fields": {
      "name": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "identifier",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "program",
    "named": true,
    "root": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "data_step",
          "named": true
        },
        {
          "type": "generic_statement",
          "named": true
        },
        {
          "type": "include_statement",
          "named": true
        },
        {
          "type": "libname_statement",
          "named": true
        },
        {
          "type": "line_comment",
          "named": true
        },
        {
          "type": "macro_call_statement",
          "named": true
        },
        {
          "type": "macro_definition",
          "named": true
        },
        {
          "type": "macro_do_statement",
          "named": true
        },
        {
          "type": "macro_if_statement",
          "named": true
        },
        {
          "type": "macro_variable_assignment",
          "named": true
        },
        {
          "type": "options_statement",
          "named": true
        },
        {
          "type": "proc_sql_step",
          "named": true
        },
        {
          "type": "proc_step",
          "named": true
        }
      ]
    }
  },
  {
    "type": "run_or_quit_statement",
    "named": true,
    "fields": {}
  },
  {
    "type": "run_statement",
    "named": true,
    "fields": {}
  },
  {
    "type": "set_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "dataset_name",
          "named": true
        },
        {
          "type": "ds_options",
          "named": true
        }
      ]
    }
  },
  {
    "type": "sql_create_statement",
    "named": true,
    "fields": {
      "output": {
        "multiple": false,
        "required": true,
        "types": [
          {
            "type": "dataset_name",
            "named": true
          }
        ]
      }
    },
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "sql_select_statement",
          "named": true
        }
      ]
    }
  },
  {
    "type": "sql_insert_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "dataset_name",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "macro_call",
          "named": true
        },
        {
          "type": "macro_do_statement",
          "named": true
        },
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "numeric_literal",
          "named": true
        },
        {
          "type": "sql_select_statement",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        }
      ]
    }
  },
  {
    "type": "sql_join_clause",
    "named": true,
    "fields": {},
    "children": {
      "multiple": false,
      "required": true,
      "types": [
        {
          "type": "table_reference",
          "named": true
        }
      ]
    }
  },
  {
    "type": "sql_select_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": false,
      "types": [
        {
          "type": "identifier",
          "named": true
        },
        {
          "type": "macro_call",
          "named": true
        },
        {
          "type": "macro_do_statement",
          "named": true
        },
        {
          "type": "macro_variable_ref",
          "named": true
        },
        {
          "type": "numeric_literal",
          "named": true
        },
        {
          "type": "sql_join_clause",
          "named": true
        },
        {
          "type": "string_literal",
          "named": true
        },
        {
          "type": "table_reference",
          "named": true
        }
      ]
    }
  },
  {
    "type": "string_literal",
    "named": true,
    "fields": {}
  },
  {
    "type": "table_reference",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "dataset_name",
          "named": true
        },
        {
          "type": "identifier",
          "named": true
        }
      ]
    }
  },
  {
    "type": "update_statement",
    "named": true,
    "fields": {},
    "children": {
      "multiple": true,
      "required": true,
      "types": [
        {
          "type": "dataset_name",
          "named": true
        },
        {
          "type": "ds_options",
          "named": true
        }
      ]
    }
  },
  {
    "type": "%",
    "named": false
  },
  {
    "type": "(",
    "named": false
  },
  {
    "type": ")",
    "named": false
  },
  {
    "type": ",",
    "named": false
  },
  {
    "type": ".",
    "named": false
  },
  {
    "type": "/",
    "named": false
  },
  {
    "type": ":",
    "named": false
  },
  {
    "type": ";",
    "named": false
  },
  {
    "type": "=",
    "named": false
  },
  {
    "type": "block_comment",
    "named": true
  },
  {
    "type": "fileref_source",
    "named": true
  },
  {
    "type": "identifier",
    "named": true
  },
  {
    "type": "line_comment",
    "named": true
  },
  {
    "type": "macro_variable_ref",
    "named": true
  },
  {
    "type": "numeric_literal",
    "named": true
  },
  {
    "type": "percent_comment",
    "named": true
  }
]