From e5ab0622364911a8a7364689d3b59e856a6c09e9 Mon Sep 17 00:00:00 2001 From: Ibrahim Muftee Date: Mon, 20 Jul 2026 18:44:45 -0500 Subject: chapter 2.6 --- token/token.odin | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) (limited to 'token/token.odin') diff --git a/token/token.odin b/token/token.odin index 20efd6f..f6d0701 100644 --- a/token/token.odin +++ b/token/token.odin @@ -1,5 +1,7 @@ package token +import "core:fmt" + Token :: union { Asterisk, Bang, @@ -82,3 +84,63 @@ lookup_identifier :: proc(ident: string) -> Token { return Identifier{ident} } } + +literal :: proc(token: Token) -> (literal: string) { + switch t in token { + case Asterisk: + literal = "*" + case Bang: + literal = "!" + case Comma: + literal = "," + case EOF: + literal = "EOF" + case Else: + literal = "else" + case Equal_Sign: + literal = "=" + case Equals: + literal = "==" + case False: + literal = "false" + case Forward_Slash: + literal = "/" + case Function: + literal = "fn" + case Greater_Than: + literal = ">" + case Identifier: + literal = t.literal + case If: + literal = "if" + case Illegal: + literal = "ILLEGAL" + case Integer: + literal = fmt.tprint(t.literal) + case Left_Brace: + literal = "{" + case Left_Parenthesis: + literal = "(" + case Less_Than: + literal = "<" + case Let: + literal = "let" + case Minus: + literal = "-" + case Not_Equals: + literal = "!=" + case Plus: + literal = "+" + case Return: + literal = "return" + case Right_Brace: + literal = "}" + case Right_Parenthesis: + literal = ")" + case Semicolon: + literal = ";" + case True: + literal = "true" + } + return literal +} -- cgit v1.2.3