mes: Support Nyacc 0.85.3: Integrate progress.
authorJan Nieuwenhuizen <janneke@gnu.org>
Wed, 5 Sep 2018 20:14:34 +0000 (22:14 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Wed, 5 Sep 2018 20:14:34 +0000 (22:14 +0200)
* mes/module/nyacc/lang/sx-util.mes: New file.
* mes/module/nyacc/version.mes: New file.
* mes/module/nyacc/lang/c99/cpp.mes (nyacc): Include them.
* mes/module/nyacc/lang/c99/parser.mes (nyacc): Include them.
* module/mescc/preprocess.scm (need-progress): New function.
(progress): New function.
(insert-progress-monitors): Use them to Integrate progress.

mes/module/mescc/preprocess.mes
mes/module/nyacc/lang/c99/cpp.mes
mes/module/nyacc/lang/c99/parser.mes
mes/module/nyacc/lang/sx-util.mes [new file with mode: 0644]
mes/module/nyacc/version.mes [new file with mode: 0644]
module/mescc/preprocess.scm

index c7c5fcaa30987994f9d3c10676add01fcbc35e39..022a372c2c937033305f32b1e3d2730f5715d882 100644 (file)
@@ -24,4 +24,5 @@
 (mes-use-module (srfi srfi-13))
 (mes-use-module (srfi srfi-26))
 (mes-use-module (nyacc lang c99 parser))
+(mes-use-module (nyacc version))
 (include-from-path "mescc/preprocess.scm")
index fad1dc55eecc7d47bf6f38d893b492a49c938f9b..b25c4a9375186d56b6e10334800b06f7a1104c41 100644 (file)
@@ -28,5 +28,6 @@
 
 (mes-use-module (nyacc parse))
 (mes-use-module (nyacc lex))
+(mes-use-module (nyacc lang sx-util))
 (mes-use-module (nyacc lang util))
 (include-from-path "nyacc/lang/c99/cpp.scm")
index c51552d6240a60f377e6e6aca81c0dcfc24c6052..1a9aaf7326f3df8f59701fd435e0a6dc0273365f 100644 (file)
@@ -32,6 +32,7 @@
 
 (mes-use-module (nyacc lex))
 (mes-use-module (nyacc parse))
+(mes-use-module (nyacc lang sx-util))
 (mes-use-module (nyacc lang util))
 (mes-use-module (nyacc lang c99 cpp))
 
diff --git a/mes/module/nyacc/lang/sx-util.mes b/mes/module/nyacc/lang/sx-util.mes
new file mode 100644 (file)
index 0000000..41ac5b4
--- /dev/null
@@ -0,0 +1,27 @@
+;;; -*-scheme-*-
+
+;;; GNU Mes --- Maxwell Equations of Software
+;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;;
+;;; This file is part of GNU Mes.
+;;;
+;;; GNU 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.
+;;;
+;;; GNU 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 GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(mes-use-module (srfi srfi-1))
+(mes-use-module (srfi srfi-16))
+(include-from-path "nyacc/lang/sx-util.scm")
diff --git a/mes/module/nyacc/version.mes b/mes/module/nyacc/version.mes
new file mode 100644 (file)
index 0000000..b9db628
--- /dev/null
@@ -0,0 +1,26 @@
+;;; -*-scheme-*-
+
+;;; GNU Mes --- Maxwell Equations of Software
+;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;;
+;;; This file is part of GNU Mes.
+;;;
+;;; GNU 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.
+;;;
+;;; GNU 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 GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+
+(include-from-path "nyacc/version.scm")
+(display "nyacc version\n")
index 9e341cba8fbf575109ee50ff6aa3ce59c05908df..c2efb32c6c5781c875cf995162070ed635b6eee0 100644 (file)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:use-module (nyacc lang c99 parser)
+  #:use-module (nyacc lang c99 parser)
+  #:use-module (nyacc version)
   #:use-module (mes guile)
   #:export (c99-input->ast))
 
+(format (current-error-port) "*nyacc-version*=~a\n" *nyacc-version*)
+;; list of which rules you want progress reported
+(define need-progress
+  (assoc-ref
+   '(("0.85.3" (1 2 3))
+     ("0.86.0" (1 2 3)))
+   *nyacc-version*))
+
+(define (progress o)
+  (when (and o (getenv "NYACC_DEBUG"))
+    (display "    :" (current-error-port))
+    (display o (current-error-port))
+    (display "\n" (current-error-port))))
+
+(define (insert-progress-monitors act-v len-v)
+  (let ((n (vector-length act-v)))
+    (let loop ((ix 0))
+      (when (< ix n)
+       (if (memq ix need-progress)
+           (vector-set
+            act-v ix
+            (lambda args
+              (progress (list-ref args (1- (vector-ref len-v ix))))
+              (apply (vector-ref act-v ix) args))))
+        (loop (1+ ix))))))
+
+(cond-expand
+ (guile
+  (insert-progress-monitors (@@ (nyacc lang c99 parser) c99-act-v)
+                            (@@ (nyacc lang c99 parser) c99-len-v)))
+ (mes
+  (insert-progress-monitors c99-act-v c99-len-v)))
+
 (define (logf port string . rest)
   (apply format (cons* port string rest))
   (force-output port)