Implement first step in escet plcgen
From #397 :
- Construct an application that reads a CIF model, takes a option stating the desired PLC model to generate code for, and producing an empty main program for all supported PLC systems. Needs
- application infra structure files,
- a PLC target option to specify the desired PLC target,
- ability to read CIF files,
- ability to generate text files and writing them to the file system,
- for each supported PLC model the code or data that generates the empty main program.
- construct test infra structure for enabling checking that an extension in the transformation does not break old behaviour.
Last week I started with this, and found that generating the output is more complicated than expected; some PLC targets use XML, others generate dozens of files. So rather than using a codegen-like backend with template files, I now think that the cif2plc backend is more useful. So for now I will just use that part I think.
In a next step, the generated PLC code should exist as a object tree to allow analysis and modification to improve the output. The cif2plc backend doesn't currently support that as it directly stores lines of text. Whether to consider the object tree as an independent intermediate form, or change the backend in that direction is something that still needs to be decided.