Releases: oowekyala/intellij-javacc
Releases · oowekyala/intellij-javacc
v1.2
What's new:
- JJTree and JavaCC grammars now are more clearly cut. Before this release, *.jjt and *.jj files were both treated as JJTree grammars (because JJTree is a clean superset of JavaCC), and features of JJTree insight were always available. For reasons of code organisation and to enable better error reporting, the JJTree features are now only enabled in *.jjt files, usage in *.jj files raise an error and a suggestion to rename the file. You can configure different file patterns in Settings | Editor | File Types.
- A bunch of features:
- Links to the grammar for a JJTree node from their corresponding Java node class if it can be found in the project.
- Link from the parser file to the grammar.
- Completion suggestions for regex productions, options, and lexical states
- Options are now documented.
- JJTree inline node declarations are now in the structure view
- Prettier icons; the file icons are based on a JavaCC logo
- Folding of code generated by JJTree in .jj files (
@bgen
sections) - Find usages, completion, and summary documentation for lexical states
- Implicit tokens now also have a link in the documentation of BNF expansions
- Some performance optimisations
What's fixed:
- Parser tolerance to incomplete code has been significantly improved. Starting to type a new production should now never break the rest of the grammar
- Completion result insertion making a mess when the tail characters are already present
- Unnecessary parentheses inspection wasn't initialised correctly
- Rename refactoring was broken since 1.1. There are still some things to do to make it smarter.
v1.1
Main topic: improved support for the lexer generator.
What's new:
- Completion of string literals with known string tokens!
- Tokens declared in BNF expansions are now in the structure view (even the implicit ones), and documented
- 100% coverage of JavaCC semantic errors
- Left-recursive production detection, and regex loop detection
- Usage of string tokens that would be matched as another token now trigger a warning. "Token can never be matched" inspection has been toned down because it triggered false positives.
What's fixed:
- Many misunderstandings of the JavaCC spec, in particular regarding string token definitions, which it treats very specially.
- Countless false positives of "token name has not been defined"
- False positives with "Token can never be matched" inspection
- "Consecutive parser actions unit" inspection reporting on all siblings
- Significant performance issues in files with many tokens
- Caching issues, which caused changes to not be refreshed often enough
Release 1.0
I think we're good for release 1.0!
What's new:
- Significantly improved coverage of JavaCC errors and warnings
- The TOKEN_MGR_DECLS and the parser class declaration are now in the structure view
- Some new live templates allow to enter the PARSER_BEGIN section and options section easily
- Intentions and inspections:
- All inspections can now be suppressed with a comment
- Add "Lookahead is not at choice point" inspection
- Improve "Unnecessary angled braces" inspection to handle token references as well
- Add "Add name to regular expression" intention, and "Remove name from regular expression"
What's fixed:
- Fix inconsistencies in Find Usages (#11)
- Improve resilience of the parser in token specifications
1.0-BETA.2
Changelog since last release:
- Improved JJTree support:
- Documentation of productions features a link to the doc of the node class if it's found
- Added gutter links to partial declarations of the node if they exist
- Rename refactoring now supports renaming JJTree nodes, taking care of all productions that generate it.
- Other improvements:
- Duplicate productions are now reported as an error
- Added an intention to jump to the parser file if it's available
- Fixed some bugs:
- Documentation for inline nodes (of the form "expansion #NodeName") is now resolved properly
- Display name of some tokens in the structure view
- Display name of option types
BETA.1
Still a beta version. Changelog:
- Added some inspections:
- Unused production: detects productions unreachable from the root production
- Unused private regex: detects private regexes unreachable from any token definition
- Empty parser actions
- Consecutive parser actions
- Added some intention actions:
- Convert [] to ()?
- Convert ()? to []
- Fixed some bugs:
- Scope of private regexes: they can be used even in regexes defined in BNF expansions
- TokenCanNeverBeMatchedInspection shouldn't report private regexes: it only matters where they're used, not where they're defined
- Intentions "Inline token reference" and "Replace literal token with reference" were broken since 44a641f.
- Added some tests