= BNF Tools Version 2.0: Migration Notes = Discovered features in version 1.0 and their migration status, as well as further migration notes are summarised below. == Core Features: == 1. BNF front-end (Parser, Lexer, Linker, etc.) 1. translates a textual representation into an Ecore model 1. Editor - provides IDE features, e.g. auto-completion, syntax highlighting, etc. == Validation Rules: == These rules will give warnings in the editor if they find find consistencies in the code. 1. ''__checkUpdateGrammarConsistency__:'' checks, if the grammar is an updated grammar, for consistencies between the originals and the new grammar * status: not migrated 1. ''__checkReferencedOnlyOnce__:'' this should warn if there is a rule that is only referenced once, this is an inlining hint * status: migrated 1. ''__checkPassthroughRule__:'' this tests if a rule gets just passed through, e.g. `a ::= b, b ::= "literal"` <=> `a ::= "literal"`, which is better for EBNF * status: migrated 1. ''__checkEqualAlternative__:'' this tests if a rule got equal alternatives, e.g.: `a::= d | d` * status: migrated 1. ''__checkDuplicateRules__:'' checks if there is another rule in the !EtsiBnf, that has the same right hand side, e.g.: `a ::= "literal" | b, c ::= "literal" | b ` * status: migrated 1. ''__checkSubruleDuplicates__:'' * status: not migrated 1. ''__check unused rule__:'' checks if a rule is used (exept for the rule with the number 1) * status: migrated 1. ''__checkNameIsUnique__:'' checks if the name of a rule is already in use e.g. `a ::= "end", a ::= "fin"` * status: migrated == Generation: == Generating an intermediate xsl-fo representation for all BNF grammars (merge or delta grammars not supported). This can be rendered to PDF using apache-fop * status: in progress == Formatting: == * ''old:'' had some but they are got commented out in the main project * ''new:'' line-break after every rule, white-spaces after all literals, possible update linebreak and double tab after all >|< bars == Refactoring and Quick-fixing: == Automated restructuring support. 1. ''auto Numbering of rules'' * status: not migrated 1. ''remove unused rules'' * status: migrated 1. ''replacement of passthroughRules'' * status: not migrated 1. ''refactor uppercasetokenRules'' * status: not migrated 1. ''find references'' * status: provided by xtext2 1. ''renaming'' * status: provided by xtext2 == Grammar Composition: == * 3 grammartypes: * grammar: normal grammar * delta grammar: different notation for a extension grammar, * adds new rules to a grammar (regular rules) and adds changes to rules of the extended grammar (extension rules) (can be automatically created) * merge grammar: for merging extensions * old version had an automatic composition process for merge grammars with a small pop-up-menu. The new has 2 Buttons for Generating either PDF or RTF files from the Grammar. * at the moment no support in the new version == Deployment: == * export project as Plugin: Plug-in Development/deployable plug-ins and fragments * RCP project with a minimal eclipse editor: TBD