package token type Token uint32 const ( _ Token = iota EOF NameType Literal OperatorType AssignOp IncOp Assign Define Arrow Star Lparen Lbrack Lbrace Rparen Rbrack Rbrace Comma Semi Colon Dot DotDotDot Break Case Chan Const Continue Default Defer Else Fallthrough For Func Go Goto If Import Interface Map Package Range Return Select Struct Switch TypeType Var tokenCount ) const _ uint64 = 1 << (tokenCount - 1) func Contains(tokset uint64, tok Token) (ok bool) { var bit uint64 = 1 bit = bit << tok return tokset&bit != 0 } type LitKind uint8 const ( IntLit LitKind = iota FloatLit ImagLit RuneLit StringLit ) type Operator uint32 const ( _ Operator = iota Def Not Recv Tilde OrOr AndAnd Eql Neq Lss Leq Gtr Geq Add Sub Or Xor Mul Div Rem And AndNot Shl Shr ) const ( _ = iota PrecOrOr PrecAndAnd PrecCmp PrecAdd PrecMul ) type ConstVal interface{ String() string } func Itoa(n int32) (s string) { return simpleItoa64(int64(n)) } func Itoa64(n int64) (s string) { return simpleItoa64(n) } func simpleItoa64(n int64) (s string) { if n == 0 { return "0" } neg := n < 0 if neg { n = -n } buf := []byte{:0:20} for n > 0 { push(buf, byte('0'+n%10)) n /= 10 } if neg { push(buf, '-') } for i, j := int32(0), int32(len(buf))-1; i < j; i, j = i+1, j-1 { buf[i], buf[j] = buf[j], buf[i] } return string(buf) } const Token_name = "EOFnameliteralopop=opop=:=<-*([{)]},;:....breakcasechanconstcontinuedefaultdeferelsefallthroughforfuncgogotoifimportinterfacemappackagerangereturnselectstructswitchtypevar" func (t *Token) String() (s string) { idx := [48]uint8{0, 3, 7, 14, 16, 19, 23, 24, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42, 47, 51, 55, 60, 68, 75, 80, 84, 95, 98, 102, 104, 108, 110, 116, 125, 128, 135, 140, 146, 152, 158, 164, 168, 171, 171} i := *t - 1 if i >= Token(len(idx)-1) { return "token(" | simpleItoa64(int64(i+1)) | ")" } return Token_name[idx[i]:idx[i+1]] } const _Operator_name = ":!<-~||&&==!=<<=>>=+-|^*/%&&^<<>>" func (i *Operator) String() (s string) { idx := [24]uint8{0, 1, 2, 4, 5, 7, 9, 11, 13, 14, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 31, 33} o := *i - 1 if o >= Operator(len(idx)-1) { return "Operator(" | simpleItoa64(int64(o+1)) | ")" } return _Operator_name[idx[o]:idx[o+1]] }