syntax.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package ast
  2. import (
  3. "github.com/tal-tech/go-zero/tools/goctl/api/parser/g4/gen/api"
  4. )
  5. type SyntaxExpr struct {
  6. Syntax Expr
  7. Assign Expr
  8. Version Expr
  9. DocExpr []Expr
  10. CommentExpr Expr
  11. }
  12. func (v *ApiVisitor) VisitSyntaxLit(ctx *api.SyntaxLitContext) interface{} {
  13. syntax := v.newExprWithToken(ctx.GetSyntaxToken())
  14. assign := v.newExprWithToken(ctx.GetAssign())
  15. version := v.newExprWithToken(ctx.GetVersion())
  16. return &SyntaxExpr{
  17. Syntax: syntax,
  18. Assign: assign,
  19. Version: version,
  20. DocExpr: v.getDoc(ctx),
  21. CommentExpr: v.getComment(ctx),
  22. }
  23. }
  24. func (s *SyntaxExpr) Format() error {
  25. // todo
  26. return nil
  27. }
  28. func (s *SyntaxExpr) Equal(v interface{}) bool {
  29. if v == nil {
  30. return false
  31. }
  32. syntax, ok := v.(*SyntaxExpr)
  33. if !ok {
  34. return false
  35. }
  36. if !EqualDoc(s, syntax) {
  37. return false
  38. }
  39. return s.Syntax.Equal(syntax.Syntax) &&
  40. s.Assign.Equal(syntax.Assign) &&
  41. s.Version.Equal(syntax.Version)
  42. }
  43. func (s *SyntaxExpr) Doc() []Expr {
  44. return s.DocExpr
  45. }
  46. func (s *SyntaxExpr) Comment() Expr {
  47. return s.CommentExpr
  48. }