Unified meaning and mutual relations of some inplace configurations.
This commit changes the behaviour of three groups of options:
re2c:define:YYSETCONDITION
re2c:define:YYSETCONDITION@cond
re2c:define:YYSETCONDITION:naked
re2c:define:YYSETSTATE
re2c:define:YYSETSTATE@state
re2c:define:YYSETSTATE:naked (added by this commit)
re2c:define:YYFILL
re2c:define:YYFILL@len
re2c:yyfill:parameter
re2c:define:YYFILL:naked
The changes should be backwards compatible (meaning that old code that
compiled should still compile), but it may add empty statements or statements
with no effect for some configurations, e.g.:
YYSETCONDTITION(0);(0);
These changes were necessary to unify re2c behaviour, remove counter-intuitive
cases and make it possible to write comprehensible option descriptions.
In short, the changes are:
- 'naked' triggers generation of argument-in-braces and semicolon;
- 'parameter' triggers generation of argument-in-braces (when applicable,
'naked' has priority over 'parameter');
- argument templates ('@cond', '@state', '@len') don't force other
configurations, they also don't influence on argument-in-braces;
Added test generator and autogenerated tests.