The current parser handles metadata annotations<br><br> '@' <i>Identifier</i> '(' <i>Text</i> ')'<br><br>so that the annotations for one entity (e.g., a rule) are available as a Map<String,Object>, where the key is given by the <i>Identifier </i>and the value of the entry is available according to<br>
<br><b>if</b> <i>Text</i> can be <i>completely</i> parsed as <i>Identifier</i> '=' <i>Expression</i> (where <i>Expression</i> is whatever the DRL parser accepts as an expression, i.e., an extended subset of Java expressions)<br>
<b>then</b><br> the value is a Map<String,String><br> <b>else<br> the </b>value is a String, with trimmed leading and trailing white space, but preserving all embedded white space<br><br>Changes compared to 5.1.1:<br>
- no Map was ever returned in 5.1.1,<br> - @m( "foo" ) in 5.1.1. returned "foo", but 5.2.0 returns "\"foo\"".<br> - @m( "foo", "bar" ) in 5.1.1. returned "foo\", \"bar", but 5.2.0 returns "\"foo\", \"bar\""<br>
- comments between "@...(" and ")" are now handled consistently but were not in 5.1.1<br><br>Possibly considered a problem for 5.2.0 or later:<br>- No check is made for duplicate "outer" map keys; entries are overwritten.<br>
- Repeated "inner" map keys produce concatenated entries, e.g. @m( k = 1, k = "a" ) returns "1a" as the value for key "k".<br>- Returning (arbitrary) expressions, unchanged, as String now may cause incompatibilitie with more sophisticated processing (if this ever should be considered).<br>
<br>-W<br><br><br><br><br><br><br><br><br><br>