mes: resurrect running MesCC: update info interface.
authorJan Nieuwenhuizen <janneke@gnu.org>
Mon, 20 Nov 2017 22:17:50 +0000 (23:17 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Mon, 20 Nov 2017 22:17:50 +0000 (23:17 +0100)
* module/language/c99/info.mes (type?, global?, local?): New function.
  (make-global): Remove name parameter.
* module/nyacc/lang/c99/pprint.mes: New file.

make.scm
module/language/c99/info.mes
module/nyacc/lang/c99/pprint.mes [new file with mode: 0644]

index 226c35b3f17f78682294d383c0419a9d9e4156be..297f8076994ec462d93481a957a48b48f48f285f 100755 (executable)
--- a/make.scm
+++ b/make.scm
@@ -551,6 +551,7 @@ exec ${GUILE-guile} --no-auto-compile -L . -L guile -C . -C guile -s "$0" ${1+"$
    "module/nyacc/lalr.mes"
    "module/nyacc/lang/c99/cpp.mes"
    "module/nyacc/lang/c99/parser.mes"
+   "module/nyacc/lang/c99/pprint.mes"
    "module/nyacc/lang/calc/parser.mes"
    "module/nyacc/lang/util.mes"
    "module/nyacc/lex.mes"
index 933a4ed59771aa96bcaed82a3c02c5077c33a447..510b738fe79486047155414edb26d26bfecfd5ee 100644 (file)
                   (cons <continue> continue)))))
 
 (define (make-type type size pointer description)
-  (list type size pointer description))
-
-(define type:type car)
-(define type:size cadr)
-(define type:pointer caddr)
-(define type:description cadddr)
-
-(define (make-global name type pointer value)
-  (cons name (list type pointer value)))
-
-(define global:type car)
-(define global:pointer cadr)
-(define global:value caddr)
+  (list 'type* type size pointer description))
+(define (type? o) (and (pair? o) (eq? (car o) 'type*)))
+(define type:type cadr)
+(define type:size caddr)
+(define type:pointer cadddr)
+(define caddddr (compose cadddr cdr))
+(define type:description caddddr)
+
+(define (make-global type pointer value)
+  (list 'global* type pointer value))
+(define (global? o) (and (pair? o) (eq? (car o) 'global*)))
+(define global:type cadr)
+(define global:pointer caddr)
+(define global:value cadddr)
 
 (define (make-local type pointer id)
-  (list type pointer id))
-(define local:type car)
-(define local:pointer cadr)
-(define local:id caddr)
+  (list 'local* type pointer id))
+(define (local? o) (and (pair? o) (eq? (car o) 'local*)))
+(define local:type cadr)
+(define local:pointer caddr)
+(define local:id cadddr)
diff --git a/module/nyacc/lang/c99/pprint.mes b/module/nyacc/lang/c99/pprint.mes
new file mode 100644 (file)
index 0000000..39ce15f
--- /dev/null
@@ -0,0 +1,38 @@
+;;; -*-scheme-*-
+
+;;; Mes --- Maxwell Equations of Software
+;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;
+;;; This file is part of Mes.
+;;;
+;;; Mes 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 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; Mes 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 Mes.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(mes-use-module (mes guile))
+(mes-use-module (mes optargs))
+;;(mes-use-module (srfi srfi-1))
+;;(mes-use-module (nyacc lang util))
+;;(mes-use-module (sxml match))
+;;(mes-use-module (mes pretty-print))
+
+;;(include-from-path "nyacc/lang/c99/pprint.scm")
+
+;; mes does not have (sxml match), short-circuit me
+(define* (pretty-print-c99 tree
+                          #:optional (port (current-output-port))
+                          #:key ugly per-line-prefix (basic-offset 2))
+  (write tree port))