diff options
author | Teddy <ted.sybil@gmail.com> | 2013-08-04 23:35:59 +0800 |
---|---|---|
committer | Teddy <ted.sybil@gmail.com> | 2013-08-04 23:35:59 +0800 |
commit | 645549b8a42844fc5a8042a4808c8ebf5050d7da (patch) | |
tree | 6f96ef92e16f332a6eb3860450404903865a12fe /parser.cpp | |
parent | acb298c7f864f9862859320555b416c97632d2fa (diff) |
added support for `cons`, `car`, `cdr`
Diffstat (limited to 'parser.cpp')
-rw-r--r-- | parser.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -103,7 +103,11 @@ Cons *ASTGenerator::absorb(Tokenizor *tk) { { Cons *lst = empty_list; while (top_ptr >= parse_stack && *(--top_ptr)) - lst = new Cons(*top_ptr, lst); // Collect the list + { + Cons *_lst = new Cons(*top_ptr, lst); // Collect the list + _lst->next = lst == empty_list ? NULL : lst; + lst = _lst; + } if (top_ptr < parse_stack) throw NormalError(READ_ERR_UNEXPECTED_RIGHT_BRACKET); *top_ptr++ = lst; |