github.com/cilki/sh@v2.6.4+incompatible/syntax/tokens.go (about) 1 // Copyright (c) 2016, Daniel Martà <mvdan@mvdan.cc> 2 // See LICENSE for licensing information 3 4 package syntax 5 6 //go:generate stringer -type token -linecomment -trimprefix _ 7 8 type token uint32 9 10 // The list of all possible tokens. 11 const ( 12 illegalTok token = iota 13 14 _EOF 15 _Newl 16 _Lit 17 _LitWord 18 _LitRedir 19 20 sglQuote // ' 21 dblQuote // " 22 bckQuote // ` 23 24 and // & 25 andAnd // && 26 orOr // || 27 or // | 28 orAnd // |& 29 30 dollar // $ 31 dollSglQuote // $' 32 dollDblQuote // $" 33 dollBrace // ${ 34 dollBrack // $[ 35 dollParen // $( 36 dollDblParen // $(( 37 leftBrack // [ 38 dblLeftBrack // [[ 39 leftParen // ( 40 dblLeftParen // (( 41 42 rightBrace // } 43 rightBrack // ] 44 rightParen // ) 45 dblRightParen // )) 46 semicolon // ; 47 48 dblSemicolon // ;; 49 semiAnd // ;& 50 dblSemiAnd // ;;& 51 semiOr // ;| 52 53 exclMark // ! 54 addAdd // ++ 55 subSub // -- 56 star // * 57 power // ** 58 equal // == 59 nequal // != 60 lequal // <= 61 gequal // >= 62 63 addAssgn // += 64 subAssgn // -= 65 mulAssgn // *= 66 quoAssgn // /= 67 remAssgn // %= 68 andAssgn // &= 69 orAssgn // |= 70 xorAssgn // ^= 71 shlAssgn // <<= 72 shrAssgn // >>= 73 74 rdrOut // > 75 appOut // >> 76 rdrIn // < 77 rdrInOut // <> 78 dplIn // <& 79 dplOut // >& 80 clbOut // >| 81 hdoc // << 82 dashHdoc // <<- 83 wordHdoc // <<< 84 rdrAll // &> 85 appAll // &>> 86 87 cmdIn // <( 88 cmdOut // >( 89 90 plus // + 91 colPlus // :+ 92 minus // - 93 colMinus // :- 94 quest // ? 95 colQuest // :? 96 assgn // = 97 colAssgn // := 98 perc // % 99 dblPerc // %% 100 hash // # 101 dblHash // ## 102 caret // ^ 103 dblCaret // ^^ 104 comma // , 105 dblComma // ,, 106 at // @ 107 slash // / 108 dblSlash // // 109 colon // : 110 111 tsExists // -e 112 tsRegFile // -f 113 tsDirect // -d 114 tsCharSp // -c 115 tsBlckSp // -b 116 tsNmPipe // -p 117 tsSocket // -S 118 tsSmbLink // -L 119 tsSticky // -k 120 tsGIDSet // -g 121 tsUIDSet // -u 122 tsGrpOwn // -G 123 tsUsrOwn // -O 124 tsModif // -N 125 tsRead // -r 126 tsWrite // -w 127 tsExec // -x 128 tsNoEmpty // -s 129 tsFdTerm // -t 130 tsEmpStr // -z 131 tsNempStr // -n 132 tsOptSet // -o 133 tsVarSet // -v 134 tsRefVar // -R 135 136 tsReMatch // =~ 137 tsNewer // -nt 138 tsOlder // -ot 139 tsDevIno // -ef 140 tsEql // -eq 141 tsNeq // -ne 142 tsLeq // -le 143 tsGeq // -ge 144 tsLss // -lt 145 tsGtr // -gt 146 147 globQuest // ?( 148 globStar // *( 149 globPlus // +( 150 globAt // @( 151 globExcl // !( 152 ) 153 154 type RedirOperator token 155 156 const ( 157 RdrOut = RedirOperator(rdrOut) + iota 158 AppOut 159 RdrIn 160 RdrInOut 161 DplIn 162 DplOut 163 ClbOut 164 Hdoc 165 DashHdoc 166 WordHdoc 167 RdrAll 168 AppAll 169 ) 170 171 type ProcOperator token 172 173 const ( 174 CmdIn = ProcOperator(cmdIn) + iota 175 CmdOut 176 ) 177 178 type GlobOperator token 179 180 const ( 181 GlobQuest = GlobOperator(globQuest) + iota 182 GlobStar 183 GlobPlus 184 GlobAt 185 GlobExcl 186 ) 187 188 type BinCmdOperator token 189 190 const ( 191 AndStmt = BinCmdOperator(andAnd) + iota 192 OrStmt 193 Pipe 194 PipeAll 195 ) 196 197 type CaseOperator token 198 199 const ( 200 Break = CaseOperator(dblSemicolon) + iota 201 Fallthrough 202 Resume 203 ResumeKorn 204 ) 205 206 type ParNamesOperator token 207 208 const ( 209 NamesPrefix = ParNamesOperator(star) 210 NamesPrefixWords = ParNamesOperator(at) 211 ) 212 213 type ParExpOperator token 214 215 const ( 216 SubstPlus = ParExpOperator(plus) + iota 217 SubstColPlus 218 SubstMinus 219 SubstColMinus 220 SubstQuest 221 SubstColQuest 222 SubstAssgn 223 SubstColAssgn 224 RemSmallSuffix 225 RemLargeSuffix 226 RemSmallPrefix 227 RemLargePrefix 228 UpperFirst 229 UpperAll 230 LowerFirst 231 LowerAll 232 OtherParamOps 233 ) 234 235 type UnAritOperator token 236 237 const ( 238 Not = UnAritOperator(exclMark) + iota 239 Inc 240 Dec 241 Plus = UnAritOperator(plus) 242 Minus = UnAritOperator(minus) 243 ) 244 245 type BinAritOperator token 246 247 const ( 248 Add = BinAritOperator(plus) 249 Sub = BinAritOperator(minus) 250 Mul = BinAritOperator(star) 251 Quo = BinAritOperator(slash) 252 Rem = BinAritOperator(perc) 253 Pow = BinAritOperator(power) 254 Eql = BinAritOperator(equal) 255 Gtr = BinAritOperator(rdrOut) 256 Lss = BinAritOperator(rdrIn) 257 Neq = BinAritOperator(nequal) 258 Leq = BinAritOperator(lequal) 259 Geq = BinAritOperator(gequal) 260 And = BinAritOperator(and) 261 Or = BinAritOperator(or) 262 Xor = BinAritOperator(caret) 263 Shr = BinAritOperator(appOut) 264 Shl = BinAritOperator(hdoc) 265 266 AndArit = BinAritOperator(andAnd) 267 OrArit = BinAritOperator(orOr) 268 Comma = BinAritOperator(comma) 269 Quest = BinAritOperator(quest) 270 Colon = BinAritOperator(colon) 271 272 Assgn = BinAritOperator(assgn) 273 AddAssgn = BinAritOperator(addAssgn) 274 SubAssgn = BinAritOperator(subAssgn) 275 MulAssgn = BinAritOperator(mulAssgn) 276 QuoAssgn = BinAritOperator(quoAssgn) 277 RemAssgn = BinAritOperator(remAssgn) 278 AndAssgn = BinAritOperator(andAssgn) 279 OrAssgn = BinAritOperator(orAssgn) 280 XorAssgn = BinAritOperator(xorAssgn) 281 ShlAssgn = BinAritOperator(shlAssgn) 282 ShrAssgn = BinAritOperator(shrAssgn) 283 ) 284 285 type UnTestOperator token 286 287 const ( 288 TsExists = UnTestOperator(tsExists) + iota 289 TsRegFile 290 TsDirect 291 TsCharSp 292 TsBlckSp 293 TsNmPipe 294 TsSocket 295 TsSmbLink 296 TsSticky 297 TsGIDSet 298 TsUIDSet 299 TsGrpOwn 300 TsUsrOwn 301 TsModif 302 TsRead 303 TsWrite 304 TsExec 305 TsNoEmpty 306 TsFdTerm 307 TsEmpStr 308 TsNempStr 309 TsOptSet 310 TsVarSet 311 TsRefVar 312 TsNot = UnTestOperator(exclMark) 313 ) 314 315 type BinTestOperator token 316 317 const ( 318 TsReMatch = BinTestOperator(tsReMatch) + iota 319 TsNewer 320 TsOlder 321 TsDevIno 322 TsEql 323 TsNeq 324 TsLeq 325 TsGeq 326 TsLss 327 TsGtr 328 AndTest = BinTestOperator(andAnd) 329 OrTest = BinTestOperator(orOr) 330 TsMatch = BinTestOperator(equal) 331 TsNoMatch = BinTestOperator(nequal) 332 TsBefore = BinTestOperator(rdrIn) 333 TsAfter = BinTestOperator(rdrOut) 334 ) 335 336 func (o RedirOperator) String() string { return token(o).String() } 337 func (o ProcOperator) String() string { return token(o).String() } 338 func (o GlobOperator) String() string { return token(o).String() } 339 func (o BinCmdOperator) String() string { return token(o).String() } 340 func (o CaseOperator) String() string { return token(o).String() } 341 func (o ParNamesOperator) String() string { return token(o).String() } 342 func (o ParExpOperator) String() string { return token(o).String() } 343 func (o UnAritOperator) String() string { return token(o).String() } 344 func (o BinAritOperator) String() string { return token(o).String() } 345 func (o UnTestOperator) String() string { return token(o).String() } 346 func (o BinTestOperator) String() string { return token(o).String() }