Rewrite SEQ without using recursion.

Allows for very long regexes to be processed.
Doesn't require the result to be reversed afterwards.
This commit is contained in:
Stas Boukarev
2013-02-13 21:29:23 +04:00
parent 7ad13f568e
commit 7d64a90203
2 changed files with 40 additions and 70 deletions

View File

@ -290,8 +290,7 @@ handled elsewhere."
(return))
(write-char char out))))))
(list (if (char= first-char #\p) :property :inverted-property)
;; we must reverse here because of what PARSE-STRING does
(nreverse name))))
name)))
(defun collect-char-class (lexer)
"Reads and consumes characters from regex string until a right
@ -571,7 +570,7 @@ closing #\> will also be consumed."
;; back-referencing a named register
(incf (lexer-pos lexer))
(list :back-reference
(nreverse (parse-register-name-aux lexer))))
(parse-register-name-aux lexer)))
(t
;; false alarm, just unescape \k
#\k)))