From cb84db53d8b00f6e0539f92579ab80bfd4a9a95e Mon Sep 17 00:00:00 2001 From: Aidan Hahn Date: Mon, 18 Nov 2019 23:24:33 -0800 Subject: [PATCH] fixed recursive case for lexing a list --- pkg/shsh/token.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkg/shsh/token.go b/pkg/shsh/token.go index da572b5..3617794 100644 --- a/pkg/shsh/token.go +++ b/pkg/shsh/token.go @@ -16,6 +16,7 @@ func Lex(input string) Token { delim := ' ' var tok strings.Builder iter_alloced := false + is_list = false; for pos, char := range input { switch char { @@ -23,11 +24,21 @@ func Lex(input string) Token { case '\'', '"', '`': delim = char case '(': + is_list = true delim = ')' case delim: *iter = new(Token) - *iter._inner = tok.String() + if is_list { + // TODO: Pass a pointer out of Lex and store a pointer + *iter._inner = Lex(tok.String()) + is_list = false + + } else { + // TODO: Store a pointer to the contents of the stringbuilder + *iter._inner = tok.String() + } + iter_alloced = true delim = ' '