Skip to content

Implement new input format

Reko-Direkt uses complicated input files which are very hard to parse by other programs, for example python scripts (example input files can be found in the repository at test/rd/testcases). Therefor, Reko-Direkt should support a standardized input format. The Eingabe_I and Eingabe_II format are affected by this change.

The new format should be the TOML file format. For this, the Fortran library toml-f (see here) should be used.

The following features should be implemented:

  • An input file requires a certain format (which is specified by the TOML-standard) and strictly defined structure. The structure needs to be defined, meaning there needs to be some specification which keys the input file must contain. Important: The new TOML formatted input file must contain all information previously provided by Eingabe_I and Eingabe_II.
  • All testcases must be converted to this new input format (also used for testing while implementing). Testcases are located at test/rd/testcases.
    • Convert just a single testcase (e.g. HR02). This testcase can then be used for testing during implementation.
    • Convert all other testcases.
  • The new file format and structure need to be implemented.
    • Compile Reko-Direkt with toml-f (GNU Make and CMake), so that all of its functionality can be used by Reko-Direkt.
    • To not have all old input files be invalid after the update, the old input format should still be usable. So, if an argument is given on command line, Reko-Direkt should treat that file as toml-formatted, otherwise use the old behavior.
    • The structure previously defined must be implemented using the toml-f library. All functionality previously implemented by Eingabe.f90 and Eingabe_II.f90 must also be present in the new implementation.
  • An automated test in the pipeline must check whether the new functionality works, e.g. by comparing the results of both input formats.
  • Optional: The previous input required Eingabe_III.txt to exist in the current directory. It would be nice if, for the new file format, the location of that file could be provided manually.

Note: All new files should follow the Eingabe_ and Ausgabe_ naming conventions to be compliant with how the FMU is compiled.

Edited by Leon Thelen