about summary refs log tree commit diff
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"
+	}
+}