summaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
Diffstat (limited to 'lang')
-rw-r--r--lang/token.go63
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 }