mescc: cleanups.
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 2 Jan 2018 20:35:55 +0000 (21:35 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Tue, 2 Jan 2018 20:35:55 +0000 (21:35 +0100)
* guile/mescc.scm: Cleanups.
* module/language/c99/compiler.mes:
* module/language/c99/compiler.scm:
* module/language/c99/info.mes:
* module/language/c99/info.scm:
* module/mes/getopt-long.mes:
* module/mes/optargs.mes:
* module/mes/optargs.scm:
* module/mes/repl.mes:
* module/mes/scm.mes:
* scripts/mescc.mes:

guile/mescc.scm
module/language/c99/compiler.mes
module/language/c99/compiler.scm
module/language/c99/info.mes
module/language/c99/info.scm
module/mes/getopt-long.mes
module/mes/optargs.mes
module/mes/optargs.scm
module/mes/repl.mes
module/mes/scm.mes
scripts/mescc.mes

index bcdbd50b27b58fef217f3fce60dcd0eab171570e..5c5fcab83ee07f6c3854021f905822fcb94c9729 100755 (executable)
@@ -88,9 +88,7 @@ Usage: mescc.scm [OPTION]... FILE...
 
 (define (main:ast->info file)
   (let ((ast (with-input-from-file file read)))
-    (with-input-from-file file
-      (lambda ()
-        (c99-ast->info ast)))))
+    (c99-ast->info ast)))
 
 (define (source->ast defines includes)
   (lambda (file)
index f07edbb66902f6d723a7264e10d2279e3e9e84de..d6338f338c423fdf3c5542ff43ca2ba670178b13 100644 (file)
@@ -1,7 +1,7 @@
 ;;; -*-scheme-*-
 
 ;;; Mes --- Maxwell Equations of Software
-;;; Copyright © 2016,2017 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016,2017,2018 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of Mes.
 ;;;
@@ -63,9 +63,9 @@
 (define mes? (pair? (current-module)))
 
 (define* (c99-input->full-ast #:key (defines '()) (includes '()))
-  (let ((include (if (equal? %prefix "") "include" (string-append %prefix "/share/include"))))
+  (let ((sys-include (if (equal? %prefix "") "include" (string-append %prefix "/share/include"))))
     (parse-c99
-     #:inc-dirs (append includes (cons* include "include" "lib" (or (and=> (getenv "C_INCLUDE_PATH") (cut string-split <> #\:)) '())))
+     #:inc-dirs (append includes (cons* sys-include "include" "lib" (or (and=> (getenv "C_INCLUDE_PATH") (cut string-split <> #\:)) '())))
      #:cpp-defs `(
                   "NULL=0"
                   "__linux__=1"
                    (cons (ast-strip-const h) (ast-strip-const t))))
     (_  o)))
 
-(define* (c99-input->ast #:key (defines '()) (includes '()))
-  ((compose ast-strip-const ast-strip-comment) (c99-input->full-ast #:defines defines #:includes includes)))
-
 (define (ast:function? o)
   (and (pair? o) (eq? (car o) 'fctn-defn)))
 
               (loop (cdr statements)
                     ((ast->info info) (car statements)))))))))
 
+;; exports
+
 (define (ast-list->info info)
   (lambda (elements)
     (let loop ((elements elements) (info info))
       (if (null? elements) info
           (loop (cdr elements) ((ast->info info) (car elements)))))))
 
+(define* (c99-ast->info ast)
+  ((ast->info (make <info> #:types i386:type-alist)) ast))
+
+(define* (c99-input->ast #:key (defines '()) (includes '()))
+  ((compose ast-strip-const ast-strip-comment) (c99-input->full-ast #:defines defines #:includes includes)))
+
 (define* (c99-input->info #:key (defines '()) (includes '()))
   (lambda ()
     (let* ((info (make <info> #:types i386:type-alist))
   `((functions . ,(.functions o))
     (globals . ,(map (lambda (g) (cons (car g) (global:value (cdr g)))) (.globals o)))))
 
-(define* (c99-ast->info ast)
-  ((ast->info (make <info> #:types i386:type-alist)) ast))
-
 (define* (c99-input->elf #:key (defines '()) (includes '()))
   ((compose object->elf info->object (c99-input->info #:defines defines #:includes includes))))
 
index a6750dfe4b8af717604b794d529441d1e004d848..c7e8644eea36b7a508334793b9635940e1c0a2fe 100644 (file)
@@ -41,7 +41,6 @@
             c99-input->elf
             c99-input->info
             c99-input->object
-            clone
             info->object))
 
 (cond-expand
index faff24698afb7c27dfc1eb857b779fa0584156d9..bb8e996ab75363bd839c0170acf8334ade8e7864 100644 (file)
@@ -23,6 +23,8 @@
 ;;; Code:
 
 (mes-use-module (srfi srfi-9))
-(define define-immutable-record-type define-record-type)
+(define-macro (define-immutable-record-type type constructor+params predicate . fields)
+  `(define-record-type ,type ,constructor+params ,predicate ,@fields))
 
 (include-from-path "language/c99/info.scm")
+
index 4bd49db46cd2dc02d7fe0b1d954293dbcbed4045..9c001ee4209e8dbbec7fa3c9ce479225b4e99bd2 100644 (file)
@@ -26,7 +26,6 @@
   #:use-module (ice-9 optargs)
   #:use-module (srfi srfi-9)
   #:use-module (srfi srfi-9 gnu)
-  #:use-module (system base pmatch)
   #:export (<info>
             make
             make-<info>
@@ -66,8 +65,7 @@
  (guile
   (use-modules (ice-9 syncase)))
  (mes
-  (mes-use-module (mes optargs))
-  (mes-use-module (mes pmatch))))
+  (mes-use-module (mes optargs))))
 
 (define-immutable-record-type <info>
   (make-<info> types constants functions globals locals function text break continue)
index c5685fa5a32e7812ab21f7c49a2ac0970586b3cc..8c5069b9f7502cc2551ae29fdab7deae177ee39d 100644 (file)
@@ -1,7 +1,7 @@
 ;;; -*-scheme-*-
 
 ;;; Mes --- Maxwell Equations of Software
-;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2017,2018 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of Mes.
 ;;;
 
 ;;; Commentary:
 
-;;; portable matcher
+;;; Code:
 
-(mes-use-module (mes syntax))
 (mes-use-module (srfi srfi-1))
 (mes-use-module (srfi srfi-9))
-(mes-use-module (mes guile))
+(mes-use-module (srfi srfi-13))
+(define-macro (define-module module . rest) #t)
 (include-from-path "mes/getopt-long.scm")
index 7b67b609c1529cd142bab0e051739c94e3b441e6..b0d60dabe5ad26de9dbd290a6f3e17307af6e017 100644 (file)
@@ -1,7 +1,7 @@
 ;;; -*-scheme-*-
 
 ;;; Mes --- Maxwell Equations of Software
-;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016,2018 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of Mes.
 ;;;
@@ -32,4 +32,5 @@
 (define-macro (set-procedure-property! proc key value)
   proc)
 
+(define-macro (define-module module . rest) #t)
 (include-from-path "mes/optargs.scm")
index 3e3396ce91da79f5635782ff56f23d3eaa854b9c..943e21fab6361d5dce50f527b102395d80834243 100644 (file)
 
 ;;; Code:
 
-;; (define-module (ice-9 optargs)
-;;   #:use-module (system base pmatch)
-;;   #:replace (lambda*)
-;;   #:export-syntax (let-optional
-;;               let-optional*
-;;               let-keywords
-;;               let-keywords*
-;;               define*
-;;                   define*-public
-;;               defmacro*
-;;               defmacro*-public))
+(define-module (ice-9 optargs)
+  #:use-module (system base pmatch)
+  #:replace (lambda*)
+  #:export-syntax (let-optional
+                 let-optional*
+                 let-keywords
+                 let-keywords*
+                 define*
+                  define*-public
+                 defmacro*
+                 defmacro*-public))
 
 ;; let-optional rest-arg (binding ...) . body
 ;; let-optional* rest-arg (binding ...) . body
index 06bbb30769bf80fda58cb864a45c200609ca08a6..73112acf51c03255dc74a88fe3f8242a705045ce 100644 (file)
@@ -28,7 +28,7 @@
 
 (define welcome
   (string-append "Mes " %version "
-Copyright (C) 2016,2017 Jan Nieuwenhuizen <janneke@gnu.org>
+Copyright (C) 2016,2017,2018 Jan Nieuwenhuizen <janneke@gnu.org>
 
 Mes comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
 This program is free software, and you are welcome to redistribute it
@@ -165,7 +165,7 @@ along with Mes.  If not, see <http://www.gnu.org/licenses/>.
                              (set! count (+ count 1))
                              (display id)
                              (display " = ")
-                             (display e)
+                             (write e)
                              (newline)
                              (loop (acons id e a)))))))))
         (lambda (key . args)
index 020c39492a4f6c60ec714d1227120eb4e795c6a3..78f5e137c7a2987c575dac757c6291cfa5d91946 100644 (file)
@@ -1,7 +1,7 @@
 ;;; -*-scheme-*-
 
 ;;; Mes --- Maxwell Equations of Software
-;;; Copyright © 2016,2017 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016,2017,2018 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of Mes.
 ;;;
 
 \f
 ;;; Strings/srfi-13
+(define (make-string n . fill)
+  (list->string (apply make-list n fill)))
+
 (define (string-length s)
   (length (string->list s)))
 
index 09d9d57eddafc82c202b15aa456070de72edff0e..0a65ae3cd740e71359f64b4d95435fc7ca67a0e2 100755 (executable)
@@ -101,9 +101,7 @@ Usage: mescc.mes [OPTION]... FILE...
 
 (define (main:ast->info file)
   (let ((ast (with-input-from-file file read)))
-    (with-input-from-file file
-      (lambda ()
-        (c99-ast->info ast)))))
+    (c99-ast->info ast)))
 
 (define (source->ast defines includes)
   (lambda (file)