From e7f9256c096ca8975738ceeb3dad0b841ca434e3 Mon Sep 17 00:00:00 2001 From: Masaya Tojo Date: Tue, 30 Mar 2021 02:39:53 +0900 Subject: Add boilerplate codes for create programming language. --- Makefile.am | 5 ++++- configure.ac | 2 +- language/acl2/compile-tree-il.scm | 25 +++++++++++++++++++++++++ language/acl2/parse.scm | 24 ++++++++++++++++++++++++ language/acl2/spec.scm | 30 ++++++++++++++++++++++++++++++ 5 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 language/acl2/compile-tree-il.scm create mode 100644 language/acl2/parse.scm create mode 100644 language/acl2/spec.scm diff --git a/Makefile.am b/Makefile.am index e5498ea..3d99308 100644 --- a/Makefile.am +++ b/Makefile.am @@ -42,7 +42,10 @@ godir=$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache bin_SCRIPTS = -SOURCES = +SOURCES = \ + language/acl2/spec.scm \ + language/acl2/parse.scm \ + language/acl2/compile-tree-il.scm TESTS = diff --git a/configure.ac b/configure.ac index f40e778..f4c032a 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_INIT([guile-acl2], [0.1.0]) -AC_CONFIG_SRCDIR([]) +AC_CONFIG_SRCDIR([language/acl2/spec.scm]) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AM_SILENT_RULES([yes]) diff --git a/language/acl2/compile-tree-il.scm b/language/acl2/compile-tree-il.scm new file mode 100644 index 0000000..4d2310d --- /dev/null +++ b/language/acl2/compile-tree-il.scm @@ -0,0 +1,25 @@ +;;; Guile-ACL2 --- Guile's ACL2 compiler +;;; Copyright © 2021 Masaya Tojo +;;; +;;; This file is part of Guile-ACL2. +;;; +;;; Guile-ACL2 is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU Lesser General Public License as +;;; published by the Free Software Foundation; either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; Guile-ACL2 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 +;;; Lesser General Public License for more details. +;;; +;;; You should have received a copy of the GNU Lesser General Public +;;; License along with Guile-ACL2. If not, see +;;; . + +(define-module (language acl2 compile-tree-il) + #:use-module (language tree-il) + #:export (compile-tree-il)) + +(define (compile-tree-il exp env opts) + (values (parse-tree-il '(const acl2)) env env)) diff --git a/language/acl2/parse.scm b/language/acl2/parse.scm new file mode 100644 index 0000000..fee7bf6 --- /dev/null +++ b/language/acl2/parse.scm @@ -0,0 +1,24 @@ +;;; Guile-ACL2 --- Guile's ACL2 compiler +;;; Copyright © 2021 Masaya Tojo +;;; +;;; This file is part of Guile-ACL2. +;;; +;;; Guile-ACL2 is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU Lesser General Public License as +;;; published by the Free Software Foundation; either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; Guile-ACL2 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 +;;; Lesser General Public License for more details. +;;; +;;; You should have received a copy of the GNU Lesser General Public +;;; License along with Guile-ACL2. If not, see +;;; . + +(define-module (language acl2 parse) + #:export (read-acl2)) + +(define (read-acl2 p) + '()) diff --git a/language/acl2/spec.scm b/language/acl2/spec.scm new file mode 100644 index 0000000..0dc676e --- /dev/null +++ b/language/acl2/spec.scm @@ -0,0 +1,30 @@ +;;; Guile-ACL2 --- Guile's ACL2 compiler +;;; Copyright © 2021 Masaya Tojo +;;; +;;; This file is part of Guile-ACL2. +;;; +;;; Guile-ACL2 is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU Lesser General Public License as +;;; published by the Free Software Foundation; either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; Guile-ACL2 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 +;;; Lesser General Public License for more details. +;;; +;;; You should have received a copy of the GNU Lesser General Public +;;; License along with Guile-ACL2. If not, see +;;; . + +(define-module (language acl2 spec) + #:use-module (language acl2 compile-tree-il) + #:use-module (language acl2 parse) + #:use-module (system base language) + #:export (acl2)) + +(define-language acl2 + #:title "ACL2" + #:reader (lambda (port env) (read-acl2 port)) + #:compilers `((tree-il . ,compile-tree-il)) + #:printer write) -- cgit v1.2.3