diff --git a/internal/parser/parser.go b/internal/parser/parser.go index 17228ef..30e3d9e 100644 --- a/internal/parser/parser.go +++ b/internal/parser/parser.go @@ -1,27 +1,45 @@ package parser import ( + "strings" + "github.com/hazemKrimi/jack-compiler/internal/tokenizer" ) func ParseTokens(tokens []tokenizer.Token) string { - output := "\n" + var output strings.Builder + + output.WriteString("\n") for _, token := range tokens { switch token.Type { case tokenizer.SYMBOL: - { - output += "" + token.Value + "\n" - } - case tokenizer.KEYWORD: - { - output += "" + token.Value + "\n" + var value string + + switch token.Value { + case "<": + value = "<" + case ">": + value = ">" + case "&": + value = "&" + default: + value = token.Value } + output.WriteString(" " + value + " \n") + case tokenizer.KEYWORD: + output.WriteString(" " + token.Value + " \n") + case tokenizer.IDENTIFIER: + output.WriteString(" " + token.Value + " \n") + case tokenizer.INT_CONST: + output.WriteString(" " + token.Value + " \n") + case tokenizer.STR_CONST: + output.WriteString(" " + token.Value + " \n") } } - output += "\n" + output.WriteString("\n") - return output + return output.String() }