ANN, WARNING: new boomerang 1.3.0 silently breaks your code

I just uploaded boomerang-1.3.0. The only change is that 'anyString' no longer has an implied 'eos'. It is common to want to write:
rPair . anyString > anyString
to parse, ["foo","bar"] to ("foo","bar") or to unparse ("foo","bar") to ["foo","bar"]. however, that did not work before because anyString implied eos. So you actually had to write the less obvious:
rPair . anyString . anyString
to get similar behavior. I have changed 'anyString' so that it no longer implies 'eos', which means that the first example now works as expected. Unfortunately, it means that any parsers currently using anyString will (probably) start failing. There is also a second downside. The new behavior of:
rPair . anyString . anyString
is somewhat ill defined. That is because unparse will convert ("foo","bar") to ["foobar"]. But when you try to parse ["foobar"], you get ("foobar",""). In general you should always follow 'anyString' by 'eos' or >. Unfortunately, I do not see a way to enforce that at compile time. Something to think about for boomerang 2 though. - jeremy
participants (1)
-
Jeremy Shaw