Welcome to the Parsing Tools Discussion Forum

What do you use parser generator tools for? What kind of features would you like to see in a tool like JavaCC 21?

Uses:

Migration studies of whole software products (5000+ source files) from one language (Cobol, Uniface, SQL, PL/SQL, Forms, Gembase, Pascal UCSD) to another one:

  • get the list / metrics of instructions / functions / constructs / mechanisms / … used in the product, to enable precise work load evaluation

Real migrations:

  • translate the source code in another language, 100% automatic in CI
    Dev / code quality tools:
  • list / count / refactor non internationalized character strings
  • reveal scripts syntax errors before commiting
  • cartography (call trees)

Plugins dev:

  • develop an Eclipse plugin for these languages and custom tools around (standardized code generation, code quality control, build tools, automated actions…)

Features needed as a user (in decreasing order):

  • use of JTB as a the node builder tool
  • better execution performance compared to JavaCC 5.0 / 8.x
  • support in Eclipse or IntelliJ Plugin at least as good as the current Eclipse JavaCC Plugin
  • ability to control the generated code:
  • to pass customers code quality standards (# and types of warnings, cyclomatic complexity, Sonar metrics, OWASP…)
  • to tune the generated methods (performance, integration)
  • support of OpenJDK and Oracle Java releases (ie user can generate classes that compile with 1.8 … 15+ as he chooses)
  • no imposed third party tools, only at the user’s choice (ex: can choose his template engine, like FreeMarker or Velocity) (for complying with customer’s licensing or frameworks standards)
  • better lookahead debug trace (proper identation, output limited to the problematic branch, better reasons / navigation information for the failed lookaheads) (that’s where I loose time writing grammars)
  • the ability to declare that a token can be matched by a more general token (in another post)
  • explanation of the purposes / algorithms of the lexer / parser generated methods (to help understanding problems and to be able to propose improvements / tunings for the generated code)
  • native support for calling sub-parsers
  • support of Kotlin (actions in Kotlin, Kotlin generated classes)
  • ability to use the generated parsers as a fully java language class (inheritance, functional programming)

Features needed as a contributor:
TBD somewhere else