summaryrefslogtreecommitdiff
path: root/src/guile/skribilo/coloring/c.scm
diff options
context:
space:
mode:
Diffstat (limited to 'src/guile/skribilo/coloring/c.scm')
-rw-r--r--src/guile/skribilo/coloring/c.scm123
1 files changed, 56 insertions, 67 deletions
diff --git a/src/guile/skribilo/coloring/c.scm b/src/guile/skribilo/coloring/c.scm
index d2a2b9f..28533b4 100644
--- a/src/guile/skribilo/coloring/c.scm
+++ b/src/guile/skribilo/coloring/c.scm
@@ -1,67 +1,59 @@
-;;;;
-;;;; c.stk -- C fontifier for Skribe
-;;;;
-;;;; Copyright © 2004 Erick Gallesio - I3S-CNRS/ESSI <eg@essi.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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-;;;; USA.
-;;;;
-;;;; Author: Erick Gallesio [eg@essi.fr]
-;;;; Creation date: 6-Mar-2004 15:35 (eg)
-;;;; Last file update: 7-Mar-2004 00:12 (eg)
-;;;;
-
-(require "lex-rt") ;; to avoid module problems
+;;; c.scm -- C fontifier.
+;;;
+;;; Copyright 2004 Erick Gallesio - I3S-CNRS/ESSI <eg@essi.fr>
+;;; Copyright 2007 Ludovic Courtès <ludo@chbouib.org>
+;;;
+;;;
+;;; 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+;;; USA.
(define-module (skribilo c)
- :export (c java)
- :import (skribe runtime))
-
-(include "c-lex.stk") ;; SILex generated
+ :use-module (skribilo lib)
+ :use-module (skribilo utils syntax)
+ :use-module (skribilo coloring c-lex) ;; SILex generated
+ :use-module (skribilo coloring parameters)
+ :use-module (srfi srfi-39)
+ :export (c java))
+(fluid-set! current-reader %skribilo-module-reader)
-(define *the-keys* #f)
+
+;;;
+;;; Generic fontifier.
+;;;
-(define *c-keys* #f)
-(define *java-keys* #f)
+(define (fontifier s)
+ (lexer-init 'port (open-input-string s))
+ (let loop ((token (lexer))
+ (res '()))
+ (if (eq? token 'eof)
+ (reverse! res)
+ (loop (lexer)
+ (cons token res)))))
+
+;;;
+;;; C.
+;;;
-(define (fontifier s)
- (let ((lex (c-lex (open-input-string s))))
- (let Loop ((token (lexer-next-token lex))
- (res '()))
- (if (eq? token 'eof)
- (reverse! res)
- (Loop (lexer-next-token lex)
- (cons token res))))))
-
-;;;; ======================================================================
-;;;;
-;;;; C
-;;;;
-;;;; ======================================================================
-(define (init-c-keys)
- (unless *c-keys*
- (set! *c-keys* '(for while return break continue void
- do if else typedef struct union goto switch case
- static extern default)))
- *c-keys*)
+(define %c-keys
+ '(for while return break continue void do if else typedef struct union
+ goto switch case static extern default))
(define (c-fontifier s)
- (fluid-let ((*the-keys* (init-c-keys)))
+ (parameterize ((*the-keys* %c-keys))
(fontifier s)))
(define c
@@ -70,19 +62,17 @@
(fontifier c-fontifier)
(extractor #f)))
-;;;; ======================================================================
-;;;;
-;;;; JAVA
-;;;;
-;;;; ======================================================================
-(define (init-java-keys)
- (unless *java-keys*
- (set! *java-keys* (append (init-c-keys)
- '(public final class throw catch))))
- *java-keys*)
+
+;;;
+;;; Java.
+;;;
+
+(define %java-keys
+ (append %c-keys
+ '(public final class throw catch)))
(define (java-fontifier s)
- (fluid-let ((*the-keys* (init-java-keys)))
+ (parameterize ((*the-keys* %java-keys))
(fontifier s)))
(define java
@@ -90,4 +80,3 @@
(name "java")
(fontifier java-fontifier)
(extractor #f)))
-