...
1 package lexer
2
3 import (
4 "strconv"
5
6 "github.com/vektah/gqlparser/v2/ast"
7 )
8
9 const (
10 Invalid Type = iota
11 EOF
12 Bang
13 Dollar
14 Amp
15 ParenL
16 ParenR
17 Spread
18 Colon
19 Equals
20 At
21 BracketL
22 BracketR
23 BraceL
24 BraceR
25 Pipe
26 Name
27 Int
28 Float
29 String
30 BlockString
31 Comment
32 )
33
34 func (t Type) Name() string {
35 switch t {
36 case Invalid:
37 return "Invalid"
38 case EOF:
39 return "EOF"
40 case Bang:
41 return "Bang"
42 case Dollar:
43 return "Dollar"
44 case Amp:
45 return "Amp"
46 case ParenL:
47 return "ParenL"
48 case ParenR:
49 return "ParenR"
50 case Spread:
51 return "Spread"
52 case Colon:
53 return "Colon"
54 case Equals:
55 return "Equals"
56 case At:
57 return "At"
58 case BracketL:
59 return "BracketL"
60 case BracketR:
61 return "BracketR"
62 case BraceL:
63 return "BraceL"
64 case BraceR:
65 return "BraceR"
66 case Pipe:
67 return "Pipe"
68 case Name:
69 return "Name"
70 case Int:
71 return "Int"
72 case Float:
73 return "Float"
74 case String:
75 return "String"
76 case BlockString:
77 return "BlockString"
78 case Comment:
79 return "Comment"
80 }
81 return "Unknown " + strconv.Itoa(int(t))
82 }
83
84 func (t Type) String() string {
85 switch t {
86 case Invalid:
87 return "<Invalid>"
88 case EOF:
89 return "<EOF>"
90 case Bang:
91 return "!"
92 case Dollar:
93 return "$"
94 case Amp:
95 return "&"
96 case ParenL:
97 return "("
98 case ParenR:
99 return ")"
100 case Spread:
101 return "..."
102 case Colon:
103 return ":"
104 case Equals:
105 return "="
106 case At:
107 return "@"
108 case BracketL:
109 return "["
110 case BracketR:
111 return "]"
112 case BraceL:
113 return "{"
114 case BraceR:
115 return "}"
116 case Pipe:
117 return "|"
118 case Name:
119 return "Name"
120 case Int:
121 return "Int"
122 case Float:
123 return "Float"
124 case String:
125 return "String"
126 case BlockString:
127 return "BlockString"
128 case Comment:
129 return "Comment"
130 }
131 return "Unknown " + strconv.Itoa(int(t))
132 }
133
134
135 type Type int
136
137 type Token struct {
138 Kind Type
139 Value string
140 Pos ast.Position
141 }
142
143 func (t Token) String() string {
144 if t.Value != "" {
145 return t.Kind.String() + " " + strconv.Quote(t.Value)
146 }
147 return t.Kind.String()
148 }
149
View as plain text