{
  "name": "phpdoc",
  "word": "name",
  "rules": {
    "document": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_begin"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "description"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "tag"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_end"
        }
      ]
    },
    "_begin": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "/**"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "STRING",
              "value": "*"
            }
          }
        ]
      }
    },
    "description": {
      "type": "REPEAT1",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "text"
          },
          {
            "type": "SYMBOL",
            "name": "inline_tag"
          }
        ]
      }
    },
    "_description_after_type": {
      "type": "ALIAS",
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_text_after_type"
              },
              "named": true,
              "value": "text"
            },
            {
              "type": "SYMBOL",
              "name": "inline_tag"
            }
          ]
        }
      },
      "named": true,
      "value": "description"
    },
    "_description_not_version": {
      "type": "ALIAS",
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_text_not_version"
              },
              "named": true,
              "value": "text"
            },
            {
              "type": "SYMBOL",
              "name": "inline_tag"
            }
          ]
        }
      },
      "named": true,
      "value": "description"
    },
    "_description_in_inline_tag": {
      "type": "ALIAS",
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_text_in_inline_tag"
          },
          "named": true,
          "value": "text"
        }
      },
      "named": true,
      "value": "description"
    },
    "_description_in_inline_tag_with_nesting": {
      "type": "ALIAS",
      "content": {
        "type": "REPEAT1",
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_text_in_inline_tag"
              },
              "named": true,
              "value": "text"
            },
            {
              "type": "SYMBOL",
              "name": "inline_tag"
            }
          ]
        }
      },
      "named": true,
      "value": "description"
    },
    "tag": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_tag_without_description"
        },
        {
          "type": "SYMBOL",
          "name": "_tag_with_optional_description"
        },
        {
          "type": "SYMBOL",
          "name": "_tag_with_required_description"
        },
        {
          "type": "SYMBOL",
          "name": "_author_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_deprecated_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_global_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_link_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_method_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_param_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_property_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_return_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_see_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_since_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_throws_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_var_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_version_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_phpunit_tag"
        },
        {
          "type": "SYMBOL",
          "name": "_tag_with_incomplete_implementation"
        }
      ]
    },
    "inline_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": "@inheritdoc"
              },
              "named": true,
              "value": "tag_name"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": "@inheritDoc"
              },
              "named": true,
              "value": "tag_name"
            },
            {
              "type": "SYMBOL",
              "name": "_inline_internal_tag"
            },
            {
              "type": "SYMBOL",
              "name": "_inline_link_tag"
            },
            {
              "type": "SYMBOL",
              "name": "_inline_see_tag"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_tag_without_description": {
      "type": "ALIAS",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "@api"
          },
          {
            "type": "STRING",
            "value": "@filesource"
          },
          {
            "type": "STRING",
            "value": "@inheritdoc"
          },
          {
            "type": "STRING",
            "value": "@inheritDoc"
          }
        ]
      },
      "named": true,
      "value": "tag_name"
    },
    "_tag_with_optional_description": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "@ignore"
              },
              {
                "type": "STRING",
                "value": "@internal"
              }
            ]
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "description"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_tag_with_required_description": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "@category"
              },
              {
                "type": "STRING",
                "value": "@copyright"
              },
              {
                "type": "STRING",
                "value": "@todo"
              }
            ]
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "SYMBOL",
          "name": "description"
        }
      ]
    },
    "_tag_with_incomplete_implementation": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "@example"
              },
              {
                "type": "STRING",
                "value": "@license"
              },
              {
                "type": "STRING",
                "value": "@package"
              },
              {
                "type": "STRING",
                "value": "@source"
              },
              {
                "type": "STRING",
                "value": "@subpackage"
              },
              {
                "type": "STRING",
                "value": "@uses"
              }
            ]
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "description"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_author_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@author"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "SYMBOL",
          "name": "author_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "<"
                },
                {
                  "type": "SYMBOL",
                  "name": "email_address"
                },
                {
                  "type": "STRING",
                  "value": ">"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_global_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@global"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "SYMBOL",
          "name": "variable_name"
        }
      ]
    },
    "_inline_internal_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@internal"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_description_in_inline_tag_with_nesting"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_link_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@link"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "SYMBOL",
          "name": "uri"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "description"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_inline_link_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@link"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "SYMBOL",
          "name": "uri"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_description_in_inline_tag"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_method_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@method"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "static"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "SYMBOL",
          "name": "name"
        },
        {
          "type": "SYMBOL",
          "name": "parameters"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "description"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_param_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@param"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "variable_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "description"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_property_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "@property"
              },
              {
                "type": "STRING",
                "value": "@property-read"
              },
              {
                "type": "STRING",
                "value": "@property-write"
              }
            ]
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "SYMBOL",
          "name": "variable_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "description"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_return_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@return"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "description"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_see_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@see"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "uri"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "qualified_name"
              },
              "named": true,
              "value": "fqsen"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "qualified_name"
                  },
                  {
                    "type": "STRING",
                    "value": "()"
                  }
                ]
              },
              "named": true,
              "value": "fqsen"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "description"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_inline_see_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@see"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "uri"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "qualified_name"
              },
              "named": true,
              "value": "fqsen"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "qualified_name"
                  },
                  {
                    "type": "STRING",
                    "value": "()"
                  }
                ]
              },
              "named": true,
              "value": "fqsen"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_description_in_inline_tag"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_throws_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@throws"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "description"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_var_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@var"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "_description_after_type"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "variable_name"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "variable_name"
                },
                {
                  "type": "SYMBOL",
                  "name": "description"
                }
              ]
            }
          ]
        }
      ]
    },
    "_deprecated_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@deprecated"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "version"
                },
                {
                  "type": "SYMBOL",
                  "name": "_description_not_version"
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "version"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "description"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_since_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@since"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "version"
            },
            {
              "type": "SYMBOL",
              "name": "_description_not_version"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "version"
                },
                {
                  "type": "SYMBOL",
                  "name": "description"
                }
              ]
            }
          ]
        }
      ]
    },
    "_version_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "STRING",
            "value": "@version"
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "version"
            },
            {
              "type": "SYMBOL",
              "name": "_description_not_version"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "version"
                },
                {
                  "type": "SYMBOL",
                  "name": "description"
                }
              ]
            }
          ]
        }
      ]
    },
    "_phpunit_tag": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "@after"
              },
              {
                "type": "STRING",
                "value": "@afterClass"
              },
              {
                "type": "STRING",
                "value": "@annotation"
              },
              {
                "type": "STRING",
                "value": "@backupGlobals"
              },
              {
                "type": "STRING",
                "value": "@backupStaticAttributes"
              },
              {
                "type": "STRING",
                "value": "@before"
              },
              {
                "type": "STRING",
                "value": "@beforeClass"
              },
              {
                "type": "STRING",
                "value": "@codeCoverageIgnore"
              },
              {
                "type": "STRING",
                "value": "@codeCoverageIgnore*"
              },
              {
                "type": "STRING",
                "value": "@codeCoverageIgnoreEnd"
              },
              {
                "type": "STRING",
                "value": "@codeCoverageIgnoreStart"
              },
              {
                "type": "STRING",
                "value": "@covers"
              },
              {
                "type": "STRING",
                "value": "@coversDefaultClass"
              },
              {
                "type": "STRING",
                "value": "@coversDefaultClass to shorten annotations"
              },
              {
                "type": "STRING",
                "value": "@coversNothing"
              },
              {
                "type": "STRING",
                "value": "@dataProvider"
              },
              {
                "type": "STRING",
                "value": "@depends"
              },
              {
                "type": "STRING",
                "value": "@depends annotation to express dependencies"
              },
              {
                "type": "STRING",
                "value": "@doesNotPerformAssertions"
              },
              {
                "type": "STRING",
                "value": "@group"
              },
              {
                "type": "STRING",
                "value": "@large"
              },
              {
                "type": "STRING",
                "value": "@medium"
              },
              {
                "type": "STRING",
                "value": "@preserveGlobalState"
              },
              {
                "type": "STRING",
                "value": "@requires"
              },
              {
                "type": "STRING",
                "value": "@requires usages"
              },
              {
                "type": "STRING",
                "value": "@runInSeparateProcess"
              },
              {
                "type": "STRING",
                "value": "@runTestsInSeparateProcesses"
              },
              {
                "type": "STRING",
                "value": "@small"
              },
              {
                "type": "STRING",
                "value": "@test"
              },
              {
                "type": "STRING",
                "value": "@testWith"
              },
              {
                "type": "STRING",
                "value": "@testdox"
              },
              {
                "type": "STRING",
                "value": "@ticket"
              }
            ]
          },
          "named": true,
          "value": "tag_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "description"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_type": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "union_type"
      },
      "named": true,
      "value": "type_list"
    },
    "_types": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_regular_types"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_phpdoc_array_types"
          },
          "named": true,
          "value": "array_type"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_psalm_generic_array_types"
          },
          "named": true,
          "value": "array_type"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_psalm_list_array_types"
          },
          "named": true,
          "value": "array_type"
        }
      ]
    },
    "_regular_types": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "optional_type"
        },
        {
          "type": "SYMBOL",
          "name": "named_type"
        },
        {
          "type": "SYMBOL",
          "name": "primitive_type"
        }
      ]
    },
    "_phpdoc_array_types": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_regular_types"
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "STRING",
            "value": "[]"
          }
        }
      ]
    },
    "_psalm_generic_array_types": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "array",
          "content": {
            "type": "SYMBOL",
            "name": "_regular_types"
          }
        },
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "FIELD",
          "name": "key",
          "content": {
            "type": "SYMBOL",
            "name": "_regular_types"
          }
        },
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_regular_types"
          }
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "_psalm_list_array_types": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "array",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "STRING",
                  "value": "list"
                },
                "named": true,
                "value": "primitive_type"
              },
              {
                "type": "SYMBOL",
                "name": "_regular_types"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_regular_types"
          }
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "name": {
      "type": "PATTERN",
      "value": "[_a-zA-Z\\u00A1-\\u00ff][_a-zA-Z\\u00A1-\\u00ff\\d]*"
    },
    "named_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "name"
        },
        {
          "type": "SYMBOL",
          "name": "qualified_name"
        }
      ]
    },
    "namespace_name": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "name"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "\\"
              },
              {
                "type": "SYMBOL",
                "name": "name"
              }
            ]
          }
        }
      ]
    },
    "namespace_name_as_prefix": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "\\"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "\\"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "namespace_name"
            },
            {
              "type": "STRING",
              "value": "\\"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[nN][aA][mM][eE][sS][pP][aA][cC][eE]"
              },
              "named": false,
              "value": "namespace"
            },
            {
              "type": "STRING",
              "value": "\\"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "PATTERN",
                "value": "[nN][aA][mM][eE][sS][pP][aA][cC][eE]"
              },
              "named": false,
              "value": "namespace"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "\\"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "namespace_name"
            },
            {
              "type": "STRING",
              "value": "\\"
            }
          ]
        }
      ]
    },
    "optional_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "?"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "named_type"
            },
            {
              "type": "SYMBOL",
              "name": "primitive_type"
            }
          ]
        }
      ]
    },
    "primitive_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "array"
        },
        {
          "type": "STRING",
          "value": "callable"
        },
        {
          "type": "STRING",
          "value": "iterable"
        },
        {
          "type": "STRING",
          "value": "bool"
        },
        {
          "type": "STRING",
          "value": "float"
        },
        {
          "type": "STRING",
          "value": "int"
        },
        {
          "type": "STRING",
          "value": "string"
        },
        {
          "type": "STRING",
          "value": "void"
        },
        {
          "type": "STRING",
          "value": "mixed"
        },
        {
          "type": "STRING",
          "value": "static"
        },
        {
          "type": "STRING",
          "value": "false"
        },
        {
          "type": "STRING",
          "value": "null"
        }
      ]
    },
    "qualified_name": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "namespace_name_as_prefix"
        },
        {
          "type": "SYMBOL",
          "name": "name"
        }
      ]
    },
    "union_type": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_types"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "|"
                },
                {
                  "type": "SYMBOL",
                  "name": "_types"
                }
              ]
            }
          }
        ]
      }
    },
    "variable_name": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "$"
        },
        {
          "type": "SYMBOL",
          "name": "name"
        }
      ]
    },
    "author_name": {
      "type": "PATTERN",
      "value": "\\S+( [^\\s<]+)*"
    },
    "email_address": {
      "type": "PATTERN",
      "value": "\\S+@\\S+\\.[^\\s>]+"
    },
    "version": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PATTERN",
          "value": "\\d+\\.[^\\s]+"
        },
        {
          "type": "SYMBOL",
          "name": "_version_vector"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "PATTERN",
              "value": "[a-zA-Z-_]+: *"
            },
            {
              "type": "SYMBOL",
              "name": "_version_vector"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "@package_version@"
        }
      ]
    },
    "_version_vector": {
      "type": "PATTERN",
      "value": "\\$[a-zA-Z_][a-zA-Z0-9-_]*\\$"
    },
    "uri": {
      "type": "PATTERN",
      "value": "\\w+:(\\/?\\/?)[^\\s}]+"
    },
    "parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "parameter"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "parameter"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "variable_name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "default_value"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "default_value": {
      "type": "PATTERN",
      "value": "[^, ][^,)]*"
    },
    "static": {
      "type": "STRING",
      "value": "static"
    },
    "_end": {
      "type": "STRING",
      "value": "*/"
    }
  },
  "extras": [
    {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "\\n"
              },
              {
                "type": "PATTERN",
                "value": "[ \\t]*"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "*"
                    },
                    {
                      "type": "PATTERN",
                      "value": "[ \\t]*"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "PATTERN",
            "value": "\\s"
          }
        ]
      }
    }
  ],
  "conflicts": [
    [
      "primitive_type",
      "static"
    ],
    [
      "namespace_name"
    ],
    [
      "namespace_name_as_prefix"
    ]
  ],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "text"
    },
    {
      "type": "SYMBOL",
      "name": "_text_after_type"
    },
    {
      "type": "SYMBOL",
      "name": "_text_in_inline_tag"
    },
    {
      "type": "SYMBOL",
      "name": "_text_not_version"
    }
  ],
  "inline": [],
  "supertypes": []
}

