diff options
Diffstat (limited to 'src/tparse/tree-value.go')
-rw-r--r-- | src/tparse/tree-value.go | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/tparse/tree-value.go b/src/tparse/tree-value.go index ac91873..d851fdc 100644 --- a/src/tparse/tree-value.go +++ b/src/tparse/tree-value.go @@ -24,6 +24,8 @@ var UNARY_PRE = map[string]int { "++": 2, "--": 2, "!": 6, + "len": 0, + "-": 0, } var UNARY_POST = map[string]int { @@ -211,7 +213,14 @@ func parseBinaryOp(tokens *[]Token, tok, max int) (Node) { } } else if t.Type == AUGMENT { order, prs := ORDER[t.Data] - if prs == false || curl > 0 || brak > 0 || parn > 0 { + if t.Data == "-" { + _, prs := ORDER[(*tokens)[tok - 1].Data] + if prs || (*tokens)[tok - 1].Data == "return" { + continue + } else if order > highOrder { + high, highOrder = tok, order + } + } else if prs == false || curl > 0 || brak > 0 || parn > 0 { continue } else if order > highOrder { high, highOrder = tok, order |