mescc: cleanups.
* 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:
This commit is contained in:
parent
5757ef3069
commit
1f8a217694
|
@ -88,9 +88,7 @@ Usage: mescc.scm [OPTION]... FILE...
|
||||||
|
|
||||||
(define (main:ast->info file)
|
(define (main:ast->info file)
|
||||||
(let ((ast (with-input-from-file file read)))
|
(let ((ast (with-input-from-file file read)))
|
||||||
(with-input-from-file file
|
(c99-ast->info ast)))
|
||||||
(lambda ()
|
|
||||||
(c99-ast->info ast)))))
|
|
||||||
|
|
||||||
(define (source->ast defines includes)
|
(define (source->ast defines includes)
|
||||||
(lambda (file)
|
(lambda (file)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
;;; -*-scheme-*-
|
;;; -*-scheme-*-
|
||||||
|
|
||||||
;;; Mes --- Maxwell Equations of Software
|
;;; 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.
|
;;; This file is part of Mes.
|
||||||
;;;
|
;;;
|
||||||
|
@ -63,9 +63,9 @@
|
||||||
(define mes? (pair? (current-module)))
|
(define mes? (pair? (current-module)))
|
||||||
|
|
||||||
(define* (c99-input->full-ast #:key (defines '()) (includes '()))
|
(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
|
(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 `(
|
#:cpp-defs `(
|
||||||
"NULL=0"
|
"NULL=0"
|
||||||
"__linux__=1"
|
"__linux__=1"
|
||||||
|
@ -105,9 +105,6 @@
|
||||||
(cons (ast-strip-const h) (ast-strip-const t))))
|
(cons (ast-strip-const h) (ast-strip-const t))))
|
||||||
(_ o)))
|
(_ 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)
|
(define (ast:function? o)
|
||||||
(and (pair? o) (eq? (car o) 'fctn-defn)))
|
(and (pair? o) (eq? (car o) 'fctn-defn)))
|
||||||
|
|
||||||
|
@ -2434,12 +2431,20 @@
|
||||||
(loop (cdr statements)
|
(loop (cdr statements)
|
||||||
((ast->info info) (car statements)))))))))
|
((ast->info info) (car statements)))))))))
|
||||||
|
|
||||||
|
;; exports
|
||||||
|
|
||||||
(define (ast-list->info info)
|
(define (ast-list->info info)
|
||||||
(lambda (elements)
|
(lambda (elements)
|
||||||
(let loop ((elements elements) (info info))
|
(let loop ((elements elements) (info info))
|
||||||
(if (null? elements) info
|
(if (null? elements) info
|
||||||
(loop (cdr elements) ((ast->info info) (car elements)))))))
|
(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 '()))
|
(define* (c99-input->info #:key (defines '()) (includes '()))
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(let* ((info (make <info> #:types i386:type-alist))
|
(let* ((info (make <info> #:types i386:type-alist))
|
||||||
|
@ -2454,9 +2459,6 @@
|
||||||
`((functions . ,(.functions o))
|
`((functions . ,(.functions o))
|
||||||
(globals . ,(map (lambda (g) (cons (car g) (global:value (cdr g)))) (.globals 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 '()))
|
(define* (c99-input->elf #:key (defines '()) (includes '()))
|
||||||
((compose object->elf info->object (c99-input->info #:defines defines #:includes includes))))
|
((compose object->elf info->object (c99-input->info #:defines defines #:includes includes))))
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,6 @@
|
||||||
c99-input->elf
|
c99-input->elf
|
||||||
c99-input->info
|
c99-input->info
|
||||||
c99-input->object
|
c99-input->object
|
||||||
clone
|
|
||||||
info->object))
|
info->object))
|
||||||
|
|
||||||
(cond-expand
|
(cond-expand
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(mes-use-module (srfi srfi-9))
|
(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")
|
(include-from-path "language/c99/info.scm")
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
#:use-module (ice-9 optargs)
|
#:use-module (ice-9 optargs)
|
||||||
#:use-module (srfi srfi-9)
|
#:use-module (srfi srfi-9)
|
||||||
#:use-module (srfi srfi-9 gnu)
|
#:use-module (srfi srfi-9 gnu)
|
||||||
#:use-module (system base pmatch)
|
|
||||||
#:export (<info>
|
#:export (<info>
|
||||||
make
|
make
|
||||||
make-<info>
|
make-<info>
|
||||||
|
@ -66,8 +65,7 @@
|
||||||
(guile
|
(guile
|
||||||
(use-modules (ice-9 syncase)))
|
(use-modules (ice-9 syncase)))
|
||||||
(mes
|
(mes
|
||||||
(mes-use-module (mes optargs))
|
(mes-use-module (mes optargs))))
|
||||||
(mes-use-module (mes pmatch))))
|
|
||||||
|
|
||||||
(define-immutable-record-type <info>
|
(define-immutable-record-type <info>
|
||||||
(make-<info> types constants functions globals locals function text break continue)
|
(make-<info> types constants functions globals locals function text break continue)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
;;; -*-scheme-*-
|
;;; -*-scheme-*-
|
||||||
|
|
||||||
;;; Mes --- Maxwell Equations of Software
|
;;; 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.
|
;;; This file is part of Mes.
|
||||||
;;;
|
;;;
|
||||||
|
@ -20,10 +20,10 @@
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
|
|
||||||
;;; portable matcher
|
;;; Code:
|
||||||
|
|
||||||
(mes-use-module (mes syntax))
|
|
||||||
(mes-use-module (srfi srfi-1))
|
(mes-use-module (srfi srfi-1))
|
||||||
(mes-use-module (srfi srfi-9))
|
(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")
|
(include-from-path "mes/getopt-long.scm")
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
;;; -*-scheme-*-
|
;;; -*-scheme-*-
|
||||||
|
|
||||||
;;; Mes --- Maxwell Equations of Software
|
;;; 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.
|
;;; This file is part of Mes.
|
||||||
;;;
|
;;;
|
||||||
|
@ -32,4 +32,5 @@
|
||||||
(define-macro (set-procedure-property! proc key value)
|
(define-macro (set-procedure-property! proc key value)
|
||||||
proc)
|
proc)
|
||||||
|
|
||||||
|
(define-macro (define-module module . rest) #t)
|
||||||
(include-from-path "mes/optargs.scm")
|
(include-from-path "mes/optargs.scm")
|
||||||
|
|
|
@ -57,17 +57,17 @@
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
;; (define-module (ice-9 optargs)
|
(define-module (ice-9 optargs)
|
||||||
;; #:use-module (system base pmatch)
|
#:use-module (system base pmatch)
|
||||||
;; #:replace (lambda*)
|
#:replace (lambda*)
|
||||||
;; #:export-syntax (let-optional
|
#:export-syntax (let-optional
|
||||||
;; let-optional*
|
let-optional*
|
||||||
;; let-keywords
|
let-keywords
|
||||||
;; let-keywords*
|
let-keywords*
|
||||||
;; define*
|
define*
|
||||||
;; define*-public
|
define*-public
|
||||||
;; defmacro*
|
defmacro*
|
||||||
;; defmacro*-public))
|
defmacro*-public))
|
||||||
|
|
||||||
;; let-optional rest-arg (binding ...) . body
|
;; let-optional rest-arg (binding ...) . body
|
||||||
;; let-optional* rest-arg (binding ...) . body
|
;; let-optional* rest-arg (binding ...) . body
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
(define welcome
|
(define welcome
|
||||||
(string-append "Mes " %version "
|
(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'.
|
Mes comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
|
||||||
This program is free software, and you are welcome to redistribute it
|
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))
|
(set! count (+ count 1))
|
||||||
(display id)
|
(display id)
|
||||||
(display " = ")
|
(display " = ")
|
||||||
(display e)
|
(write e)
|
||||||
(newline)
|
(newline)
|
||||||
(loop (acons id e a)))))))))
|
(loop (acons id e a)))))))))
|
||||||
(lambda (key . args)
|
(lambda (key . args)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
;;; -*-scheme-*-
|
;;; -*-scheme-*-
|
||||||
|
|
||||||
;;; Mes --- Maxwell Equations of Software
|
;;; 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.
|
;;; This file is part of Mes.
|
||||||
;;;
|
;;;
|
||||||
|
@ -209,6 +209,9 @@
|
||||||
|
|
||||||
|
|
||||||
;;; Strings/srfi-13
|
;;; Strings/srfi-13
|
||||||
|
(define (make-string n . fill)
|
||||||
|
(list->string (apply make-list n fill)))
|
||||||
|
|
||||||
(define (string-length s)
|
(define (string-length s)
|
||||||
(length (string->list s)))
|
(length (string->list s)))
|
||||||
|
|
||||||
|
|
|
@ -101,9 +101,7 @@ Usage: mescc.mes [OPTION]... FILE...
|
||||||
|
|
||||||
(define (main:ast->info file)
|
(define (main:ast->info file)
|
||||||
(let ((ast (with-input-from-file file read)))
|
(let ((ast (with-input-from-file file read)))
|
||||||
(with-input-from-file file
|
(c99-ast->info ast)))
|
||||||
(lambda ()
|
|
||||||
(c99-ast->info ast)))))
|
|
||||||
|
|
||||||
(define (source->ast defines includes)
|
(define (source->ast defines includes)
|
||||||
(lambda (file)
|
(lambda (file)
|
||||||
|
|
Loading…
Reference in a new issue