diff options
author | Masaya Tojo <masaya@tojo.tokyo> | 2021-03-30 02:39:53 +0900 |
---|---|---|
committer | Masaya Tojo <masaya@tojo.tokyo> | 2021-03-30 03:54:02 +0900 |
commit | e7f9256c096ca8975738ceeb3dad0b841ca434e3 (patch) | |
tree | c1df511e19739c394c918dc4d1297a21f014cde1 | |
parent | 7bdba0a138750d543d4e4dc1e620adc5f3e9aeb8 (diff) |
Add boilerplate codes for create programming language.
-rw-r--r-- | Makefile.am | 5 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | language/acl2/compile-tree-il.scm | 25 | ||||
-rw-r--r-- | language/acl2/parse.scm | 24 | ||||
-rw-r--r-- | language/acl2/spec.scm | 30 |
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) |