diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-11-07 08:10:47 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-11-07 08:10:47 +0100 |
commit | 8a7d756c01d63761226725288caba0a1563389b0 (patch) | |
tree | 8c62cf1fab4e1c6ee7f9080769838b6e798756c9 /expressions.cpp | |
parent | 2ed38e4d01d73d62b29a28d7540ca515f9ff3b09 (diff) | |
download | sciteco-8a7d756c01d63761226725288caba0a1563389b0.tar.gz |
expression stack fixes and some arithmetic commands
Diffstat (limited to 'expressions.cpp')
-rw-r--r-- | expressions.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/expressions.cpp b/expressions.cpp index 1e48d3e..8c8fb0c 100644 --- a/expressions.cpp +++ b/expressions.cpp @@ -23,7 +23,7 @@ Expressions::set_radix(gint r) gint64 Expressions::push(gint64 number) { - while (numbers.peek() == G_MAXINT64) + while (numbers.items() > 0 && numbers.peek() == G_MAXINT64) pop_num(); push(OP_NUMBER); @@ -87,8 +87,10 @@ Expressions::push(Expressions::Operator op) Expressions::Operator Expressions::push_calc(Expressions::Operator op) { + int first = first_op(); + /* calculate if op has lower precedence than op on stack */ - if (operators.peek(first_op()) <= op) + if (first && operators.peek(first) <= op) calc(); return push(op); |