diff options
author | Brian Templeton <bpt@hcoop.net> | 2010-07-22 15:12:50 -0400 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2010-12-07 13:21:02 +0100 |
commit | b7966c10efaaaf95e3a6fe300e79d9c3c195bde5 (patch) | |
tree | 6104c024c64394fcf0fa9ae43fab3d18f95c05cc | |
parent | f5742cf042fbcdb9b8319a6b96fd32b03dcb42ca (diff) | |
download | guile-b7966c10efaaaf95e3a6fe300e79d9c3c195bde5.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.
Signed-off-by: Andy Wingo <wingo@pobox.com>
-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 b201e18ce..ed6c5f8e2 100644 --- a/module/language/elisp/lexer.scm +++ b/module/language/elisp/lexer.scm @@ -313,10 +313,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 baac7f74c..df825eb4e 100644 --- a/module/language/elisp/parser.scm +++ b/module/language/elisp/parser.scm @@ -183,6 +183,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)))) |