X-Git-Url: https://code.consxy.com/gitweb/gitweb.cgi?p=clnl;a=blobdiff_plain;f=src%2Fmain%2Flex.lisp;h=93343e66e6afc7a730832128ccabd46f24ae775e;hp=b1da84848d7792a5805f052e708d3efede778aa0;hb=1ae8c7a0199a4955708c7f5d7a286a12782b5fd2;hpb=a0f8850031d5821c69b286d17004166f870fcd8e diff --git a/src/main/lex.lisp b/src/main/lex.lisp index b1da848..93343e6 100644 --- a/src/main/lex.lisp +++ b/src/main/lex.lisp @@ -1,7 +1,3 @@ -(defpackage #:cl-nl.lexer - (:use :common-lisp) - (:export :lex)) - (in-package #:cl-nl.lexer) ; I played around with using #'read for netlogo code, which would have been neat. @@ -86,15 +82,15 @@ (deflex :initial *nonnewline_white_space_char* (constantly nil)) (deflex :initial "\\n|\\r" (constantly nil)) ;(deflex :initial ";.*[\n\r]?" nil) -;(deflex :initial (format nil "-?\.?[0-9]~A" *identifier-char*) -; (lambda (text) -; (let -; ((num? -; (let -; ((*readtable* (copy-readtable nil)) -; (*read-eval* nil)) -; (read-from-string text)))) -; (if (numberp num?) num? (error "Invalid number"))))) +(deflex :initial (format nil "-?\.?[0-9]~A*" *identifier-char*) + (lambda (text) + (let + ((num? + (let + ((*readtable* (copy-readtable nil)) + (*read-eval* nil)) + (read-from-string text)))) + (if (numberp num?) num? (error "Invalid number"))))) (deflex :initial (format nil "~A*" *identifier-char*) #'as-symbol) ;(deflex :initial (format nil "\"~A*\"" *string-text*))