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

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

    // ASCII alphabetical.
    if (asciiAlpha(code)) {
      effects.consume(code)
      marker = constants.htmlDeclaration
      // // Do not form containers.
      // tokenizer.concrete = true
      return self.interrupt ? ok : continuationDeclarationInside
    }

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

```markdown
> | <!doctype>
      ^
> | <!--xxx-->
      ^
> | <![CDATA[>&<]]>
      ^
```

@type {State}