Configuration files
We really need a configuration file to allow some user control over our behavior, such as:
- the way operators are displayed
- actually, several syntaxes,
grep
in addition totext
,utf8
and so forth - the color for states in dot,
- etc.
This should be addressed by a basic configuration file shipped with Vcsn, and the possibility for the user to have one which overrides bits from the standard one.
I foresee that we would need to be able to read it both from C++ and Python, even if it's easy to imagine that a pure C++ solution would be easy to bind in Python.
I want the format to be easy to support, well documented, and easy to maintain for a casual user (which rules out XML for instance). I see the following candidates:
- YAML (my favorite I must say)
- Json,
- Boost.ProgramOptions (http://www.boost.org/doc/libs/1_61_0/doc/html/program_options/overview.html#idp308880256). I fear this one is too weak for all the things I wish we had.
- Boost.PropertyTree (http://www.boost.org/doc/libs/1_61_0/doc/html/property_tree.html). It supports several formats for storage, which is nice, by Json seems to the only we are really interested. Maybe it's easy develop a backend for Yaml, I don't know.
So, what I need an experiment that would help us making an educated choice. Instead of developing in Vcsn itself from the inception, you may work first in vcsn/experiments (the repository). Then, the post-processing of the dot output performed in Python should be replaced by simple configuration of the dot output from C++.