@@ -517,7 +517,7 @@ type Ident struct {
517517func (i * Ident ) Pos () Pos { return i .NamePos }
518518
519519// LambdaExpr node represents lambda.
520- // vimlparsr : LAMBDA .rlist .left
520+ // vimlparser : LAMBDA .rlist .left
521521// { Params -> Expr }
522522type LambdaExpr struct {
523523 Lcurlybrace Pos // position of "{"
@@ -528,14 +528,25 @@ type LambdaExpr struct {
528528func (i * LambdaExpr ) Pos () Pos { return i .Lcurlybrace }
529529
530530// ParenExpr node represents a parenthesized expression.
531- // vimlparsr : PARENEXPR .value
531+ // vimlparser : PARENEXPR .value
532532type ParenExpr struct {
533533 Lparen Pos // position of "("
534534 X Expr // parenthesized expression
535535}
536536
537537func (i * ParenExpr ) Pos () Pos { return i .Lparen }
538538
539+ // HeredocExpr node represents a heredoc expression.
540+ // vimlparser: HEREDOC .rlist .op .body
541+ type HeredocExpr struct {
542+ OpPos Pos // position of "=<<"
543+ Flags []Expr // modifiers [trim]; or nil
544+ EndMarker string // {endmarker}
545+ Body []Expr // body
546+ }
547+
548+ func (i * HeredocExpr ) Pos () Pos { return i .OpPos }
549+
539550// stmtNode() ensures that only ExComamnd and Comment nodes can be assigned to
540551// an Statement.
541552//
@@ -588,3 +599,4 @@ func (*CurlyNameExpr) exprNode() {}
588599func (* Ident ) exprNode () {}
589600func (* LambdaExpr ) exprNode () {}
590601func (* ParenExpr ) exprNode () {}
602+ func (* HeredocExpr ) exprNode () {}
0 commit comments