{
  "name": "dune",
  "rules": {
    "configuration": {
      "type": "REPEAT",
      "content": {
        "type": "SYMBOL",
        "name": "_value"
      }
    },
    "_value": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "atom"
        },
        {
          "type": "SYMBOL",
          "name": "quoted_string"
        },
        {
          "type": "SYMBOL",
          "name": "block_string"
        },
        {
          "type": "SYMBOL",
          "name": "raw_string"
        },
        {
          "type": "SYMBOL",
          "name": "list"
        }
      ]
    },
    "atom": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "TOKEN",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "REPEAT1",
                    "content": {
                      "type": "PATTERN",
                      "value": "[^;()\"%\\x00-\\x20\\x7f-\\xff]"
                    }
                  },
                  {
                    "type": "STRING",
                    "value": "%"
                  }
                ]
              }
            },
            {
              "type": "SYMBOL",
              "name": "variable"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "REPEAT1",
                      "content": {
                        "type": "PATTERN",
                        "value": "[^;()\"%\\x00-\\x20\\x7f-\\xff]"
                      }
                    },
                    {
                      "type": "STRING",
                      "value": "%"
                    }
                  ]
                }
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "_immediate_variable"
                },
                "named": true,
                "value": "variable"
              }
            ]
          }
        }
      ]
    },
    "quoted_string": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "\""
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "_immediate_variable"
                },
                "named": true,
                "value": "variable"
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PREC",
                  "value": 1,
                  "content": {
                    "type": "PATTERN",
                    "value": "[^\\\\\"%]+"
                  }
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "%"
                }
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "\""
        }
      ]
    },
    "block_string": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "\"\\|"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "_immediate_variable"
                },
                "named": true,
                "value": "variable"
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PREC",
                  "value": 1,
                  "content": {
                    "type": "PATTERN",
                    "value": "[^\\\\\"%\\n\\r]+"
                  }
                }
              },
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "STRING",
                  "value": "%"
                }
              }
            ]
          }
        }
      ]
    },
    "raw_string": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "\"\\>"
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "PATTERN",
              "value": ".*"
            }
          }
        }
      ]
    },
    "escape_sequence": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "\\n\\s*"
              },
              {
                "type": "STRING",
                "value": "%{"
              },
              {
                "type": "PATTERN",
                "value": "[\\\\'\"ntbr]"
              },
              {
                "type": "PATTERN",
                "value": "[0-9][0-9][0-9]"
              },
              {
                "type": "PATTERN",
                "value": "x[A-Fa-f0-9][A-Fa-f0-9]"
              }
            ]
          }
        ]
      }
    },
    "variable": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "%{"
        },
        {
          "type": "SYMBOL",
          "name": "_variable_trail"
        }
      ]
    },
    "_immediate_variable": {
      "type": "SEQ",
      "members": [
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "%{"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_variable_trail"
        }
      ]
    },
    "_variable_trail": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "variable_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "variable_value"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "variable_name": {
      "type": "TOKEN",
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "PATTERN",
          "value": "[^;()\"\\x00-\\x20\\x7f-\\xff:{}]"
        }
      }
    },
    "variable_value": {
      "type": "TOKEN",
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "PATTERN",
              "value": "[^;()\"\\x00-\\x20\\x7f-\\xff:{}]"
            },
            {
              "type": "STRING",
              "value": ":"
            }
          ]
        }
      }
    },
    "list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_value"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "comment": {
      "type": "PATTERN",
      "value": ";.*"
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "\\s"
    },
    {
      "type": "SYMBOL",
      "name": "comment"
    }
  ],
  "conflicts": [],
  "externals": [],
  "inline": [
    "_value",
    "_variable_trail"
  ],
  "supertypes": []
}

