diff options
Diffstat (limited to 'lang/token.go')
| -rw-r--r-- | lang/token.go | 63 |
1 files changed, 37 insertions, 26 deletions
diff --git a/lang/token.go b/lang/token.go index 995d621..880f474 100644 --- a/lang/token.go +++ b/lang/token.go @@ -13,6 +13,7 @@ const ( String // Binary operators (except indicated) + // Arithmetic and bitwise binary operators Add // + Sub // - Mul // * @@ -24,7 +25,21 @@ const ( Shl // << Shr // >> AndNot // &^ + Period // . + // Binary operators returning a boolean + Equal // == + Greater // > + GreaterEqual // >= + Land // && + Less // < + LessEqual // <= + Lor // || + NotEqual // != + + // Assigment operators (arithmetic and bitwise) + Define // := + Assign // = AddAssign // += SubAssign // -= MulAssign // *= @@ -36,31 +51,21 @@ const ( 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 + // Unary operations + Plus // unary + + Minus // unary - + Address // unary & + Deref // unary * + BitComp // unary ^ + Arrow // unary -> + Ellipsis // unary ... + Not // unary ! + Tilde // unary ~ + + // Separators (punctuation) Comma // , Semicolon // ; Colon // : @@ -97,13 +102,19 @@ const ( Type Var - // Internal tokens (no corresponding keyword) + // Internal virtual machine tokens (no corresponding keyword) Call CallX Label JumpFalse + JumpSetFalse + JumpSetTrue ) -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 } +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 } +func (t TokenId) IsBoolOp() bool { return t >= Equal && t <= NotEqual || t == Not } +func (t TokenId) IsBinaryOp() bool { return t >= Add && t <= NotEqual } +func (t TokenId) IsUnaryOp() bool { return t >= Plus && t <= Tilde } +func (t TokenId) IsLogicalOp() bool { return t == Land || t == Lor } |
