github.com/bir3/gocompiler@v0.9.2202/src/cmd/compile/internal/syntax/tokens.go (about) 1 // Copyright 2016 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package syntax 6 7 type Token uint 8 9 type token = Token 10 11 //go:generate stringer -type token -linecomment tokens.go 12 13 const ( 14 _ token = iota 15 _EOF // EOF 16 17 // names and literals 18 _Name // name 19 _Literal // literal 20 21 // operators and operations 22 // _Operator is excluding '*' (_Star) 23 _Operator // op 24 _AssignOp // op= 25 _IncOp // opop 26 _Assign // = 27 _Define // := 28 _Arrow // <- 29 _Star // * 30 31 // delimiters 32 _Lparen // ( 33 _Lbrack // [ 34 _Lbrace // { 35 _Rparen // ) 36 _Rbrack // ] 37 _Rbrace // } 38 _Comma // , 39 _Semi // ; 40 _Colon // : 41 _Dot // . 42 _DotDotDot // ... 43 44 // keywords 45 _Break // break 46 _Case // case 47 _Chan // chan 48 _Const // const 49 _Continue // continue 50 _Default // default 51 _Defer // defer 52 _Else // else 53 _Fallthrough // fallthrough 54 _For // for 55 _Func // func 56 _Go // go 57 _Goto // goto 58 _If // if 59 _Import // import 60 _Interface // interface 61 _Map // map 62 _Package // package 63 _Range // range 64 _Return // return 65 _Select // select 66 _Struct // struct 67 _Switch // switch 68 _Type // type 69 _Var // var 70 71 // empty line comment to exclude it from .String 72 tokenCount // 73 ) 74 75 const ( 76 // for BranchStmt 77 Break = _Break 78 Continue = _Continue 79 Fallthrough = _Fallthrough 80 Goto = _Goto 81 82 // for CallStmt 83 Go = _Go 84 Defer = _Defer 85 ) 86 87 // Make sure we have at most 64 tokens so we can use them in a set. 88 const _ uint64 = 1 << (tokenCount - 1) 89 90 // contains reports whether tok is in tokset. 91 func contains(tokset uint64, tok token) bool { 92 return tokset&(1<<tok) != 0 93 } 94 95 type LitKind uint8 96 97 // TODO(gri) With the 'i' (imaginary) suffix now permitted on integer 98 // and floating-point numbers, having a single ImagLit does 99 // not represent the literal kind well anymore. Remove it? 100 const ( 101 IntLit LitKind = iota 102 FloatLit 103 ImagLit 104 RuneLit 105 StringLit 106 ) 107 108 type Operator uint 109 110 //go:generate stringer -type Operator -linecomment tokens.go 111 112 const ( 113 _ Operator = iota 114 115 // Def is the : in := 116 Def // : 117 Not // ! 118 Recv // <- 119 Tilde // ~ 120 121 // precOrOr 122 OrOr // || 123 124 // precAndAnd 125 AndAnd // && 126 127 // precCmp 128 Eql // == 129 Neq // != 130 Lss // < 131 Leq // <= 132 Gtr // > 133 Geq // >= 134 135 // precAdd 136 Add // + 137 Sub // - 138 Or // | 139 Xor // ^ 140 141 // precMul 142 Mul // * 143 Div // / 144 Rem // % 145 And // & 146 AndNot // &^ 147 Shl // << 148 Shr // >> 149 ) 150 151 // Operator precedences 152 const ( 153 _ = iota 154 precOrOr 155 precAndAnd 156 precCmp 157 precAdd 158 precMul 159 )