diff options
Diffstat (limited to 'src/texec')
-rw-r--r-- | src/texec/eval.go | 17 | ||||
-rw-r--r-- | src/texec/libtnsl.go | 40 | ||||
-rw-r--r-- | src/texec/world.go | 7 |
3 files changed, 59 insertions, 5 deletions
diff --git a/src/texec/eval.go b/src/texec/eval.go new file mode 100644 index 0000000..8b22f01 --- /dev/null +++ b/src/texec/eval.go @@ -0,0 +1,17 @@ +/* + 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. +*/ + +package texec diff --git a/src/texec/libtnsl.go b/src/texec/libtnsl.go index c77bd25..7bf4848 100644 --- a/src/texec/libtnsl.go +++ b/src/texec/libtnsl.go @@ -16,8 +16,44 @@ package texec +import "fmt" + /** - This file represents the 'tnsl' module and a key few functions. - These functions should be all that is needed to use the compiler, and no more. + libtnsl module stub. Contains only parts of the io sub-module. + Parts included: + - io.print + - io.println + - io.open_file + - io.File API for file objects */ +// tells if the stub supports a function +func tnslResolve(callPath TPath) bool { + l := len(callPath.Module) + if l < 2 || l > 3 || callPath.Module[0] != "tnsl" || callPath.Module[1] != "io" { + return false + } + if l > 2 && callPath.Module[2] != "File" { + return false + } + + if l > 2 { + if callPath.Artifact == "write" || callPath.Artifact == "read" || callPath.Artifact == "close" { + return true; + } + } else { + if callPath.Artifact == "print" || callPath.Artifact == "println" || callPath.Artifact == "open_file" { + return true; + } + } + + return false +} + +// evaluate a function call. +// out is the variable out (if any) +// in is the variable in (if any) +// callPath is the function being called. +func tnslEval(out, in *TVaraiable, callPath TPath) { + +}
\ No newline at end of file diff --git a/src/texec/world.go b/src/texec/world.go index 7f51c13..6fa6327 100644 --- a/src/texec/world.go +++ b/src/texec/world.go @@ -25,13 +25,14 @@ type TVariable struct { // TPath represents a pointer to the current module and file // that the thread is working in. type TPath struct { - module []string, - file string + Module []string, + Artifact string } // TContext represents a single thread. type TContext struct { CallStack []Node, + CallEnv []TPath, VarMap []map[string]TVariable } @@ -47,4 +48,4 @@ type TWorld struct { Modules []TModule, MainPath TPath, MainFunc Node -}
\ No newline at end of file +} |