aboutsummaryrefslogtreecommitdiff
path: root/src/guile/skribilo/reader/skribe.scm
diff options
context:
space:
mode:
authorLudovic Courtes2005-12-04 21:20:44 +0000
committerLudovic Courtes2005-12-04 21:20:44 +0000
commit42e397a7d41c5e71e783e0033b5171b933595588 (patch)
treeab3b278564578d0ffa0b691481dfa3fd27a1af0d /src/guile/skribilo/reader/skribe.scm
parent13460dbc76c37ef1257cff2e8e6f59f451148b82 (diff)
downloadskribilo-42e397a7d41c5e71e783e0033b5171b933595588.tar.gz
skribilo-42e397a7d41c5e71e783e0033b5171b933595588.tar.lz
skribilo-42e397a7d41c5e71e783e0033b5171b933595588.zip
Added the `~' markup. Added SRFI-62 and SRFI-30 support to the Skribe reader.
* NEWS: Added actual news. * src/guile/skribilo/skribe/api.scm (~): New markup. * src/guile/skribilo/engine/html.scm: Added a writer for `~'. * src/guile/skribilo/engine/latex.scm: Likewise. * src/guile/skribilo/engine/lout.scm: Likewise. * src/guile/skribilo/evaluator.scm (skribe-include): Added a `:reader' argument. * src/guile/skribilo/reader/skribe.scm (*skribe-reader*): Renamed to `%skribe-reader'. (%make-skribe-reader): Moved the sharp reader code to... (&sharp-reader): ... here. Added support for SRFI-62 and SRFI-30 (Bigloo supports both). git-archimport-id: lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2--patch-16
Diffstat (limited to 'src/guile/skribilo/reader/skribe.scm')
-rw-r--r--src/guile/skribilo/reader/skribe.scm56
1 files changed, 29 insertions, 27 deletions
diff --git a/src/guile/skribilo/reader/skribe.scm b/src/guile/skribilo/reader/skribe.scm
index 5c71cc1..410ef01 100644
--- a/src/guile/skribilo/reader/skribe.scm
+++ b/src/guile/skribilo/reader/skribe.scm
@@ -44,37 +44,39 @@
the Skribe syntax."
(if (string> version "1.2d")
(error "make-skribe-reader: unsupported version" version)
- *skribe-reader*))
+ %skribe-reader))
-
-(define (%make-skribe-reader)
+(define &sharp-reader
+ ;; The reader for what comes after a `#' character.
(let* ((dsssl-keyword-reader ;; keywords à la `#!key'
(r:make-token-reader #\!
- (r:token-reader-procedure
- (r:standard-token-reader 'keyword))))
- (sharp-reader (r:make-reader (cons dsssl-keyword-reader
- (map r:standard-token-reader
- '(character srfi-4
- vector
- number+radix
- boolean)))
- #f ;; use default fault handler
- 'reader/record-positions))
- (colon-keywords ;; keywords à la `:key' fashion
- (r:make-token-reader #\:
(r:token-reader-procedure
- (r:standard-token-reader 'keyword))))
- (square-bracket-free-symbol-misc-chars
- (let* ((tr (r:standard-token-reader 'guile-symbol-misc-chars))
- (tr-spec (r:token-reader-specification tr))
- (tr-proc (r:token-reader-procedure tr)))
- (r:make-token-reader (filter (lambda (chr)
- (not (or (eq? chr #\[)
- (eq? chr #\]))))
- tr-spec)
- tr-proc))))
+ (r:standard-token-reader 'keyword)))))
+ (r:make-reader (cons dsssl-keyword-reader
+ (map r:standard-token-reader
+ '(character srfi-4 vector
+ number+radix boolean
+ srfi30-block-comment
+ srfi62-sexp-comment)))
+ #f ;; use default fault handler
+ 'reader/record-positions)))
+
+(define (%make-skribe-reader)
+ (let ((colon-keywords ;; keywords à la `:key' fashion
+ (r:make-token-reader #\:
+ (r:token-reader-procedure
+ (r:standard-token-reader 'keyword))))
+ (square-bracket-free-symbol-misc-chars
+ (let* ((tr (r:standard-token-reader 'guile-symbol-misc-chars))
+ (tr-spec (r:token-reader-specification tr))
+ (tr-proc (r:token-reader-procedure tr)))
+ (r:make-token-reader (filter (lambda (chr)
+ (not (or (eq? chr #\[)
+ (eq? chr #\]))))
+ tr-spec)
+ tr-proc))))
- (r:make-reader (cons* (r:make-token-reader #\# sharp-reader)
+ (r:make-reader (cons* (r:make-token-reader #\# &sharp-reader)
colon-keywords
square-bracket-free-symbol-misc-chars
(map r:standard-token-reader
@@ -90,7 +92,7 @@ the Skribe syntax."
)))
;; We actually cache an instance here.
-(define *skribe-reader* (%make-skribe-reader))
+(define %skribe-reader (%make-skribe-reader))