diff options
author | Ludovic Court`es | 2005-11-28 14:23:48 +0000 |
---|---|---|
committer | Ludovic Court`es | 2005-11-28 14:23:48 +0000 |
commit | 559d3f64f4b051a39c91a3d53d3b41deee8ae42f (patch) | |
tree | 2f4b5c13a79ee9c093edb204c3f2d7f70e2b2e12 /src/guile/skribilo/utils | |
parent | d14b60a0b4ea1eb5ea84d74b1b2fe59d24ae9bf3 (diff) | |
download | skribilo-559d3f64f4b051a39c91a3d53d3b41deee8ae42f.tar.gz skribilo-559d3f64f4b051a39c91a3d53d3b41deee8ae42f.tar.lz skribilo-559d3f64f4b051a39c91a3d53d3b41deee8ae42f.zip |
Created a canonical module for Skribilo syntactic sugar.
* src/guile/skribilo/utils/syntax.scm: New.
Export `unless', `when', formerly defined in `lib.scm'.
* src/guile/skribilo.scm: Use `(skribilo utils syntax)' and
`%skribilo-module-reader'. Fixed parameterization of `*verbose*'.
* src/guile/skribilo/ast.scm: Use `(skribilo utils syntax)' and
`%skribilo-module-reader'.
* src/guile/skribilo/biblio.scm: Likewise.
* src/guile/skribilo/engine.scm: Likewise.
* src/guile/skribilo/writer.scm: Likewise.
* src/guile/skribilo/location.scm: Likewise.
* src/guile/skribilo/lib.scm: Likewise.
* src/guile/skribilo/source.scm: Likewise.
* src/guile/skribilo/evaluator.scm: Likewise.
Use `*document-path*' instead of `skribe-path'.
* src/guile/skribilo/module.scm: Use `(system reader confinement)'.
(%skribilo-user-imports): Moved some modules to...
(%skribilo-user-autoloads): New.
(define-skribe-module): Auto-load the modules specified in
`%skribilo-user-autoloads'. Use `set-current-reader' instead of the
`#:reader' option of `define-module'.
* src/guile/skribilo/engine/lout.scm: Commented out a piece of text.
git-archimport-id: lcourtes@laas.fr--2004-libre/skribilo--devel--1.2--patch-13
Diffstat (limited to 'src/guile/skribilo/utils')
-rw-r--r-- | src/guile/skribilo/utils/Makefile.am | 4 | ||||
-rw-r--r-- | src/guile/skribilo/utils/syntax.scm | 68 |
2 files changed, 72 insertions, 0 deletions
diff --git a/src/guile/skribilo/utils/Makefile.am b/src/guile/skribilo/utils/Makefile.am new file mode 100644 index 0000000..e87696a --- /dev/null +++ b/src/guile/skribilo/utils/Makefile.am @@ -0,0 +1,4 @@ +guilemoduledir = $(GUILE_SITE)/skribilo +dist_guilemodule_DATA = syntax.scm + +## arch-tag: 3a18b64b-1da2-417b-8338-2c534bca277f diff --git a/src/guile/skribilo/utils/syntax.scm b/src/guile/skribilo/utils/syntax.scm new file mode 100644 index 0000000..24e8efa --- /dev/null +++ b/src/guile/skribilo/utils/syntax.scm @@ -0,0 +1,68 @@ +;;; syntax.scm -- Syntactic candy for Skribilo modules. +;;; +;;; Copyright 2005 Ludovic Courtès <ludovic.courtes@laas.fr> +;;; +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2 of the License, or +;;; (at your option) any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +;;; USA. + +(define-module (skribilo utils syntax) + #:use-module (skribilo reader) + #:use-module (system reader library) + #:use-module (system reader confinement) + #:export (%skribe-reader %skribilo-module-reader) + #:export-syntax (unwind-protect unless when)) + +;;; Author: Ludovic Courtès +;;; +;;; Commentary: +;;; +;;; A reader for the Skribe syntax, i.e. roughly R5RS Scheme plus DSSSL-style +;;; keywords and sk-exps (expressions introduced using a square bracket). +;;; +;;; Code: + +(define %skribilo-module-reader + ;; The syntax used to read Skribilo modules. + (make-alternate-guile-reader '(colon-keywords + no-scsh-block-comments + srfi30-block-comments + srfi62-sexp-comments) + (lambda (chr port read) + (error "unexpected character in Skribilo module" + chr)) + 'reader/record-positions)) + +(define %skribe-reader + ;; The Skribe syntax reader. + (make-reader 'skribe)) + + +(define-macro (unwind-protect expr1 expr2) + ;; This is no completely correct. + `(dynamic-wind + (lambda () #f) + (lambda () ,expr1) + (lambda () ,expr2))) + +(define-macro (unless condition . exprs) + `(if (not ,condition) (begin ,@exprs))) + +(define-macro (when condition . exprs) + `(if ,condition (begin ,@exprs))) + +;;; arch-tag: 9a0e0638-64f0-480a-ab19-49e8bfcbcd9b + +;;; syntax.scm ends here |