- From: Norm Tovey-Walsh <norm@saxonica.com>
- Date: Sat, 26 Mar 2022 16:01:09 +0000
- To: public-ixml@w3.org
- Message-ID: <m235j4he4r.fsf@Hackmatack.fritz.box>
Hello, None (or very few) of the current syntax tests are “positive tests”. Consequently, the recent grammar changes don’t show up in the test suite, which is kind of bad. I thought I’d write a few, and immediately encountered an interesting bug. What makes it interesting, really, is that both Steven and I do the same thing. Here’s the grammar (simplified from a slightly larger one, hence “and another”): S: 'a' { and another } . And here’s what both Steven and I produce: <ixml> <rule name='S'> <alt> <literal string='a and another '/> </alt> </rule> </ixml> (This is a parse against the 2022-02-22 grammar; I’m not planning to switch to the new grammar until the namefollower change is implemented and bug #57 is fixed.) I think what’s happening is the comment is getting caught up in the “attributeness” of string: @string: -"'", schar+, -"'", s. So, the questions are, is it a bug, and if it is, where is the bug? Given: test: @foo . foo: 'foo', bar . bar: 'bar' . If we parse foobar, we expect <test foo="foobar"/> even though “bar” is marked as an element. What the spec says is: A nonterminal attribute is serialised by outputting the name of the node as an attribute, and serialising all non-hidden terminal descendants of the node (regardless of marking of intermediate nonterminals), in order, as the value of the attribute. I started this message thinking this was an implementation bug, but I’ve persuaded myself it’s a grammar bug. And an interesting one, too! On casual inspection, this bug isn’t present in the 2022-03-17 grammar. None of the @-marked nonterminals are allowed to accidentally slurp up extra whitespace. Be seeing you, norm -- Norm Tovey-Walsh Saxonica
Received on Saturday, 26 March 2022 16:28:52 UTC