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