[gnome-calculator] Fixed incorrect percentage precedence handling (fixes #236, fixes #275)
- From: Robert Roth <robertroth src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calculator] Fixed incorrect percentage precedence handling (fixes #236, fixes #275)
- Date: Fri, 13 May 2022 12:10:17 +0000 (UTC)
commit 5887d8a0678955d6a8f732f19c2a0ddf0aa4fc97
Author: Robert Roth <robert roth off gmail com>
Date: Fri May 13 15:10:06 2022 +0300
Fixed incorrect percentage precedence handling (fixes #236, fixes #275)
lib/equation-parser.vala | 6 ++++--
tests/test-equation.vala | 5 +++++
2 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/lib/equation-parser.vala b/lib/equation-parser.vala
index c98f31fa..6445d79f 100644
--- a/lib/equation-parser.vala
+++ b/lib/equation-parser.vala
@@ -1177,6 +1177,8 @@ public class Parser
return Precedence.CONVERT;
if (type == LexerTokenType.SHIFT_LEFT || type == LexerTokenType.SHIFT_RIGHT)
return Precedence.SHIFT;
+ if (type == LexerTokenType.L_R_BRACKET || type == LexerTokenType.R_R_BRACKET)
+ return Precedence.DEPTH;
return Precedence.TOP;
}
@@ -1889,7 +1891,7 @@ public class Parser
return true;
}
- node.precedence = Precedence.PERCENTAGE;
+ node.precedence = make_precedence_p (Precedence.PERCENTAGE);
node.do_percentage = true;
return true;
}
@@ -1932,7 +1934,7 @@ public class Parser
return true;
}
- node.precedence = Precedence.PERCENTAGE;
+ node.precedence = make_precedence_p (Precedence.PERCENTAGE);
node.do_percentage = true;
return true;
}
diff --git a/tests/test-equation.vala b/tests/test-equation.vala
index cee344dc..336708c1 100644
--- a/tests/test-equation.vala
+++ b/tests/test-equation.vala
@@ -422,6 +422,11 @@ private void test_equations ()
test ("100−1%", "99", 0);
test ("100×1%", "1", 0);
test ("100÷1%", "10000", 0);
+ test ("1+100%", "2", 0);
+ test ("(1+100%)", "2", 0);
+ test ("(1+100%)^2", "4", 0);
+ test ("(1+100%)^2", "4", 0);
+ test ("(((100−20)−50%)+20)", "60", 0);
/* Factorial */
test ("0!", "1", 0);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]