code: func (p *parser) parseStatement() ast.Node {
  	var result ast.Node
  
  	tok := p.next()
  
  	switch tok.Kind {
  	case lexer.TokenOpen, lexer.TokenOpenUnescaped:
  		// mustache
  		result = p.parseMustache()
  	case lexer.TokenOpenBlock:
  		// block
  		result = p.parseBlock()
  	case lexer.TokenOpenInverse:
  		// block
  		result = p.parseInverse()
  	case lexer.TokenOpenRawBlock:
  		// rawBlock
  		result = p.parseRawBlock()
  	case lexer.TokenOpenPartial:
  		// partial
  		result = p.parsePartial()
  	case lexer.TokenContent:
  		// content
  		result = p.parseContent()
  	case lexer.TokenComment:
  		// COMMENT
  		result = p.parseComment()
  	}
  
  	return result
  }
docs: // statement : mustache | block | rawBlock | partial | content | COMMENT