diff options
author | Kyle Gunger <kgunger12@gmail.com> | 2021-11-02 13:57:27 -0400 |
---|---|---|
committer | Kyle Gunger <kgunger12@gmail.com> | 2021-11-02 13:57:27 -0400 |
commit | 92b72f0357c553add6f010626e85268428ad5eb5 (patch) | |
tree | 0c1083a9fd61371eb0ac7f335691c6dc7c793ae5 /src | |
parent | e18043e5ac4e09870e9f5b1498e0ef954064ee49 (diff) |
[EXEC] General changes, refactoring
Diffstat (limited to 'src')
-rw-r--r-- | src/exec.go | 4 | ||||
-rw-r--r-- | src/texec/eval.go | 7 | ||||
-rw-r--r-- | src/texec/world.go | 7 | ||||
-rw-r--r-- | src/texec/worldbuilder.go | 35 | ||||
-rw-r--r-- | src/tparse/tree-statement.go | 4 |
5 files changed, 43 insertions, 14 deletions
diff --git a/src/exec.go b/src/exec.go index 79584ce..b9a74f8 100644 --- a/src/exec.go +++ b/src/exec.go @@ -26,7 +26,7 @@ func main() { flag.Parse() - world := texec.BuildWorld(*inputFile) + root := texec.BuildRoot(*inputFile) - texec.EvalTNSL(world, *progFlags) + texec.EvalTNSL(&root, *progFlags) }
\ No newline at end of file diff --git a/src/texec/eval.go b/src/texec/eval.go index 9d2e64d..f863c5d 100644 --- a/src/texec/eval.go +++ b/src/texec/eval.go @@ -17,8 +17,13 @@ package texec import "strings" +import "tparse" + +func isMain(artifact tparse.Node) bool { + return false +} // EvalTNSL starts the evaluation on the World's main function with the given flags passed to the program -func EvalTNSL(world *TWorld, f string) { +func EvalTNSL(world *TModule, f string) { flags := strings.Split(f, " ") }
\ No newline at end of file diff --git a/src/texec/world.go b/src/texec/world.go index d87119d..86660bc 100644 --- a/src/texec/world.go +++ b/src/texec/world.go @@ -40,14 +40,9 @@ type TContext struct { // TModule represents a collection of files and sub-modules in a program type TModule struct { + Name string Files []tparse.Node Globals []map[string]TVariable Sub []TModule } -// TWorld represents the full program -type TWorld struct { - Modules []TModule - MainPath TPath - MainFunc tparse.Node -} diff --git a/src/texec/worldbuilder.go b/src/texec/worldbuilder.go index 8e5648f..e0fefa4 100644 --- a/src/texec/worldbuilder.go +++ b/src/texec/worldbuilder.go @@ -30,7 +30,36 @@ func parseFile(p string) tparse.Node { return tparse.MakeTree(&(tokens), p) } -// BuildWorld creates a new TWorld by parsing a main file and recursively parsing imports. -func BuildWorld(file string) TWorld { - return nil +func buildModule(module tparse.Node) TModule { + out := TModule{} + + for n := 0 ; n < len(module.Sub) ; n++ { + + switch module.Sub[n].Data.Type { + case 11: + + case 10: + + } + } + + return out +} + +// BuildRoot builds the root module, ready for eval +func BuildRoot(file tparse.Node) TModule { + out := TModule{} + + out.Files = append(out.Files, file) + + for n := 0 ; n < len(file.Sub) ; n++ { + + switch file.Sub[n].Data.Type { + case 11: + + case 10: + } + } + + return out } diff --git a/src/tparse/tree-statement.go b/src/tparse/tree-statement.go index 897f30d..ec6230c 100644 --- a/src/tparse/tree-statement.go +++ b/src/tparse/tree-statement.go @@ -146,7 +146,7 @@ func parseBlock(tokens *[]Token, tok, max int) (Node, int) { // This should work once isTypeThenValue properly functions func parseStatement(tokens *[]Token, tok, max int) (Node, int) { out := Node{} - out.Data = Token{Type: 11, Data: "value"} + out.Data = Token{Type: 10, Data: "value"} var tmp Node // Check for keyword, definition, then if none of those apply, assume it's a value. @@ -262,7 +262,7 @@ func keywordStatement(tokens *[]Token, tok, max int) (Node, int) { // Should work, but none of this is tested. func parseDef(tokens *[]Token, tok, max int) (Node, int) { - out := Node{Data: Token{11, "define", 0, 0}} + out := Node{Data: Token{10, "define", 0, 0}} var tmp Node tmp, tok = parseType(tokens, tok, max, false) |