Grouping |
Top Previous Next |
Scripts > Productions > Grouping
By means of the parenthesis '(' and ')' expressions can be grouped. So the preference of concatenation can be eliminated.
Example:
("a" | "b") ("c" | "d") matches "a c", "a d", "b c" and "b d" "a" | "b" "c" | "d" matches "a", "b c" and "d"
If you forget the preference of concatenation, this can lead to astonishing results, especially, if semantic actions are involved.
Example:
{{str s;}} "a" {{s = "a"; }} | "b" {{s = "b"; }}
will result in an error message for the last line: Unknown identifier: s Implicitly the first three lines are a closed chain. Only inside of this scope the declaration of string s is valid. Correctly you have to write:
{{str s;}} ( "a" {{s = "a"; }} | "b" {{s = "b"; }} )
A different example for this is the Inner-production in the introduction. There parenthesis around "b" | "c" are necessary.
|
This page belongs to the TextTransformer Documentation |
Home Content German |