function declarationOpen(code) {
    if (code === codes.dash) {
      effects.consume(code)
      return commentOpenInside
    }

    if (code === codes.leftSquareBracket) {
      effects.consume(code)
      index = 0
      return cdataOpenInside
    }

    if (asciiAlpha(code)) {
      effects.consume(code)
      return declaration
    }

    return nok(code)
  }
After `<!`, at declaration, comment, or CDATA.

```markdown
> | a <!doctype> c
        ^
> | a <!--b--> c
        ^
> | a <![CDATA[>&<]]> c
        ^
```

@type {State}