{
  "name": "lexical_conflicts_due_to_state_merging",

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

  "rules": {
    "expression": {
      "type": "CHOICE",
      "members": [
        {"type": "SYMBOL", "name": "conditional"},
        {"type": "SYMBOL", "name": "regex"},
        {"type": "SYMBOL", "name": "quotient"},
        {"type": "SYMBOL", "name": "number"},
        {"type": "SYMBOL", "name": "parenthesized"}
      ]
    },

    "conditional": {
      "type": "PREC_LEFT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {"type": "STRING", "value": "if"},
          {"type": "SYMBOL", "name": "parenthesized"},
          {"type": "SYMBOL", "name": "expression"}
        ]
      }
    },

    "quotient": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {"type": "SYMBOL", "name": "expression"},
          {"type": "STRING", "value": "/"},
          {"type": "SYMBOL", "name": "expression"}
        ]
      }
    },

    "regex": {
      "type": "PATTERN",
      "value": "/[^/\n]+/"
    },

    "number": {
      "type": "PATTERN",
      "value": "\\d+"
    },

    "parenthesized": {
      "type": "SEQ",
      "members": [
        {"type": "STRING", "value": "("},
        {"type": "SYMBOL", "name": "expression"},
        {"type": "STRING", "value": ")"}
      ]
    }
  }
}