Replaces the old nex/goyacc parser with a recursive parser implemented from scratch in go.
This allows to have better parsing errors (even though the error messages have not been fully tested yet and should still be tuned).
This also allows to unit test the components of the parser. For now, the tests cover most of the basic features, but many cases are still not covered, so more tests should be added in the future.
The new parser expects a slightly different syntax :
The object paths now use '/' instead of '.', they are always interpreted as relative to the current path if they do not start with a /, and when they do, they are absolute.
/P and /L are aliases to /Physical and /Logical
string formatting inside quotes is done with "${var}mystring" rather than ${var}"mystring"
loops and conditions use curly brackets around the body, and nothing around the condition : if cond { commands }
Replaces the old nex/goyacc parser with a recursive parser implemented from scratch in go. This allows to have better parsing errors (even though the error messages have not been fully tested yet and should still be tuned). This also allows to unit test the components of the parser. For now, the tests cover most of the basic features, but many cases are still not covered, so more tests should be added in the future.
The new parser expects a slightly different syntax :