diff options
author | Robin Templeton <robin@terpri.org> | 2014-06-19 23:37:36 -0400 |
---|---|---|
committer | Christine Lemmer-Webber <cwebber@dustycloud.org> | 2021-10-19 18:10:04 -0400 |
commit | 1099c7c6b6a387b5ad86f7fb477a2be92888f32f (patch) | |
tree | 785c860edf328ea2a33320cca0146ff9a5259bb8 | |
parent | cf5e02f1a666b5a05d081a7894c00c4a42d9aa53 (diff) | |
download | guile-1099c7c6b6a387b5ad86f7fb477a2be92888f32f.tar.gz |
read nil/t as #nil/#t
(Best-ability ChangeLog annotation added by Christine Lemmer-Webber.)
* module/language/elisp/lexer.scm (lex): Update to handle #nil / #t.
-rw-r--r-- | module/language/elisp/lexer.scm | 30 |
1 files 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 |