diff options
Diffstat (limited to 'pkg/lang/scanner')
| -rw-r--r-- | pkg/lang/scanner/scanner.go | 4 | ||||
| -rw-r--r-- | pkg/lang/scanner/token/kind.go | 122 |
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" + } +} |
