aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasaya Tojo <masaya@tojo.tokyo>2021-03-30 02:39:53 +0900
committerMasaya Tojo <masaya@tojo.tokyo>2021-03-30 03:54:02 +0900
commite7f9256c096ca8975738ceeb3dad0b841ca434e3 (patch)
treec1df511e19739c394c918dc4d1297a21f014cde1
parent7bdba0a138750d543d4e4dc1e620adc5f3e9aeb8 (diff)
Add boilerplate codes for create programming language.
-rw-r--r--Makefile.am5
-rw-r--r--configure.ac2
-rw-r--r--language/acl2/compile-tree-il.scm25
-rw-r--r--language/acl2/parse.scm24
-rw-r--r--language/acl2/spec.scm30
5 files changed, 84 insertions, 2 deletions
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([<srcfile>])
+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 <masaya@tojo.tokyo>
+;;;
+;;; 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
+;;; <http://www.gnu.org/licenses/>.
+
+(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 <masaya@tojo.tokyo>
+;;;
+;;; 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
+;;; <http://www.gnu.org/licenses/>.
+
+(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 <masaya@tojo.tokyo>
+;;;
+;;; 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
+;;; <http://www.gnu.org/licenses/>.
+
+(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)