ebnf2railroad
Version:
EBNF to Railroad diagram
272 lines (179 loc) • 7.88 kB
Markdown
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.14.1] - 2023-04-13
### Fixed
- Fixed an issue where repeaters written back as text did not reverse repeater sequences. (`a, b, { c, d, a, b }` was turned into `a, b, { d, c, a, b }` in the output text version).
## [1.14.0] - 2023-04-13
### Added
- One ore more. Support for 'zero or more' with an empty exception. `{ a }-` which, according to section section 5.8 of [ISO/IEC 14977](https://www.cl.cam.ac.uk/~mgk25/iso-14977.pdf) means 'one or more'. Text using `( a , b ), { a, b }` will automatically be optimized to `{ a, b }-`
## [1.13.1] - 2023-02-19
### Fixes
- Fix height calculation of 'Choice' element. (Had to take over element from `railroad-diagrams` package)
## [1.13.0] - 2020-10-24
### Added
- Support for markdown output, by using a `.md` extension on the target filename
### Fixes
- Only remove optional around repetition if repetition is zero or more
## [1.12.0] - 2020-10-10
### Changes
- Deduplication of choices is improved. Now also works for text output, and can
deduplicate items when one of them has a comment.
```
a | a | a (* comment *) | b => a (* comment *) | b
```
- Improve height of overview diagrams
- Update color scheme of dark theme
- Improved styling of blockquotes in markdown `>`
### Fixes
- Exception when non-terminal lacks definition
## [1.11.1] - 2020-09-23
### Fixes
- Overview diagrams should also optimize its sub elements
## [1.11.0] - 2020-09-23
### Added
- Support for generation overview diagrams on root elements, skippable with
`--no-overview-diagram`
- Support for optimizing source definition file using `--rewrite`
- Skip only diagram wrapping with `--no-diagram-wrap`
- Breaking of long elements over multiple lines in optional items `[]`
- Plain text will now also be optimized when reasonable: Text will not be
optimized when using the `--no-optimizations` flag.
```
[ [ a ] ] => [ a ]
[ { a } ] => { a }
a | b | [ c | [ d | e ] ] => [ a | b | c | d | e ]
```
- Support of detection of pure character sets. Character sets are now listed
seperately at the bottom of the table of contents. A character sets is a
choice of terminals, or a choice where the non-terminals are also character
sets
- Support for comments before an optional, placing the comment on the skip line
and make the skip line the main line
- Support for `_` (underscore) in identifiers
## Fixes
- When elements in choices are grouped, it will now maintain the original order
- Running out of memory for big documents
### Changed
- Show line underneath comments in railroad diagram
## [1.10.0] - 2020-09-16
### Added
- Support for `--dump-ast` and `--read-ast` options to allow external processing
- Support for identifiers starting with an uppercase letter
- Improved error reporting. Exceptions now contain a `data` element with the
following:
- `line` The line number of the error (starting from 1)
- `pos` The position within the line of the error (starting from 1)
- `expected` the types of token expected by the parser (array)
- `token` the token received by the parser
- Optimisation to prevent double skip lines
### Security
- Updated dependencies to solve security vulnerabilities
### Fixed
- Display of proper line number in CLI output
## [1.9.0] - 2019-01-22
### Fixed
- Improved detection for recursion and roots
## [1.8.2] - 2019-01-21
### Changed
- Updated example outputs
### Fixed
- Optimization issue in choice length
## [1.8.1] - 2019-01-21
### Changed
- Skip all optimizations with `--no-optimizations`
## [1.8.0] - 2018-11-26
### Added
- Dark and light color theme
## [1.7.0] - 2018-11-22
### Added
- Syntax diagram will wrap if sequences become very long
- Split navigation bar in 3 parts. Root elements, Normal elements, Common
elements
- Added Marker of recursion in navigation list
- Responsive design, mobile navigation, overall styling
### Fixed
- Small pretty print issues that caused weird line breaks
## [1.6.0] - 2018-11-13
### Added
- Formatting of text output in the document
- Long sequences will wrap over multiple lines
- Choice lists between 3 and 6 items will be displayed under eachother
- Choice lists over 6 items will be displayed as a grid
- Option `--no-text-formatting` to write all text on a single line
- Option `--no-optimizations` to write diagrams as-is
- Option `--no-target` to skip writing documentation
- Option `--write-style` to 'prettify' source documents
## [1.5.0] - 2018-11-10
### Added
- Support to use package as library within other projects
- Support for alternative characters: `|` -> `/`, `!`, `[ ]` -> `(/ /)`, `{ }`
-> `(: :)`
- Table of contents, showing structure in alphabet, or as hierarchy overview at
the bottom.
- Optimize EBNF syntax as `a | a` into `a`
- Optimize EBNF syntax as `a | a, b` into `a, [ b ]`
- Optimize EBNF syntax as `a, b, c, g | a, b, d, g` into `a, b, ( c | d ), g`
### Fixed
- Closing tag for Terminals with single quotes
- Issue when the chain was optimized without repeater `a, b, c, { b, c }`.
## [1.4.0] - 2018-11-03
### Added
- Optimize EBNF syntax as `[ a | b ]` in diagram as single choice with
integrated skip
- Optimize EBNF syntax as `[ a | ( b | c ) ]` in diagram as single choice
- Optimize EBNF syntax as `[ a | [ b | c ] ]` in diagram as single choice with
integrated skip
- Demo file to demontrate markup and optimizations
- Auto linking plain links in comments
- HTML escaping in definition inline comments
- Syntax highlight in text presentation of EBNF
- Improved 'breaking' of EBNF over multiple lines
### Fixed
- Issue with optimizer in repeating elements `a, b, c, { d, b, c }`. the
repetition showed `c, b` instead of `b, c`
## [1.3.0] - 2018-11-02
### Added
- Add support for comments within statements, that will be rendered within the
diagram
- Option `--title` to add a title to the output document
- Show different start/end indicators if diagram is 'complex' (refers to other
definitions)
- Better optimization of repeating elements. `a, b, c, { d, b, c }` will display
`a` followed by a loop containing `b, c` with `d` as repeater.
- Extra example file, based on json.org
### Fixed
- Text dedenting issue in comments before sending comments to markdown parser
## [1.2.0] - 2018-11-01
### Added
- Show validation warnings for duplicate declarations
- Show validation warnings for missing references
- Option `--validate` to exit with status code 2 if document has warnings
- Option `--quiet` to suppress output to console
- Optimize EBNF syntax as `( a ), { a }` in diagram as `a+` (one or more)
- Optimize EBNF syntax as `a | { b }` in diagram as choice with "skip", "a", or
one or more "b"
- Optimize EBNF syntax as `a | [ b ]` in diagram as choice with "skip", "a", or
"b"
### Changed
- Long choice lists are now spread over multiple columns, if the length
exceeds 10.
- Updated styling of document
## [1.1.0] - 2018-10-30
### Added
- `--target` option to specify output file
- Parse and render EBNF comments as markdown
- Add references to other definitions (reference To)
- Improved exception display and exit status code
- Support for `? special sequences ?`
- Support for `4 * "repeatable"` (now fully ISO compliant... I think)
- Let non-terminals link to definition in diagram
- Indent multi-line statements in EBNF output
- Optimize EBNF syntax as `a, { a }` in diagram as `a+` (one or more)
## [1.0.0] - 2018-10-29
### Added
- Parser to parse ISO/IEC 14977 EBNF files (limited support only)
- HTML output file based on filename of input file
- list definitions that reference another defintion (referenced From)