From 171e1986bb92c0e41f5f8e3672d5de1fc069c27c Mon Sep 17 00:00:00 2001 From: Kyle Gunger Date: Fri, 6 Aug 2021 19:58:35 -0400 Subject: Initial empty/bare-bones files for implementation --- libtnsl/READEME.md | 50 +++++++++++++++++++ libtnsl/src/algorithm/alg.tnsl | 0 libtnsl/src/algorithm/math/math.tnsl | 0 libtnsl/src/bootstrap.tnsl | 33 +++++++++++++ libtnsl/src/box/box.tnsl | 0 libtnsl/src/box/map.tnsl | 0 libtnsl/src/box/string.tnsl | 0 libtnsl/src/box/tree.tnsl | 0 libtnsl/src/box/vector.tnsl | 0 libtnsl/src/io/block.tnsl | 0 libtnsl/src/io/file.tnsl | 0 libtnsl/src/io/io.tnsl | 0 libtnsl/src/io/std.tnsl | 0 libtnsl/src/io/stream.tnsl | 0 libtnsl/src/libtnsl.tnsl | 19 ++++++++ libtnsl/src/reflect/dynamic.tnsl | 0 libtnsl/src/reflect/method.tnsl | 0 libtnsl/src/reflect/reflect.tnsl | 0 libtnsl/src/reflect/resolver.tnsl | 0 libtnsl/src/reflect/static.tnsl | 0 libtnsl/src/reflect/type.tnsl | 0 libtnsl/src/time/alg.tnsl | 0 libtnsl/src/time/conv.tnsl | 0 libtnsl/src/time/parse.tnsl | 0 libtnsl/src/time/time.tnsl | 0 tnslc/README.md | 19 ++++++++ tnslc/src/ast/ast.tnsl | 22 +++++++++ tnslc/src/ast/node.tnsl | 88 ++++++++++++++++++++++++++++++++++ tnslc/src/compile/arch/arch.tnsl | 25 ++++++++++ tnslc/src/compile/arch/common.tnsl | 20 ++++++++ tnslc/src/compile/arch/isa_arm.tnsl | 18 +++++++ tnslc/src/compile/arch/isa_risc_v.tnsl | 18 +++++++ tnslc/src/compile/arch/isa_x86.tnsl | 18 +++++++ tnslc/src/compile/compile.tnsl | 22 +++++++++ tnslc/src/flags/flags.tnsl | 19 ++++++++ tnslc/src/parse/parse.tnsl | 22 +++++++++ tnslc/src/parse/token.tnsl | 35 ++++++++++++++ tnslc/src/tnslc.tnsl | 48 +++++++++++++++++++ 38 files changed, 476 insertions(+) create mode 100644 libtnsl/READEME.md create mode 100644 libtnsl/src/algorithm/alg.tnsl create mode 100644 libtnsl/src/algorithm/math/math.tnsl create mode 100644 libtnsl/src/bootstrap.tnsl create mode 100644 libtnsl/src/box/box.tnsl create mode 100644 libtnsl/src/box/map.tnsl create mode 100644 libtnsl/src/box/string.tnsl create mode 100644 libtnsl/src/box/tree.tnsl create mode 100644 libtnsl/src/box/vector.tnsl create mode 100644 libtnsl/src/io/block.tnsl create mode 100644 libtnsl/src/io/file.tnsl create mode 100644 libtnsl/src/io/io.tnsl create mode 100644 libtnsl/src/io/std.tnsl create mode 100644 libtnsl/src/io/stream.tnsl create mode 100644 libtnsl/src/libtnsl.tnsl create mode 100644 libtnsl/src/reflect/dynamic.tnsl create mode 100644 libtnsl/src/reflect/method.tnsl create mode 100644 libtnsl/src/reflect/reflect.tnsl create mode 100644 libtnsl/src/reflect/resolver.tnsl create mode 100644 libtnsl/src/reflect/static.tnsl create mode 100644 libtnsl/src/reflect/type.tnsl create mode 100644 libtnsl/src/time/alg.tnsl create mode 100644 libtnsl/src/time/conv.tnsl create mode 100644 libtnsl/src/time/parse.tnsl create mode 100644 libtnsl/src/time/time.tnsl create mode 100644 tnslc/src/ast/ast.tnsl create mode 100644 tnslc/src/ast/node.tnsl create mode 100644 tnslc/src/compile/arch/arch.tnsl create mode 100644 tnslc/src/compile/arch/common.tnsl create mode 100644 tnslc/src/compile/arch/isa_arm.tnsl create mode 100644 tnslc/src/compile/arch/isa_risc_v.tnsl create mode 100644 tnslc/src/compile/arch/isa_x86.tnsl create mode 100644 tnslc/src/compile/compile.tnsl create mode 100644 tnslc/src/flags/flags.tnsl create mode 100644 tnslc/src/parse/parse.tnsl create mode 100644 tnslc/src/parse/token.tnsl create mode 100644 tnslc/src/tnslc.tnsl diff --git a/libtnsl/READEME.md b/libtnsl/READEME.md new file mode 100644 index 0000000..32cff9a --- /dev/null +++ b/libtnsl/READEME.md @@ -0,0 +1,50 @@ +# libts + +The official implimentation of the TNSL Standard Library + +libts provides the following language features: +* Type and method resolution +* Basic input and output +* Standard algorithms +* Standard data containers +* Basic platform identification +* Time resolution + +More information on these features can be found in the specification under libts.txt + +--- +## Provided Sub-modules + +libts provides the ts base module and the following sub-modules to address each feature: +* algorithm + * Algorithms. Also contains the math sub-module for basic math operations. +* box + * Data containers (vector, map, etc.) +* io + * Input and output +* reflect + * Type reflection and method resolution +* time + * Time related functions + +Each sub-module should have its own README to address features + +--- + Copyright 2021 Kyle Gunger + + Dual licenced under the CDDL 1.0 and BSD 3-Clause licences. + + This file may only be used in accordance with one of the two + licences. You should have recieved a copy of each licence with + the source code. In the event that you did not recieve a copy + of the licences, they may be found at the following URLs: + + CDDL 1.0: + https://opensource.org/licenses/CDDL-1.0 + + BSD 3-Clause: + https://opensource.org/licenses/BSD-3-Clause + + THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO + WARRENTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE + EXPRESS OR IMPLIED diff --git a/libtnsl/src/algorithm/alg.tnsl b/libtnsl/src/algorithm/alg.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/algorithm/math/math.tnsl b/libtnsl/src/algorithm/math/math.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/bootstrap.tnsl b/libtnsl/src/bootstrap.tnsl new file mode 100644 index 0000000..01ebf56 --- /dev/null +++ b/libtnsl/src/bootstrap.tnsl @@ -0,0 +1,33 @@ +/## + Copyright 2020 Kyle Gunger + + 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. +#/ + +/# + This file provides a nonstandard entry point for a bootstrap implementation of TNSL. + + The reference implementation of the TNSL compiler (written in GOLANG for now), does + not contain feature complete functionality in the form of pre-compiler directives, which the + full libts uses for compilation on different operating systems. This version is provided + so that the reference compiler can produce a functional enough libts to compile the + full tnslc compiler (written in TNSL). + + As such, this entry point must be modified manually to use windows, mac, or linux + code files, and then will provide a barebones file, stream, and error handeling library + with nothing else to act as a bootstrap for the compiler. The bootstrap compiler should + be able to compile the full libts and, in turn, the full compiler. +#/ + +/;export module ts +;/ \ No newline at end of file diff --git a/libtnsl/src/box/box.tnsl b/libtnsl/src/box/box.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/box/map.tnsl b/libtnsl/src/box/map.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/box/string.tnsl b/libtnsl/src/box/string.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/box/tree.tnsl b/libtnsl/src/box/tree.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/box/vector.tnsl b/libtnsl/src/box/vector.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/io/block.tnsl b/libtnsl/src/io/block.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/io/file.tnsl b/libtnsl/src/io/file.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/io/io.tnsl b/libtnsl/src/io/io.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/io/std.tnsl b/libtnsl/src/io/std.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/io/stream.tnsl b/libtnsl/src/io/stream.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/libtnsl.tnsl b/libtnsl/src/libtnsl.tnsl new file mode 100644 index 0000000..a684317 --- /dev/null +++ b/libtnsl/src/libtnsl.tnsl @@ -0,0 +1,19 @@ +/## + Copyright 2020 Kyle Gunger + + 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. +#/ + +/;export module tnsl + +;/ diff --git a/libtnsl/src/reflect/dynamic.tnsl b/libtnsl/src/reflect/dynamic.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/reflect/method.tnsl b/libtnsl/src/reflect/method.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/reflect/reflect.tnsl b/libtnsl/src/reflect/reflect.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/reflect/resolver.tnsl b/libtnsl/src/reflect/resolver.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/reflect/static.tnsl b/libtnsl/src/reflect/static.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/reflect/type.tnsl b/libtnsl/src/reflect/type.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/time/alg.tnsl b/libtnsl/src/time/alg.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/time/conv.tnsl b/libtnsl/src/time/conv.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/time/parse.tnsl b/libtnsl/src/time/parse.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/libtnsl/src/time/time.tnsl b/libtnsl/src/time/time.tnsl new file mode 100644 index 0000000..e69de29 diff --git a/tnslc/README.md b/tnslc/README.md index e69de29..81cb844 100644 --- a/tnslc/README.md +++ b/tnslc/README.md @@ -0,0 +1,19 @@ +# tnslc + +The reference compiler for the TNSL programming language. The compiler is written in TNSL. + +### Credits + + Copyright 2021 Kyle Gunger + + This file is licenced under the CDDL 1.0 (the Licence) + and may only be used in accordance with the Licence. + You should have recieved a copy of the Licence with this + software/source code. If you did not, a copy can be found + at the following URL: + + https://opensource.org/licenses/CDDL-1.0 + + THIS SOFTWARE/SOURCE CODE IS PROVIDED "AS IS" WITH NO + WARRENTY, GUARANTEE, OR CLAIM OF FITNESS FOR ANY PURPOSE + EXPRESS OR IMPLIED diff --git a/tnslc/src/ast/ast.tnsl b/tnslc/src/ast/ast.tnsl new file mode 100644 index 0000000..e086f0b --- /dev/null +++ b/tnslc/src/ast/ast.tnsl @@ -0,0 +1,22 @@ +/## + Copyright 2020-2021 Kyle Gunger + + Licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE + (CDDL) Version 1.0 (the "License"). You may not use this file + except in compliance with the License. You may obtain a copy of + the License at + + https://opensource.org/licenses/CDDL-1.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. +#/ + +/; export module ast + :import "node.tnsl" +;/ \ No newline at end of file diff --git a/tnslc/src/ast/node.tnsl b/tnslc/src/ast/node.tnsl new file mode 100644 index 0000000..26d192c --- /dev/null +++ b/tnslc/src/ast/node.tnsl @@ -0,0 +1,88 @@ +/## + Copyright 2020-2021 Kyle Gunger + + Licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE + (CDDL) Version 1.0 (the "License"). You may not use this file + except in compliance with the License. You may obtain a copy of + the License at + + https://opensource.org/licenses/CDDL-1.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. +#/ + +# AST node (non-block) +;struct Node { + tnslc.parse.Token + # associated token to the node + data, + + ~{}Node + # sub-nodes + sub +} + +# AST node (block) +;struct BlockNode extends Node { + super, + + ~{}Node + # block inputs and outputs + blockIn, + blockOut, + + ~{}tnslc.parse.Token + # block qualifiers + blockQs +} + +# Node methods +/; method Node + + /; operator delete + ;delete this.data, this.sub + ;/ + + /; push_sub (Node node) [uint] + ;uint len = this.sub.length + ;alloc this.sub, len + 1 + ;this.sub{len} = node + ;return len + 1 + ;/ +;/ + +# Extended block node methods +/; method BlockNode + + /; operator delete + ;super() + ;delete this.blockQs, this.blockIn, this.blockOut + ;/ + + /; push_blockQ (tnslc.parse.Token token) [uint] + ;uint len = this.blockQs.length + ;alloc this.blockQs, len + 1 + ;this.blockQs{len} = token + ;return len + 1 + ;/ + + /; push_blockIn (Node node) [uint] + ;uint len = this.blockIn.length + ;alloc this.blockIn, len + 1 + ;this.blockIn{len} = node + ;return len + 1 + ;/ + + /; push_blockOut (Node node) [uint] + ;uint len = this.blockOut.length + ;alloc this.blockOut, len + 1 + ;this.blockOut{len} = node + ;return len + 1 + ;/ +;/ \ No newline at end of file diff --git a/tnslc/src/compile/arch/arch.tnsl b/tnslc/src/compile/arch/arch.tnsl new file mode 100644 index 0000000..00403be --- /dev/null +++ b/tnslc/src/compile/arch/arch.tnsl @@ -0,0 +1,25 @@ +/## + Copyright 2020-2021 Kyle Gunger + + Licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE + (CDDL) Version 1.0 (the "License"). You may not use this file + except in compliance with the License. You may obtain a copy of + the License at + + https://opensource.org/licenses/CDDL-1.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. +#/ + +/; export module arch + :import "common.tnsl" + :import "isa_arm.tnsl" + :import "isa_risc_v.tnsl" + :import "isa_x86.tnsl" +;/ \ No newline at end of file diff --git a/tnslc/src/compile/arch/common.tnsl b/tnslc/src/compile/arch/common.tnsl new file mode 100644 index 0000000..24f1964 --- /dev/null +++ b/tnslc/src/compile/arch/common.tnsl @@ -0,0 +1,20 @@ +/## + Copyright 2020-2021 Kyle Gunger + + Licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE + (CDDL) Version 1.0 (the "License"). You may not use this file + except in compliance with the License. You may obtain a copy of + the License at + + https://opensource.org/licenses/CDDL-1.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. +#/ + +; struct instruction {} \ No newline at end of file diff --git a/tnslc/src/compile/arch/isa_arm.tnsl b/tnslc/src/compile/arch/isa_arm.tnsl new file mode 100644 index 0000000..65ea8eb --- /dev/null +++ b/tnslc/src/compile/arch/isa_arm.tnsl @@ -0,0 +1,18 @@ +/## + Copyright 2020-2021 Kyle Gunger + + Licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE + (CDDL) Version 1.0 (the "License"). You may not use this file + except in compliance with the License. You may obtain a copy of + the License at + + https://opensource.org/licenses/CDDL-1.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. +#/ diff --git a/tnslc/src/compile/arch/isa_risc_v.tnsl b/tnslc/src/compile/arch/isa_risc_v.tnsl new file mode 100644 index 0000000..65ea8eb --- /dev/null +++ b/tnslc/src/compile/arch/isa_risc_v.tnsl @@ -0,0 +1,18 @@ +/## + Copyright 2020-2021 Kyle Gunger + + Licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE + (CDDL) Version 1.0 (the "License"). You may not use this file + except in compliance with the License. You may obtain a copy of + the License at + + https://opensource.org/licenses/CDDL-1.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. +#/ diff --git a/tnslc/src/compile/arch/isa_x86.tnsl b/tnslc/src/compile/arch/isa_x86.tnsl new file mode 100644 index 0000000..65ea8eb --- /dev/null +++ b/tnslc/src/compile/arch/isa_x86.tnsl @@ -0,0 +1,18 @@ +/## + Copyright 2020-2021 Kyle Gunger + + Licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE + (CDDL) Version 1.0 (the "License"). You may not use this file + except in compliance with the License. You may obtain a copy of + the License at + + https://opensource.org/licenses/CDDL-1.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. +#/ diff --git a/tnslc/src/compile/compile.tnsl b/tnslc/src/compile/compile.tnsl new file mode 100644 index 0000000..0071cca --- /dev/null +++ b/tnslc/src/compile/compile.tnsl @@ -0,0 +1,22 @@ +/## + Copyright 2020-2021 Kyle Gunger + + Licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE + (CDDL) Version 1.0 (the "License"). You may not use this file + except in compliance with the License. You may obtain a copy of + the License at + + https://opensource.org/licenses/CDDL-1.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. +#/ + +/; export module compile + :include "arch" +;/ diff --git a/tnslc/src/flags/flags.tnsl b/tnslc/src/flags/flags.tnsl new file mode 100644 index 0000000..742165b --- /dev/null +++ b/tnslc/src/flags/flags.tnsl @@ -0,0 +1,19 @@ +/## + Copyright 2020-2021 Kyle Gunger + + Licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE + (CDDL) Version 1.0 (the "License"). You may not use this file + except in compliance with the License. You may obtain a copy of + the License at + + https://opensource.org/licenses/CDDL-1.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. +#/ + diff --git a/tnslc/src/parse/parse.tnsl b/tnslc/src/parse/parse.tnsl new file mode 100644 index 0000000..1c81394 --- /dev/null +++ b/tnslc/src/parse/parse.tnsl @@ -0,0 +1,22 @@ +/## + Copyright 2020-2021 Kyle Gunger + + Licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE + (CDDL) Version 1.0 (the "License"). You may not use this file + except in compliance with the License. You may obtain a copy of + the License at + + https://opensource.org/licenses/CDDL-1.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. +#/ + +/; export module parse + :import 'token.tnsl' +;/ \ No newline at end of file diff --git a/tnslc/src/parse/token.tnsl b/tnslc/src/parse/token.tnsl new file mode 100644 index 0000000..816177a --- /dev/null +++ b/tnslc/src/parse/token.tnsl @@ -0,0 +1,35 @@ +/## + Copyright 2020-2021 Kyle Gunger + + Licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE + (CDDL) Version 1.0 (the "License"). You may not use this file + except in compliance with the License. You may obtain a copy of + the License at + + https://opensource.org/licenses/CDDL-1.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. +#/ + +;struct Token { + uint + type, + line, + char, + + ~{}char + data +} + +/; method Token + + /; operator delete + ;delete this.data + ;/ +;/ \ No newline at end of file diff --git a/tnslc/src/tnslc.tnsl b/tnslc/src/tnslc.tnsl new file mode 100644 index 0000000..9f3d53a --- /dev/null +++ b/tnslc/src/tnslc.tnsl @@ -0,0 +1,48 @@ +/## + Copyright 2020-2021 Kyle Gunger + + Licensed under the COMMON DEVELOPMENT AND DISTRIBUTION LICENSE + (CDDL) Version 1.0 (the "License"). You may not use this file + except in compliance with the License. You may obtain a copy of + the License at + + https://opensource.org/licenses/CDDL-1.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. +#/ + +/; export module tnslc + :import "flags" + :import "parse" + :import "ast" + :import "compile" +;/ + +:using 'tnsl' +:using 'tnslc' + +/; main (~{}{}char args) [int] + ;var arg_list = flags.parse(args) + + ;var token_list = parse.tokenize(arg_list) + + ;var ast = ast.generate(token_list) + + /; try + ;var out_file = file.open(arg_list.output_file_path) + ;var data = compile.generate(arg_list, ast) + + ;out_file.write(data) + ;out_file.close() + + ;; catch (error e) + ;io.stdout.write(e.msg) + ;return e.code + ;/ +;/ \ No newline at end of file -- cgit v1.2.3