From cb6e496d5fef85a7305db64e0874fdb0b78fd04b Mon Sep 17 00:00:00 2001 From: Jannick Date: Wed, 12 Dec 2018 08:38:19 +1100 Subject: Backport: Bug [#2069]. LexCPP: fix bug in arithmetic calculation by adding precedence levels The precedence for the implemented arithmetic operators +,-,%,*,/ is added, such that the calculations produce the correct results honoring the standard precedence levels. * Replace characterset setArithmeticOp by setAddOp and setMultOp. * Replace precedence precArithmetic by precMult and precAdd * (EvaluateTokens): Apply new precedences. This fixes the bug in the arithmetic calculation: // lines with 'false' should not be highlighted, // those with 'true' should be. #if 1 + 2 * 3 == 9 false #endif #if (1 + 2) * 3 == 9 true #endif #if 1 + 2 * 3 == 7 true #endif #if 1 == 5 % 2 true #endif #if 6 - 7 == -1 true #endif #if 25 / 5 * 5 == 25 true #endif #if 1 + 2 * 3 % 2 == 1 true #endif #if 1 + 2 * 3 % 2 == 2 + 1 false #endif Backport of changeset 7184:48861f53f719. --- doc/ScintillaHistory.html | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'doc') diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index b8225bcc5..1cc91e184 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -557,11 +557,16 @@
  • The Bash lexer implements substyles for multiple sets of keywords and supports SCI_PROPERTYNAMES. Bug #2054. +
  • The C++ lexer interprets continued preprocessor lines correctly by reading all of the logical line. Bug #2062.
  • +
  • + The C++ lexer interprets preprocessor arithmetic expressions containing multiplicative and additive + operators correctly by following operator precedence rules. + Bug #2069.
  • Notify with SC_UPDATE_SELECTION when user performs a multiple selection add. -- cgit v1.2.3