From d19d4ca3f4531aaecf29a652a7e4a48f82c960c5 Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Wed, 5 Sep 2018 22:14:34 +0200 Subject: [PATCH] mes: Support Nyacc 0.85.3: Integrate progress. * 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 | 1 + mes/module/nyacc/lang/c99/cpp.mes | 1 + mes/module/nyacc/lang/c99/parser.mes | 1 + mes/module/nyacc/lang/sx-util.mes | 27 +++++++++++++++++++++ mes/module/nyacc/version.mes | 26 +++++++++++++++++++++ module/mescc/preprocess.scm | 35 ++++++++++++++++++++++++++++ 6 files changed, 91 insertions(+) create mode 100644 mes/module/nyacc/lang/sx-util.mes create mode 100644 mes/module/nyacc/version.mes diff --git a/mes/module/mescc/preprocess.mes b/mes/module/mescc/preprocess.mes index c7c5fcaa..022a372c 100644 --- a/mes/module/mescc/preprocess.mes +++ b/mes/module/mescc/preprocess.mes @@ -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") diff --git a/mes/module/nyacc/lang/c99/cpp.mes b/mes/module/nyacc/lang/c99/cpp.mes index fad1dc55..b25c4a93 100644 --- a/mes/module/nyacc/lang/c99/cpp.mes +++ b/mes/module/nyacc/lang/c99/cpp.mes @@ -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") diff --git a/mes/module/nyacc/lang/c99/parser.mes b/mes/module/nyacc/lang/c99/parser.mes index c51552d6..1a9aaf73 100644 --- a/mes/module/nyacc/lang/c99/parser.mes +++ b/mes/module/nyacc/lang/c99/parser.mes @@ -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 index 00000000..41ac5b4a --- /dev/null +++ b/mes/module/nyacc/lang/sx-util.mes @@ -0,0 +1,27 @@ +;;; -*-scheme-*- + +;;; GNU Mes --- Maxwell Equations of Software +;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen +;;; +;;; 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 . + +;;; 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 index 00000000..b9db628e --- /dev/null +++ b/mes/module/nyacc/version.mes @@ -0,0 +1,26 @@ +;;; -*-scheme-*- + +;;; GNU Mes --- Maxwell Equations of Software +;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen +;;; +;;; 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 . + +;;; Commentary: + +;;; Code: + +(include-from-path "nyacc/version.scm") +(display "nyacc version\n") diff --git a/module/mescc/preprocess.scm b/module/mescc/preprocess.scm index 9e341cba..c2efb32c 100644 --- a/module/mescc/preprocess.scm +++ b/module/mescc/preprocess.scm @@ -26,9 +26,44 @@ #: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)