diff options
| author | Kyle Gunger <kgunger12@gmail.com> | 2021-11-03 14:02:59 -0400 | 
|---|---|---|
| committer | Kyle Gunger <kgunger12@gmail.com> | 2021-11-03 14:02:59 -0400 | 
| commit | 21fbf1493d722af5610370b25223b390ba7edbd0 (patch) | |
| tree | 12203fdfa3b47fccf37338e8bae229c4d828e705 /src/texec | |
| parent | 92b72f0357c553add6f010626e85268428ad5eb5 (diff) | |
[EXEC] Refactor, stub
+ Stub code for eval funcs added
+ Refactor of libtnsl stub
Diffstat (limited to 'src/texec')
| -rw-r--r-- | src/texec/eval.go | 50 | ||||
| -rw-r--r-- | src/texec/libtnsl.go | 9 | ||||
| -rw-r--r-- | src/texec/worldbuilder.go | 2 | 
3 files changed, 56 insertions, 5 deletions
| diff --git a/src/texec/eval.go b/src/texec/eval.go index f863c5d..769f1ee 100644 --- a/src/texec/eval.go +++ b/src/texec/eval.go @@ -19,11 +19,59 @@ package texec  import "strings"  import "tparse" +// Check if a block is the main function  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 +// Check if a block is control flow +func isCF(artifact tparse.Node) bool { + +} + +// Get the control flow's name +func cfType(artifact tparse.Node) string { + +} + +// Get type as string from nodes +func evalType(artifact tparse.Node) string { +	return "" +} +  +// Returns generated value and general "type" of value (string, number, character) +func evalLiteral(artifact tparse.Node) (interface{}, string) { + +} + +// Evaluates a definition and sets up a TVariable in the context's var map +func evalDef(artifact tparse.Node, ctx *TContext) { +	vars := len(ctx.VarMap) - 1 + +	t := evalType(artifact.Sub[0]) + +	for i := 0; i < len(artifact.Sub[1].Sub); i++ { +		if artifact.Sub[1].Sub[i].Data.Data == "=" { +			artifact.Sub[1].Sub[i].Sub[0] +		} +	} +} + +// Evaluates a value statement +func evalValue(artifact tparse.Node, ctx *TContext) { +	vars := len(ctx.VarMap) - 1 +} + +// Evaluates control flow +func evalCF(artifact tparse.Node, ctx *TContext) {} + +// Evaluate a block (Assume that all blocks have only one output for now) +func evalBlock(artifact tparse.Node, ctx *TContext) TVariable { +	 +} + + +// EvalTNSL starts the evaluation on the root TModule's main function with the given flags passed to the program  func EvalTNSL(world *TModule, f string) {  	flags := strings.Split(f, " ")  }
\ No newline at end of file diff --git a/src/texec/libtnsl.go b/src/texec/libtnsl.go index bf5fcd5..c881cea 100644 --- a/src/texec/libtnsl.go +++ b/src/texec/libtnsl.go @@ -107,8 +107,8 @@ func topen_file(in TVariable, out *TVariable) {  // tnsl.io.File.close  func tfile_close(file *TVariable) { -	if (*file).Type == "tnsl.io.File" { -		((*file).Data).(*os.File).Close() +	if file.Type == "tnsl.io.File" { +		(file.Data).(*os.File).Close()  	}  } @@ -123,9 +123,12 @@ func tfile_read(file, out *TVariable) {  // tnsl.io.File.write  func tfile_write(file, in *TVariable) { -	b := []byte{1} +	b := []byte{0}  	if in.Data == "uint8" || in.Data == "int8" {  		b[0] = (in.Data).(byte) +	} else { +		(file.Data).(*os.File).Close() +		panic(fmt.Sprintf("Failed to write to file, attempted to use unsupported type (%v)\n", out.Type))  	}  	(file.Data).(*os.File).Write(b)  } diff --git a/src/texec/worldbuilder.go b/src/texec/worldbuilder.go index e0fefa4..f3cd6e6 100644 --- a/src/texec/worldbuilder.go +++ b/src/texec/worldbuilder.go @@ -22,7 +22,7 @@ import (  )  /** -	worldbuilder.go - take in a file name and construct a TWorld based on it. +	worldbuilder.go - take in a file name and construct a root TModule based on it.  */  func parseFile(p string) tparse.Node { |