From ed2f9793fae7d1c018e3de463617339c68faa3c0 Mon Sep 17 00:00:00 2001 From: Kyle Gunger Date: Sun, 10 Apr 2022 17:30:30 -0400 Subject: A few fixes + Fix an error with if statements inside loops + Fix a parser bug with boolean operators ~ Change libtnsl stub to return integers when reading a file ~ Change libtnsl stub to return -1 on EOF or file read error --- src/texec/eval.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src/texec/eval.go') diff --git a/src/texec/eval.go b/src/texec/eval.go index fa187ef..c39d704 100644 --- a/src/texec/eval.go +++ b/src/texec/eval.go @@ -994,10 +994,16 @@ func evalValue(v tparse.Node, ctx *VarMap) *TVariable { case "<": out.Type = tBool out.Data = a.Data.(float64) < b.Data.(float64) - case ">=": + case "!>": + out.Type = tBool + out.Data = a.Data.(float64) <= b.Data.(float64) + case "!<": out.Type = tBool out.Data = a.Data.(float64) >= b.Data.(float64) - case "<=": + case ">==": + out.Type = tBool + out.Data = a.Data.(float64) >= b.Data.(float64) + case "<==": out.Type = tBool out.Data = a.Data.(float64) <= b.Data.(float64) } @@ -1081,7 +1087,13 @@ func evalCF(v tparse.Node, ctx *VarMap) (bool, TVariable, int) { if val.Data.(bool) == true { i++ - for ;i < len(v.Sub) && getNames(v.Sub[i])[0] == "else"; i++ {} + for ;i < len(v.Sub) && v.Sub[i].Data.Data == "block"; { + if getNames(v.Sub[i])[0] == "else" { + i++ + } else { + break + } + } if i < len(v.Sub) { i-- -- cgit v1.2.3