From 95b0565332f6f79ea6f1a33f396928cb2b37d6fb Mon Sep 17 00:00:00 2001 From: Robin Templeton Date: Thu, 19 Jun 2014 23:37:36 -0400 Subject: read nil/t as #nil/#t (Best-ability ChangeLog annotation added by Christopher Allan Webber.) * module/language/elisp/lexer.scm (lex): Update to handle #nil / #t. --- module/language/elisp/lexer.scm | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/module/language/elisp/lexer.scm b/module/language/elisp/lexer.scm index 8152a1182..826f6df87 100644 --- a/module/language/elisp/lexer.scm +++ b/module/language/elisp/lexer.scm @@ -370,18 +370,24 @@ (lambda (type str) (case type ((symbol) - ;; str could be empty if the first character is already - ;; something not allowed in a symbol (and not escaped)! - ;; Take care about that, it is an error because that - ;; character should have been handled elsewhere or is - ;; invalid in the input. - (if (zero? (string-length str)) - (begin - ;; Take it out so the REPL might not get into an - ;; infinite loop with further reading attempts. - (read-char port) - (error "invalid character in input" c)) - (return 'symbol (string->symbol str)))) + (cond + ((equal? str "nil") + (return 'symbol #nil)) + ((equal? str "t") + (return 'symbol #t)) + (else + ;; str could be empty if the first character is already + ;; something not allowed in a symbol (and not escaped)! + ;; Take care about that, it is an error because that + ;; character should have been handled elsewhere or is + ;; invalid in the input. + (if (zero? (string-length str)) + (begin + ;; Take it out so the REPL might not get into an + ;; infinite loop with further reading attempts. + (read-char port) + (error "invalid character in input" c)) + (return 'symbol (string->symbol str)))))) ((integer) ;; In elisp, something like "1." is an integer, while ;; string->number returns an inexact real. Thus we need -- cgit v1.2.3