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.
This commit is contained in:
parent
d7f5af4a61
commit
d19d4ca3f4
|
@ -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")
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
27
mes/module/nyacc/lang/sx-util.mes
Normal file
27
mes/module/nyacc/lang/sx-util.mes
Normal file
|
@ -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")
|
26
mes/module/nyacc/version.mes
Normal file
26
mes/module/nyacc/version.mes
Normal file
|
@ -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")
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue