diff --git a/pkg/shsh/token.go b/pkg/shsh/token.go index d4c3e99..fd81863 100644 --- a/pkg/shsh/token.go +++ b/pkg/shsh/token.go @@ -25,18 +25,21 @@ type Token struct { interface{} *_inner } + func lex(string input) string { ret := new(Token) iter := &ret // buffered reader via new or make i dunno - bool buff_is_dirty = false; + buff_is_dirty := false + iter_alloced := false for pos, char := range input { switch char { - case ' ', '\t', '\n', '\f', '\r': - // parse new token case '\'', '\"', '`': // parse new token + fallthrough // ? + case ' ', '\t', '\n', '\f', '\r': + // parse new token case '(': // match paren // parse list @@ -51,6 +54,11 @@ func lex(string input) string { // clear buffer buf_is_dirty = false } + + if iter_alloced { + iter = &(*iter)->next + iter_alloced = false + } } }