From ab2b73f2ff4fd444f41019b292219362fb5fe57e Mon Sep 17 00:00:00 2001 From: Brad Nelson Date: Sat, 4 Jun 2022 15:51:06 -0700 Subject: [PATCH] Adding mini module system. --- common/all_tests.fs | 1 + common/modules.fs | 17 +++++++++++++++++ common/modules_tests.fs | 29 +++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 common/modules.fs create mode 100644 common/modules_tests.fs diff --git a/common/all_tests.fs b/common/all_tests.fs index 9950ad7..12259f4 100644 --- a/common/all_tests.fs +++ b/common/all_tests.fs @@ -24,6 +24,7 @@ needs float_tests.fs needs forth_namespace_tests.fs needs structures_tests.fs needs including_tests/including_tests.fs +needs modules_tests.fs needs ../lib/hashing/sha1_tests.fs needs ../lib/hashing/sha256_tests.fs run-tests diff --git a/common/modules.fs b/common/modules.fs new file mode 100644 index 0000000..014bf13 --- /dev/null +++ b/common/modules.fs @@ -0,0 +1,17 @@ +\ Copyright 2022 Bradley D. Nelson +\ +\ Licensed under the Apache License, Version 2.0 (the "License"); +\ you may not use this file except in compliance with the License. +\ You may obtain a copy of the License at +\ +\ http://www.apache.org/licenses/LICENSE-2.0 +\ +\ Unless required by applicable law or agreed to in writing, software +\ distributed under the License is distributed on an "AS IS" BASIS, +\ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +\ See the License for the specific language governing permissions and +\ limitations under the License. + +: internal ( -- xt ) current @ @ ; +: external ( -- xt ) :noname postpone ; ; +: module ( xt xt -- ) >link& ! ; diff --git a/common/modules_tests.fs b/common/modules_tests.fs new file mode 100644 index 0000000..11a08e4 --- /dev/null +++ b/common/modules_tests.fs @@ -0,0 +1,29 @@ +\ Copyright 2022 Bradley D. Nelson +\ +\ Licensed under the Apache License, Version 2.0 (the "License"); +\ you may not use this file except in compliance with the License. +\ You may obtain a copy of the License at +\ +\ http://www.apache.org/licenses/LICENSE-2.0 +\ +\ Unless required by applicable law or agreed to in writing, software +\ distributed under the License is distributed on an "AS IS" BASIS, +\ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +\ See the License for the specific language governing permissions and +\ limitations under the License. + +needs modules.fs + +e: test-modules + vocabulary foo foo definitions + : a ; + internal + : b ; + external + : c b ; + module + : d ; + vlist + forth definitions + out: d c a +;e