{
  "name": "uses_current_column",

  "externals": [
    {"type": "SYMBOL", "name": "_indent"},
    {"type": "SYMBOL", "name": "_dedent"},
    {"type": "SYMBOL", "name": "_newline"}
  ],

  "extras": [
    {"type": "PATTERN", "value": "\\s"}
  ],

  "rules": {
    "block": {
      "type": "REPEAT1",
      "content": {"type": "SYMBOL", "name": "_statement"}
    },

    "_statement": {
      "type": "SEQ",
      "members": [
        {"type": "SYMBOL", "name": "_expression"},
        {"type": "SYMBOL", "name": "_newline"}
      ]
    },

    "_expression": {
      "type": "CHOICE",
      "members": [
        {"type": "SYMBOL", "name": "do_expression"},
        {"type": "SYMBOL", "name": "binary_expression"},
        {"type": "SYMBOL", "name": "identifier"}
      ]
    },

    "do_expression": {
      "type": "SEQ",
      "members": [
        {"type": "STRING", "value": "do"},
        {"type": "SYMBOL", "name": "_indent"},
        {"type": "SYMBOL", "name": "block"},
        {"type": "SYMBOL", "name": "_dedent"}
      ]
    },

    "binary_expression": {
      "type": "PREC_LEFT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {"type": "SYMBOL", "name": "_expression"},
          {
            "type": "CHOICE",
            "members": [
              {"type": "STRING", "value": "="},
              {"type": "STRING", "value": "+"},
              {"type": "STRING", "value": "-"}
            ]
          },
          {"type": "SYMBOL", "name": "_expression"}
        ]
      }
    },

    "identifier": {"type": "PATTERN", "value": "\\w+"}
  }
}
