Skip to content

v0.3.0

Choose a tag to compare

@Backbone81 Backbone81 released this 23 Aug 11:34
· 244 commits to main since this release
  • Added a JavaScript scanner backend.
  • Added a JavaScript parser generator backend, selected with --backend javascript. The generated ECMAScript module imports the token constants from the generated scanner, whose module specifier can be set with --backend-javascript-scanner-module.
  • Added a TypeScript scanner generator backend.
  • Added a TypeScript parser generator backend.
  • Added a C# scanner generator backend.
  • Added a C# parser generator backend.
  • Replaced the Java scanner backend with a table driven one.
  • Added a Java parser generator backend, selected with --backend java.
  • Replaced the Rust scanner backend with a table driven one.
  • Added a Rust parser generator backend, selected with --backend rust.
  • Added a Python scanner generator backend, selected with --backend python.
  • Added a Python parser generator backend, selected with --backend python.
  • Added a C++ scanner generator backend, selected with --backend cpp.
  • Added a C++ parser generator backend, selected with --backend cpp.
  • Fixed the generated scanners consuming one byte too many when a match failed after the automaton had already consumed bytes. The byte which ended the failed match now starts the next token instead of being swallowed by the invalid token, which had corrupted the token following the error.
  • Fixed the generated parser rejecting an empty input which the grammar accepts. The end of input is now a token the parse table decides on like any other.
  • Fixed Symbol.String of the generated Go parser printing the index of a symbol instead of its name.
  • BREAKING: The generated Go parser now spells the augmented start symbol AcceptNonterminal instead of Nonterminal_accept, which is the name every other language backend already uses.
  • BREAKING: --backend go now writes the table driven scanner and parser, which is smaller and faster than the directly coded one it replaces. The directly coded Go backend is gone, and with it the names go-direct and go-table.
  • BREAKING: The public packages pkg/parsergen/backend/golangtable and pkg/scannergen/backend/golangtable are now pkg/parsergen/backend/golang and pkg/scannergen/backend/golang, taking the place of the re-exports of the directly coded backend.
  • Added a C scanner generator backend, selected with --backend c.
  • Added a C parser generator backend, selected with --backend c.