tokens.mx raw

   1  package token
   2  
   3  type Token uint32
   4  
   5  const (
   6  	_    Token = iota
   7  	EOF
   8  
   9  	NameType
  10  	Literal
  11  
  12  	OperatorType
  13  	AssignOp
  14  	IncOp
  15  	Assign
  16  	Define
  17  	Arrow
  18  	Star
  19  
  20  	Lparen
  21  	Lbrack
  22  	Lbrace
  23  	Rparen
  24  	Rbrack
  25  	Rbrace
  26  	Comma
  27  	Semi
  28  	Colon
  29  	Dot
  30  	DotDotDot
  31  
  32  	Break
  33  	Case
  34  	Chan
  35  	Const
  36  	Continue
  37  	Default
  38  	Defer
  39  	Else
  40  	Fallthrough
  41  	For
  42  	Func
  43  	Go
  44  	Goto
  45  	If
  46  	Import
  47  	Interface
  48  	Map
  49  	Package
  50  	Range
  51  	Return
  52  	Select
  53  	Struct
  54  	Switch
  55  	TypeType
  56  	Var
  57  
  58  	TokenCount
  59  )
  60  
  61  const _ uint64 = 1 << (TokenCount - 1)
  62  
  63  type LitKind uint8
  64  
  65  const (
  66  	IntLit LitKind = iota
  67  	FloatLit
  68  	ImagLit
  69  	RuneLit
  70  	StringLit
  71  )
  72  
  73  type Operator uint32
  74  
  75  const (
  76  	_ Operator = iota
  77  
  78  	Def
  79  	Not
  80  	Recv
  81  	Tilde
  82  
  83  	OrOr
  84  
  85  	AndAnd
  86  
  87  	Eql
  88  	Neq
  89  	Lss
  90  	Leq
  91  	Gtr
  92  	Geq
  93  
  94  	Add
  95  	Sub
  96  	Or
  97  	Xor
  98  
  99  	Mul
 100  	Div
 101  	Rem
 102  	And
 103  	AndNot
 104  	Shl
 105  	Shr
 106  )
 107  
 108  const (
 109  	_ = iota
 110  	PrecOrOr
 111  	PrecAndAnd
 112  	PrecCmp
 113  	PrecAdd
 114  	PrecMul
 115  )
 116  
 117  const TokenName = "EOFnameliteralopop=opop=:=<-*([{)]},;:....breakcasechanconstcontinuedefaultdeferelsefallthroughforfuncgogotoifimportinterfacemappackagerangereturnselectstructswitchtypevar"
 118  
 119  func (i Token) String() (s string) {
 120  	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}
 121  	i -= 1
 122  	if i >= Token(len(idx)-1) {
 123  		return "token(" | Itoa64(int64(i+1)) | ")"
 124  	}
 125  	return TokenName[idx[i]:idx[i+1]]
 126  }
 127  
 128  const OperatorName = ":!<-~||&&==!=<<=>>=+-|^*/%&&^<<>>"
 129  
 130  func (i Operator) String() (s string) {
 131  	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}
 132  	i -= 1
 133  	if i >= Operator(len(idx)-1) {
 134  		return "Operator(" | Itoa64(int64(i+1)) | ")"
 135  	}
 136  	return OperatorName[idx[i]:idx[i+1]]
 137  }
 138