diff options
author | Brian Templeton <bpt@hcoop.net> | 2010-07-22 15:12:50 -0400 |
---|---|---|
committer | Brian Templeton <bpt@hcoop.net> | 2010-08-15 23:02:56 -0400 |
commit | 1a7bb9aa941324d5d1342dbde9dbd5c6a15bbb3f (patch) | |
tree | 8de697c652aba7a1058790a07b8e76cf3966a005 | |
parent | 718acc97e6b01760d1adc5362a22909d1441a874 (diff) | |
download | guile-1a7bb9aa941324d5d1342dbde9dbd5c6a15bbb3f.tar.gz |
support "#'" syntax for function expressions
* module/language/elisp/lexer.scm (lex):
* module/language/elisp/parser.scm (get-expression): Support sharpsign
single-quote syntax as an abbreviation for `function' expressions.
-rw-r--r-- | module/language/elisp/lexer.scm | 11 | ||||
-rw-r--r-- | module/language/elisp/parser.scm | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/module/language/elisp/lexer.scm b/module/language/elisp/lexer.scm index c0d25f5ae..b199257b5 100644 --- a/module/language/elisp/lexer.scm +++ b/module/language/elisp/lexer.scm @@ -314,10 +314,15 @@ (cons (integer->char (get-character port #t)) result-chars)))))) (else (iterate (cons cur result-chars))))))) - ;; Circular markers (either reference or definition). ((#\#) - (let ((mark (get-circular-marker port))) - (return (car mark) (cdr mark)))) + (let ((c (read-char port))) + (case c + ((#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9) + (unread-char c port) + (let ((mark (get-circular-marker port))) + (return (car mark) (cdr mark)))) + ((#\') + (return 'function #f))))) ;; Parentheses and other special-meaning single characters. ((#\() (return 'paren-open #f)) ((#\)) (return 'paren-close #f)) diff --git a/module/language/elisp/parser.scm b/module/language/elisp/parser.scm index d420136d0..9d7f7b541 100644 --- a/module/language/elisp/parser.scm +++ b/module/language/elisp/parser.scm @@ -182,6 +182,8 @@ (parse-error token "end of file during parsing")) ((integer float symbol character string) (return (cdr token))) + ((function) + (return `(function ,(get-expression lex)))) ((quote backquote unquote unquote-splicing) (return (list (assq-ref quotation-symbols type) (get-expression lex)))) |