aboutsummaryrefslogtreecommitdiff
path: root/language
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 /language
parent7bdba0a138750d543d4e4dc1e620adc5f3e9aeb8 (diff)
Add boilerplate codes for create programming language.
Diffstat (limited to 'language')
-rw-r--r--language/acl2/compile-tree-il.scm25
-rw-r--r--language/acl2/parse.scm24
-rw-r--r--language/acl2/spec.scm30
3 files changed, 79 insertions, 0 deletions
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)