about summary refs log tree commit diff
path: root/pkg/lang/scanner/token/kind.go
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-07-27 22:20:28 +0000
committerMel <einebeere@gmail.com>2022-07-27 22:50:42 +0000
commit4f23155ca7f8591cae0be6938610386513d24b7f (patch)
tree7a18b5297dc7d2a9304c802a429abf0869080a79 /pkg/lang/scanner/token/kind.go
parentbe281507daf2d1d7f66f32daa42ef78daa48c5dd (diff)
downloadjinx-4f23155ca7f8591cae0be6938610386513d24b7f.tar.zst
jinx-4f23155ca7f8591cae0be6938610386513d24b7f.zip
Put correct token strings in parser errors
Diffstat (limited to 'pkg/lang/scanner/token/kind.go')
-rw-r--r--pkg/lang/scanner/token/kind.go122
1 files changed, 121 insertions, 1 deletions
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"
+	}
+}