1
0

syntaxstatement.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package ast
  2. import "github.com/zeromicro/go-zero/tools/goctl/pkg/parser/api/token"
  3. // SyntaxStmt represents a syntax statement.
  4. type SyntaxStmt struct {
  5. // Syntax is the syntax token.
  6. Syntax *TokenNode
  7. // Assign is the assign token.
  8. Assign *TokenNode
  9. // Value is the syntax value.
  10. Value *TokenNode
  11. }
  12. func (s *SyntaxStmt) HasHeadCommentGroup() bool {
  13. return s.Syntax.HasHeadCommentGroup()
  14. }
  15. func (s *SyntaxStmt) HasLeadingCommentGroup() bool {
  16. return s.Value.HasLeadingCommentGroup()
  17. }
  18. func (s *SyntaxStmt) CommentGroup() (head, leading CommentGroup) {
  19. return s.Syntax.HeadCommentGroup, s.Syntax.LeadingCommentGroup
  20. }
  21. func (s *SyntaxStmt) Format(prefix ...string) string {
  22. w := NewBufferWriter()
  23. syntaxNode := transferTokenNode(s.Syntax,
  24. withTokenNodePrefix(prefix...), ignoreLeadingComment())
  25. assignNode := transferTokenNode(s.Assign, ignoreLeadingComment())
  26. w.Write(withNode(syntaxNode, assignNode, s.Value), withPrefix(prefix...), expectSameLine())
  27. return w.String()
  28. }
  29. func (s *SyntaxStmt) End() token.Position {
  30. return s.Value.End()
  31. }
  32. func (s *SyntaxStmt) Pos() token.Position {
  33. return s.Syntax.Pos()
  34. }
  35. func (s *SyntaxStmt) stmtNode() {}