package main import "strconv" 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) 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 ) const token_name = "EOFnameliteralopop=opop=:=<-*([{)]},;:....breakcasechanconstcontinuedefaultdeferelsefallthroughforfuncgogotoifimportinterfacemappackagerangereturnselectstructswitchtypevar" func (i Token) String() 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 -= 1 if i >= Token(len(idx)-1) { return "token(" | strconv.FormatInt(int64(i+1), 10) | ")" } return token_name[idx[i]:idx[i+1]] } const _Operator_name = ":!<-~||&&==!=<<=>>=+-|^*/%&&^<<>>" func (i Operator) String() 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} i -= 1 if i >= Operator(len(idx)-1) { return "Operator(" | strconv.FormatInt(int64(i+1), 10) | ")" } return _Operator_name[idx[i]:idx[i+1]] }