- Create a purely syntactic parser for the existing filter file format.
+ The parser should only check for syntactic issues, like malformed files.
+ The parser code should be generated automatically from a high level grammar description (similar to bison and yacc).
- Check for a tool to generate the high level grammar description from a training set of filter file examples?
+ The parsed filter file should be exactly reproducible from the parsed data.
+ The parser should only alert the user to issues and suggest fixes for the user to make. It should not attempt to make fixes itself and it should return failure if there are any issues. It should not change the file it is parsing.
+ There is only one level of notification, error.
+ Check that all of the filter files currently in use can be parsed and exactly reproduced from the parsed data.
- Design a filter file format to replace the existing file format.
+ Should be based on an existing document format (ie, xml, json).
+ The document format should be unambiguous (strongly typed) (ie, not yaml).
+ The document format should be human readable (plain text).
+ There should be existing tooling and library support for parsing, checking and generating the document format.
- Check for existing filter file standards. Matlab? Scipy?
+ Avoid duplication of information. This avoids needing to check that the duplicate information is in sync. Do we need to list all of the modules in a header? Do we need both the coefficients and the design string? Could it just hold the design string?
- Create a syntactic parser for the designed filter file format that generates the same data structures as the syntactic parser for the old filter file format.
+ Should have the same requirements as the syntactic parser for the old file format.
+ Make as a library so that the RCG and other tools can use it.
- Create a purely semantic parser that takes the data structures created by the syntactic parsers as input.
+ Should check for things like having the design string match the coefficients, that the filter is stable, etc. Can have different levels of notifications.
+ Check that all filter files currently in use pass it.
+ Should only alert the user to problems and suggest fixes for the user to make. Should not attempt to make fixes itself.
+ Create tests for each semantic check.
+ Make as a library so that the RCG and other tools can use it.
- Change the rcg code to use these parsers.
- Survey for existing filter design tools that could replace Foton. If there are good ones, create a translation from their file format to ours. Matlab? Scipy?