filters: fix the precedence of ';' #122
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In 6d74e60, the precedence of ';' has implicitly changed for filter rules, changing the meaning of filter expressions:
The expression
not program("a"); message("b");
should have the following interpretation:(not program("a")) and message("b")
.Due to accidentally changed precedence of ';', currently it is interpreted as
not (message("a") and message("b"))
.This patch recovers the original precedence, but also introduces precedence and left associativity for other semicolon-separated rules.
All the other (non-filter) uses of the ';' token are unambiguous, so this declaration won't interfere with those rules.
Related issue syslog-ng/syslog-ng#4980