diff options
author | Ludovic Courtes | 2005-12-03 11:35:47 +0000 |
---|---|---|
committer | Ludovic Courtes | 2005-12-03 11:35:47 +0000 |
commit | 9d4199ce1494a0c2a328fa51424acc29ae9dc91f (patch) | |
tree | 0e9e8ed316ed3a4a996b3a42c769282eb842c7bd /src/guile/skribilo/utils/syntax.scm | |
parent | 3d3ef9b5ad8687d6e5119cdcd7f86260a79fd697 (diff) | |
parent | c4c942f265f9cd7730155ecb978eb1b98051e764 (diff) | |
download | skribilo-9d4199ce1494a0c2a328fa51424acc29ae9dc91f.tar.gz skribilo-9d4199ce1494a0c2a328fa51424acc29ae9dc91f.tar.lz skribilo-9d4199ce1494a0c2a328fa51424acc29ae9dc91f.zip |
Merge from lcourtes@laas.fr--2004-libre
Patches applied:
* lcourtes@laas.fr--2004-libre/skribilo--devel--1.2 (patch 12-16)
- Fixed and updated the installation process.
- Created a canonical module for Skribilo syntactic sugar.
- More `%skribilo-module-reader' fixes.
- Fixed `ref' and bibliography-related things.
- Fixed Lout-related thingies.
git-archimport-id: lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2--patch-14
Diffstat (limited to 'src/guile/skribilo/utils/syntax.scm')
-rw-r--r-- | src/guile/skribilo/utils/syntax.scm | 68 |
1 files changed, 68 insertions, 0 deletions
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 |