217 lines
4.7 KiB
Markdown
217 lines
4.7 KiB
Markdown
## v4.7.0
|
|
|
|
### New Features
|
|
|
|
- Support parser rule user code blocks in tree generation mode.
|
|
|
|
### Fixes
|
|
|
|
- propane.vim: do not highlight rule components as propane keywords
|
|
|
|
## v4.6.0
|
|
|
|
### New Features
|
|
|
|
- Add lexer user code API to access matched input text positions
|
|
- Track rule component text positions and add parser user code API to access
|
|
|
|
### Fixes
|
|
|
|
- Fixed a few user guide and source comments related to text input positions
|
|
|
|
## v4.5.0
|
|
|
|
### New Features
|
|
|
|
- Add `noline` grammar statement to skip emitting `#line` directives
|
|
- Attempt to autodetect target language (D/C++) in extra/vim/syntax/propane.vim
|
|
|
|
### Fixes
|
|
|
|
- Fix #line reset directives
|
|
- Update keyword list in extra/vim/syntax/propane.vim
|
|
- Fix propane.vim keyword detection
|
|
|
|
## v4.4.0
|
|
|
|
### New Features
|
|
|
|
- Add p_value_get() / p_value_get_XXX() accessors
|
|
|
|
## v4.3.0
|
|
|
|
### New Features
|
|
|
|
- Use #line for user code blocks to report input grammar position for errors.
|
|
|
|
## v4.2.0
|
|
|
|
### New Features
|
|
|
|
- Add support for a custom lex function.
|
|
|
|
## v4.1.0
|
|
|
|
### New Features
|
|
|
|
- Add `p_context_delete()` and `p_tree_delete()` for D targets.
|
|
|
|
## v4.0.0
|
|
|
|
### New Features
|
|
|
|
- Add `context_user_fields` statement to allow custom context user fields.
|
|
- Add `token_user_fields` statement to allow custom token user fields.
|
|
- Add `on_token_node` statement to allow custom code when constructing token nodes.
|
|
- Add `free_token_node` statement to allow custom code when freeing token nodes.
|
|
- Add `p_context_delete()`.
|
|
- Allow `drop` patterns to execute lexer user code blocks.
|
|
|
|
### Breaking Changes
|
|
|
|
- Replace `p_context_init()` with `p_context_new()` and `p_context_delete()`.
|
|
- Renamed `p_free_tree()` to `p_tree_delete()`.
|
|
- The `free_token_node` statement now takes a user code block instead of a
|
|
function name parameter.
|
|
|
|
## v3.0.0
|
|
|
|
### New Features
|
|
|
|
- Add support for multiple starting rules (#38)
|
|
- Add `p_free_tree()` functions to reclaim generated tree memory
|
|
- Add `free_token_node` grammar statement to reclaim user-allocated memory stored in a Token tree node `pvalue` field
|
|
- Add valgrind memory leak tests to unit tests
|
|
- Fix build issues for C++ to officially support C++ target output
|
|
|
|
### Improvements
|
|
|
|
- Document `p_lex()` and `p_token_info_t` in user guide (#37)
|
|
|
|
### Breaking Changes
|
|
|
|
- Rename AST generation mode to tree generation mode (see [UPGRADING.md](UPGRADING.md))
|
|
|
|
## v2.3.0
|
|
|
|
### New Features
|
|
|
|
- Add \D, \S, \w, \W special character classes
|
|
|
|
### Improvements
|
|
|
|
- Include line numbers for pattern errors
|
|
- Improve performance in a few places
|
|
- Parallelize parser table generation on Linux hosts
|
|
- Add github workflow to run unit tests
|
|
|
|
### Fixes
|
|
|
|
- Fix a couple clang warnings for C backend
|
|
- Fix C backend not fully initializing pvalues when multiple ptypes are used with different sizes.
|
|
- Fix some user guide examples
|
|
|
|
## v2.2.1
|
|
|
|
### Fixes
|
|
|
|
- Fix GC issue for D backend when AST is enabled (#36)
|
|
|
|
## v2.2.0
|
|
|
|
### Improvements
|
|
|
|
- Allow multiple lexer modes to be specified for a lexer pattern (#35)
|
|
- Document p_decode_code_point() API function (#34)
|
|
|
|
## v2.1.1
|
|
|
|
### Fixes
|
|
|
|
- Field aliases for AST node fields could alias incorrect field when multiple rule alternatives present for one rule set (#33)
|
|
|
|
## v2.1.0
|
|
|
|
### Improvements
|
|
|
|
- Report rule name and line number for conflicting AST node field positions errors (#32)
|
|
|
|
## v2.0.0
|
|
|
|
### Improvements
|
|
|
|
- Log conflicting rules on reduce/reduce conflict (#31)
|
|
- Use 1-based row and column values for position values (#30)
|
|
|
|
### Fixes
|
|
|
|
- Fix named optional rules (#29)
|
|
|
|
### Upgrading
|
|
|
|
- Adjust all uses of p_position_t row and col values to expect 1-based instead
|
|
of 0-based values.
|
|
|
|
## v1.5.1
|
|
|
|
### Improvements
|
|
|
|
- Improve performance (#28)
|
|
|
|
## v1.5.0
|
|
|
|
### New Features
|
|
|
|
- Track start and end text positions for tokens and rules in AST node structures (#27)
|
|
- Add warnings for shift/reduce conflicts to log file (#25)
|
|
- Add -w command line switch to treat warnings as errors and output to stderr (#26)
|
|
- Add rule field aliases (#24)
|
|
|
|
### Improvements
|
|
|
|
- Show line numbers of rules on conflict (#23)
|
|
|
|
## v1.4.0
|
|
|
|
### New Features
|
|
|
|
- Allow user to specify AST node name prefix or suffix
|
|
- Allow specifying the start rule name
|
|
- Allow rule terms to be marked as optional
|
|
|
|
### Improvements
|
|
|
|
- Give a better error message when a referenced ptype has not been declared
|
|
|
|
## v1.3.0
|
|
|
|
### New Features
|
|
|
|
- Add AST generation (#22)
|
|
|
|
## v1.2.0
|
|
|
|
### New Features
|
|
|
|
- Allow one line user code blocks (#21)
|
|
- Add backslash escape codes (#19)
|
|
- Add API to access unexpected token found (#18)
|
|
- Add token_names API (#17)
|
|
- Add D example to user guide for p_context_init() (#16)
|
|
- Allow user termination from lexer code blocks (#15)
|
|
|
|
### Fixes
|
|
|
|
- Fix generator hang when state transition cycle is present (#20)
|
|
|
|
## v1.1.0
|
|
|
|
### New Features
|
|
|
|
- Add user parser terminations (#13)
|
|
- Document generated parser API in user guide (#14)
|
|
|
|
## v1.0.0
|
|
|
|
- Initial release
|