Skip to content

Latest commit

 

History

History
356 lines (307 loc) · 16 KB

CHANGELOG.md

File metadata and controls

356 lines (307 loc) · 16 KB

Grammar-Kit Changelog

  • JFlex: update library from jflex-1.9.1 to jflex-1.9.2 #349
  • Update IntelliJ Platform to 2023.3
  • Compatibility: IntelliJ IDEA 2024.2
  • BNF Highlighting: highlight pinned elements re-using Language Defaults | Identifiers | Reassigned local variable instead of custom setting
  • Context menu: Fleet: Generate Parser Code
  • Context menu: Fleet: Generate JFlex Lexer
  • Context menu: Fleet: Run JFlex Generator
  • JFlex: complete classes in java references
  • JFlex: support generic java class names #333
  • JFlex: extract skeleton from jflex jar #332
  • JFlex: update library from 1.7.0-2 to jflex-1.9.1 #325
  • JFlex: support both Velocity 1.7 and 2.3 (IJ 232+) #331
  • Update IntelliJ Platform to 2022.3.1
  • Fixed Exception with 2023.1 EAP: "Do not use constructor injection" #323
  • Fixed IAE: FileEditorManagerImpl.$$$reportNull$$$0 (EA-746745)
  • Fixed PIEAE: CompositePsiElement.getContainingFile (EA-746675)
  • Generator: cache NEXT to avoid freezes
  • Generator: avoid java-api in standalone mode #278
  • Generator: fix NPE for "exact-types" + factory method #286
  • Generator: fix missing @Override on visitor methods
  • Generator: type annotations support (ASM)
  • JFlex: update downloadable lib url #264
  • Plugin: move java-related extensions to optional config #261
  • Editor: do not resolve meta rule parameters to rules
  • LivePreview: problem with meta rules #254
  • Generator: add missing space after comma in types
  • Generator: fix double annotations for compiled elements (#251)
  • Generator: add override check if mixin present
  • Generator: detailed warning on incorrect method spec (#252)
  • Generator: add type annotations (in IDE only)
  • Generator: add @override to visitor methods
  • Generator: do not force child expr consume-type in a non-expr context
  • Generator: skip "upper" rules in containing rules PSI (#248)
  • Generator: switch default java version to 11
  • Generator: use same charset as bnf explicitly
  • Generator: introduce generate=[fqn="yes/no"] option
  • Editor: highlight missing external methods (#242)
  • Editor: more class references in strings
  • Editor: in-place meta arg rename
  • Editor: fix "redundant character escape" warning (#243)
  • Compatibility: IntelliJ IDEA 2020.3
  • Generator: fix an endless cycle on cyclic inheritance (#234)
  • Generator: skip sections for string-matched tokens (#231)
  • GPUB: fix pinned upper rules error reporting
  • Compatibility: IntelliJ IDEA 2020.1
  • Compatibility: IntelliJ IDEA 2019.3 EAP
  • Generator: overridable parse_root_ and static parse_root_ methods
  • Generator: support package prefixes
  • JFlex: move generator output to Messages tool window
  • JFlex: suppress all inspections in injected fragments
  • Generator: "extraRoot" attribute to explicitly mark a rule as such
  • Generator: method mixins with throws list
  • Generator: method mixins with generic parameters
  • RGH: cardinality calculation fix for meta rules usages
  • Plugin: switch to year-based versions from least "compatible IDE" versions
  • GPUB: extract extend_marker_impl and improve error elements handling
  • Generator: fix base class calculation for merged AST and PSI
  • NPE: JFlexStateUsageSearcher.processQuery
  • Generator: generate Java 8 syntax: generate=[java="8"]
  • Generator: generate TokenSets for token choices: generate=[token-sets="yes"]
  • Generator: wrap anonymous classes with functions
  • RGH: fix left rule with several usage detected as recursive
  • Editor: Move Element Left/Right action in BNF
  • Editor: convert expr? to [expr] and back intention (#183)
  • Generator: FIRST check with the exact consumeTokenType (#185)
  • Generator/PSI: parameter annotations
  • GPUB: configurable token-advancer
  • Editor: inject Regexp in BNF and Java in JFlex
  • Generator: less markers & less lines in generated code
  • Generator: improve target dir detection, refresh files faster
  • Generator: FIRST check external rules with non-external predicates
  • GPUB: cleanup and error reporting tweaks
  • GPUB: re-check recoverWhile condition after advance when recovering
  • Generator: fix nested metas generation once again
  • Editor: fix rule attrs being shown in File Structure (improves performance too)
  • Editor: support custom folding regions (region/endregion comments)
  • Editor: tweak pairing paren insertion
  • Editor: fix incorrectly highlighted pin in expression-parsing rules
  • Refactorings: move common sub-menu, reuse common shortcuts
  • Editor: fix some recoverWhile highlighting
  • Generator: drop confusing LexerAdapter generation
  • Generator: allow predicate rules be public, left and recoverable
  • Generator: make nested meta rules transparent for pinning
  • JFlex: explicitly reuse *.flex encoding on generation
  • Generator: per-rule psiPackage and psiImplPackage attributes
  • Inspections: comment-based inspection suppression, e.g. //noinspection BnfUnusedRule
  • Editor: improved java references highlighting and "Create Class" quick fixes
  • JFlex: new download link and VM options to override defaults: -Dgrammar.kit.jflex.jar=..., -Dgrammar.kit.jflex.skeleton=...
  • Plugin: switch to IntelliJ IDEA versioning scheme
  • BNF and JFlex PSI: merge AST and PSI trees (memory/performance)
  • Generator: support dash-separated and angle-quoted rules
  • Generator: "psi-factory" support for merged AST and PSI trees
  • Generator: honor explicitly set rule name
  • Generator: fix freeze on generation several grammars at once
  • Generator: disable first-check in presence of external predicates
  • Generator: support merged AST and PSI trees (psi.impl.source.tree.CompositePsiElement inheritors)
  • Generator: add generate=[psi-classes-map="yes"] option
  • Generator: alert of missing psi implementation methods #155
  • Generator: merge multiple list-valued attributes, e.g. "implements", "methods"
  • RGH: rule-graph analysis fix for trivial rules (#153)
  • Diagrams: NPE fix on app save/load
  • Generator: support rule names that happen to be java reserved words (#32)
  • Generator: grammar analysis and expression parsing fixes
  • Generator: include quoted tokens in token sequences
  • Generator: constructor and visitor fixes (issues 133, 135, 136)
  • Copyright plugin integration
  • IntelliJ compatibility: 2016.3, 2017.X
  • JFlex: more color options & better AST
  • Generator: meta rule parameter as 'recoverWhile' predicate
  • Generator: support 'extends' with 'upper' and 'external' modifiers
  • Generator/PSI: fix for fake rules PSI accessors calculation
  • Generator/PSi: improved methods/classes names generation logic
  • Generator: introduce "hooks" attribute and white-space binders #91
  • Generator: override 'gen' folder name via 'grammar.kit.gen.dir' system property
  • Generator: generate elementTypes for fake rules when needed #76
  • Generator: improved/unified identifiers generation #97
  • Generator/PSI: generate constructors from super-class #105
  • JFlex: 1.6 syntax and running
  • JFlex: file structure popup (Ctrl-F12)
  • JFlex: additional arguments via 'grammar.kit.gen.jflex.args' system property
  • JFlex: resolve returned token constants & yybegin(state) in action code
  • JFlex: unify default generation path with BNF generator #96
  • Editor: improved completion for angles-quoted rules
  • LivePreview: critical bugs fixed, revitalized
  • Generator: "upper" rules initial (no proper analyzer support)
  • Generator/GPUB: introduce frame.resultType for manual manipulation
  • Generator/Visitor: "visitor-value" generate option to generate Visitor<R>
  • Generator: more "generate" options: elements, element-case, token-case
  • Generator/PSI: fix generic and vararg types generation
  • Generator/PSI: fix private recursive rules handling
  • Generator: made a parser extend com.intellij.lang.LightPsiParser
  • Known exceptions fixed, rebuilt with IntelliJ Platform 14.1.4
  • Editor: method reference navigation revived
  • Generator: mixin-class methods can be used as method-mixin's to populate rule PSI interface
  • Generator: output directories detection for JFlex/BNF generators
  • Generator: "generate" attribute supersedes global "generateXXX" attributes
  • Generator: compact local variables names by default to improve code readability
  • Generator: better PSI generation in complex "extends" / "elementType" cases
  • Generator: improved rule content calculation leading to more correct PSI classes
  • Generator/Pratt: no more explicit PsiBuilder.Marker manipulations in generated code
  • LivePreview: pre-configured tokens are dropped, numbers/strings/whitespaces detected
  • BNF: allow "-" in rule names and other identifiers
  • GPUB: improve error reporting in some cases
  • Generator/Editor: performance fix
  • JFlex: treat "%eof{ return;" case as forced comment instead of error

1.1.8 / 1.1.9

  • Refactoring: expression chooser for introduce rule
  • JFlex: local jar/skeleton detection
  • Generator: parser-based keyword completion improvements
  • Generator: expression parsing improvements

1.1.6 / 1.1.7

  • PSI generator: Improve methods attribute semantics: rename/add new PSI tree accessors
  • PSI generator: Drop obsolete methodRenames attribute and add generateTokenAccessors
  • Live Preview: Auto-generate tokens from usage (no more BAD_TOKEN)
  • Editor: Examples added to attributes documentation (Ctrl-Q)
  • Editor: Turn grammar spell-check
  • Historical typo fixed: recoverUntil attribute renamed to recoverWhile (indeed it always meant while)
  • Editor: recoverable rule highlighting, help improved for pin and recoverWhile
  • GPUB: cleanup and OOM protection
  • Generator: parser size reduced, fragment parsing fixed, empty tokens support (lexer-based preprocessors)
  • Generator: simple #auto recovery predicate generation, i.e. recoverWhile = "#auto"
  • JFlex language support: highlighting/navigation/completion/rename
  • Generator: parser size reduced (most of PsiBuilder-specific logic moved to GPUB)
  • Extensibility: "extends" hooks in GPUB
  • Generator: compact token sequence parsing
  • Context menu: Generate JFlex *.flex file
  • Context menu: Run JFlex generator
  • Context menu: Create custom parser util class
  • IDEA Platform 12.1 compatibility
  • Live Preview mode for fast language prototyping
  • Live Preview: Highlight Grammar action helps visually debug grammars
  • stubParserClass attribute renamed to parserUtilClass for consistency
  • StubIndex support via stubClass attribute or direct implements/mixin approach
  • Pratt-like expression parsing stabilized, see grammar sample for more
  • No compile errors in generated code on cold start
  • Drop unneeded inheritance checks during parse-time
  • Experimental Pratt-like expression parsing (compact grammars and improved performance)
  • Per-rule elementTypeClass/Factory attribute & empty elementType attribute support
  • CamelCase rule names support and PSI classes calculation fixes
  • Grammar code folding for attribute groups and multiline comments
  • Attribute pattern navigation & inspection
  • Short error messages generation instead of long token lists
  • Token sequence completion
  • Standalone invocation (for ant integration & etc.)
  • Grammar diagram (UML support plugin required)
  • Dedicated "tokens" attribute
  • Minor fixes
  • PSI visitor generation
    • better children discovery (esp. for left rules)
    • user methods and method mixins
    • fake rules to generate better hierarchy
  • Bug fixes and performance
  • Improved PSI generation (extends and elementType attributes handling)
  • Configurable FIRST-based parser optimization
  • Error recovery: extended pinning
  • Pin marker annotator
  • Configurable colors (Settings/Editor/Colors and Fonts/Grammar)
  • Parser-based context-aware keyword completion (sample)
  • Language injection in string literals (sample)
  • Performance improvement & other fixes
  • Inspection: Left-recursion detection
  • Highlighting
  • Completion
  • Navigation
  • Refactorings: inline rule, introduce rule
  • Intentions: flip choice branches
  • Readable PsiBuilder-based recursive descent parser and PSI hierarchy generation