X-Git-Url: https://code.consxy.com/gitweb/gitweb.cgi?p=clnl;a=blobdiff_plain;f=src%2Fmain%2Flex.lisp;h=780aec2aeefd1af4d3b6c490661c3053c590525e;hp=93343e66e6afc7a730832128ccabd46f24ae775e;hb=c34fdd7f3b9920b2feaf1dec70d2dd21ddbbadf2;hpb=1ae8c7a0199a4955708c7f5d7a286a12782b5fd2 diff --git a/src/main/lex.lisp b/src/main/lex.lisp index 93343e6..780aec2 100644 --- a/src/main/lex.lisp +++ b/src/main/lex.lisp @@ -1,4 +1,4 @@ -(in-package #:cl-nl.lexer) +(in-package #:clnl-lexer) ; I played around with using #'read for netlogo code, which would have been neat. ; However, it provides too many instances where people could inject CL code @@ -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)