diff options
author | Ludovic Courtes | 2005-12-04 21:20:44 +0000 |
---|---|---|
committer | Ludovic Courtes | 2005-12-04 21:20:44 +0000 |
commit | 42e397a7d41c5e71e783e0033b5171b933595588 (patch) | |
tree | ab3b278564578d0ffa0b691481dfa3fd27a1af0d /src/guile/skribilo/reader | |
parent | 13460dbc76c37ef1257cff2e8e6f59f451148b82 (diff) | |
download | skribilo-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')
-rw-r--r-- | src/guile/skribilo/reader/skribe.scm | 56 |
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)) |