package lang type TokenId int const ( Illegal = iota Comment Ident Int Float Imag Char String // Binary operators (except indicated) Add // + Sub // - Mul // * Quo // / Rem // % And // & Or // | Xor // ^ Shl // << Shr // >> AndNot // &^ AddAssign // += SubAssign // -= MulAssign // *= QuoAssign // /= RemAssign // %= AndAssign // &= OrAssign // |= XorAssign // ^= ShlAssign // <<= ShrAssign // >>= AndNotAssign // &^= Land // && Lor // || Arrow // unary -> Inc // ++ Dec // -- Equal // == Less // < Greater // > Assign // = Not // unary ! Plus // unary + Minus // unary - Address // unary & Deref // unary * BitComp // unary ^ NotEqual // != LessEqual // <= GreaterEqual // >= Define // := Ellipsis // unary ... Period // . Tilde // unary ~ // Separators Comma // , Semicolon // ; Colon // : // Block tokens ParenBlock // (..) BracketBlock // [..] BraceBlock // {..} // Reserved keywords Break Case Chan Const Continue Default Defer Else Fallthrough For Func Go Goto If Import Interface Map Package Range Return Select Struct Switch Type Var // Internal tokens (no corresponding keyword) Call CallX Label JumpFalse ) func (t TokenId) IsKeyword() bool { return t >= Break && t <= Var } func (t TokenId) IsOperator() bool { return t >= Add && t <= Tilde } func (t TokenId) IsBlock() bool { return t >= ParenBlock && t <= BraceBlock }