diff options
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 { |