X-Git-Url: https://code.consxy.com/gitweb/gitweb.cgi?p=clnl;a=blobdiff_plain;f=src%2Fmain%2Flex.lisp;h=c7f082fc3d203f82e0e7d267c40236b77802980b;hp=93343e66e6afc7a730832128ccabd46f24ae775e;hb=d4ab3334d216c9963f9459d9e8870c6abafce8f1;hpb=4a9ed570e6d2c79ac7cac0a6a84d414ee658cd3e diff --git a/src/main/lex.lisp b/src/main/lex.lisp index 93343e6..c7f082f 100644 --- a/src/main/lex.lisp +++ b/src/main/lex.lisp @@ -33,10 +33,10 @@ (defun lex (text) (if (string= "" text) (let - ((lex (find-if (lambda (f) (funcall f *state* :eof)) *lexes* :key #'car))) + ((lex (find-if (lambda (f) (funcall f *state* :eof)) *lexes* :from-end t :key #'car))) (when lex (list (funcall (third lex) :eof)))) (let - ((lex (find-if (lambda (f) (funcall f *state* text)) *lexes* :key #'car))) + ((lex (find-if (lambda (f) (funcall f *state* text)) *lexes* :from-end t :key #'car))) (when (not lex) (error "Can't lex this: ~S" text)) (let ((val (funcall (third lex) (subseq text 0 (funcall (cadr lex) text))))) @@ -54,7 +54,7 @@ (defvar *letter* "\\w") (defvar *digit* "\\d") ;(defparameter *identifier-char* "[\\w\\d_\\.?=\*!<>:#\+/%\$\^\'&-]") -(defvar *identifier-char* "[\\w\\d]") +(defvar *identifier-char* "[\\w\\d-.]") ;(defvar *extension-literal-depth* 0) ;(defstruct extension-literal text)