aboutsummaryrefslogtreecommitdiff
path: root/pkg/lang/scanner
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/lang/scanner')
-rw-r--r--pkg/lang/scanner/scanner.go4
-rw-r--r--pkg/lang/scanner/token/kind.go122
2 files changed, 123 insertions, 3 deletions
diff --git a/pkg/lang/scanner/scanner.go b/pkg/lang/scanner/scanner.go
index b01e22f..ca307db 100644
--- a/pkg/lang/scanner/scanner.go
+++ b/pkg/lang/scanner/scanner.go
@@ -212,8 +212,8 @@ func (s *Scanner) scanIdentifierOrKeyword() (token.Token, error) {
kind = token.KwVar
case "fn":
kind = token.KwFn
- case "object":
- kind = token.KwObject
+ case "type":
+ kind = token.KwType
case "if":
kind = token.KwIf
diff --git a/pkg/lang/scanner/token/kind.go b/pkg/lang/scanner/token/kind.go
index e24ce2f..bedbada 100644
--- a/pkg/lang/scanner/token/kind.go
+++ b/pkg/lang/scanner/token/kind.go
@@ -9,7 +9,7 @@ const (
// Keywords
KwVar
KwFn
- KwObject
+ KwType
KwIf
KwElif
@@ -69,3 +69,123 @@ const (
Dot
SemiColon
)
+
+func (tk TokenKind) String() string {
+ switch tk {
+ case EOF:
+ return "EOF"
+ case EOL:
+ return "EOL"
+
+ case KwVar:
+ return "var"
+ case KwFn:
+ return "fn"
+ case KwType:
+ return "type"
+
+ case KwIf:
+ return "if"
+ case KwElif:
+ return "elif"
+ case KwElse:
+ return "else"
+ case KwFor:
+ return "for"
+ case KwTry:
+ return "try"
+ case KwCatch:
+ return "catch"
+ case KwFinally:
+ return "finally"
+
+ case KwReturn:
+ return "return"
+ case KwContinue:
+ return "continue"
+ case KwBreak:
+ return "break"
+ case KwThrow:
+ return "throw"
+
+ case KwIn:
+ return "in"
+
+ case KwNull:
+ return "null"
+ case KwTrue:
+ return "true"
+ case KwFalse:
+ return "false"
+
+ case KwThis:
+ return "this"
+
+ case KwUse:
+ return "use"
+ case KwFrom:
+ return "from"
+ case KwBy:
+ return "by"
+
+ case Ident:
+ return "ident"
+ case Int:
+ return "int"
+ case Float:
+ return "float"
+ case String:
+ return "string"
+
+ case Assign:
+ return "="
+ case Plus:
+ return "+"
+ case Minus:
+ return "-"
+ case Star:
+ return "*"
+ case Slash:
+ return "/"
+ case Percent:
+ return "%"
+ case Bang:
+ return "!"
+
+ case Eq:
+ return "=="
+ case Neq:
+ return "!="
+ case Lt:
+ return "<"
+ case Gt:
+ return ">"
+ case Lte:
+ return "<="
+ case Gte:
+ return ">="
+
+ case LParen:
+ return "("
+ case RParen:
+ return ")"
+ case LBrace:
+ return "{"
+ case RBrace:
+ return "}"
+ case LBracket:
+ return "["
+ case RBracket:
+ return "]"
+
+ case Comma:
+ return ","
+ case Dot:
+ return "."
+ case SemiColon:
+ return ";"
+
+ default:
+ return "unknown"
+ }
+}