code: func (t *tree) parseLet(token item) ast.Node {
  	var name = t.expect(itemDollarIdent, "let")
  	if t.peek().typ == itemColon {
  		t.next()
  		var node = &ast.LetValueNode{token.pos, name.val[1:], t.parseExpr(0)}
  		t.expect(itemRightDelimEnd, "let")
  		return node
  	}
  	t.parseAttrs("kind")
  	switch next := t.next(); next.typ {
  	case itemRightDelim:
  		var node = &ast.LetContentNode{token.pos, name.val[1:], t.itemList(itemLetEnd)}
  		t.expect(itemRightDelim, "let")
  		return node
  	default:
  		t.unexpected(next, "{let}")
  	}
  	panic("unreachable")
  }
docs: // "let" has just been read.