|
| 1 | +0.8.14 - 2023-06-21 |
| 2 | + |
| 3 | +- Added regression tests t12 to t15, all of which are C++ tests that test |
| 4 | + common data in the same manner as we already tested symbol data. |
| 5 | + |
| 6 | +- fix regression on moving data, specifying a move snippet for the common |
| 7 | + type would invoke it from the wrong source location. |
| 8 | + |
| 9 | +- fix for scanner pattern matches without sym but with common data |
| 10 | + such matches would invoke the common data destructor twice, once following |
| 11 | + the pattern action, and possibly again if the stack was reset or |
| 12 | + cleaned up before the next token. |
| 13 | + |
| 14 | +- fix for generated code skipping over initializer for "need_common_move" |
| 15 | + variable (C++ only issue.) |
| 16 | + |
| 17 | +- fix for common move snippets not being able to use `$0` to refer to the |
| 18 | + source common data (could still use `${0}` but this is not symmetric with |
| 19 | + `%type` -- while `${0}` typically refers to common data and `$0` to sym |
| 20 | + specific data, the subject here is the data type, rather than how it is |
| 21 | + used; so consistency across `%type` and `%common_type` is preferred over |
| 22 | + the distinction between common data and symbol data.) |
| 23 | + |
| 24 | +- `<prefix>token_common_data()` |
| 25 | + Returns the common data associated with the current token. This is useful |
| 26 | + in the specific scenario of a scanner / parser combination where the parser |
| 27 | + runs into a _<PREFIX>SYNTAX_ERROR on the next token. This next token has |
| 28 | + already been scanned (and therefore its common data constructed), but has |
| 29 | + not yet moved into the parser stack. However, to report the error, the |
| 30 | + common data may be very useful. Because there is no way to access it without |
| 31 | + knowing about the implementation details of the scanner, the new |
| 32 | + `<prefix>token_common_data()` function is provided. |
| 33 | + Note that is can return NULL if there is currently no "next" token, which is |
| 34 | + most of the time. It is probably only useful in the specific scenario above, |
| 35 | + and even then only when the parser is not used stand-alone but in combination |
| 36 | + with a scanner. |
| 37 | + Please see the manual at https://carburetta.com/manual.html for details. |
| 38 | + |
| 39 | +- `%common_class` directive |
| 40 | + The `%common_class` directive is the C++ class variation for %common_type, |
| 41 | + it provides the same convenience of use as `%class` but for the common data |
| 42 | + types. |
| 43 | + Please see the manual at https://carburetta.com/manual.html for details. |
| 44 | + |
1 | 45 | 0.8.12 - 2023-06-02 |
2 | 46 |
|
3 | 47 | - `%class` directive |
|
0 commit comments