- From: LdBeth <andpuke@foxmail.com>
- Date: Mon, 18 Mar 2024 22:13:27 -0500
- To: "C. M. Sperberg-McQueen" <cmsmcq@blackmesatech.com>
- Cc: public-ixml@w3.org
A suggestion, is define
LineBreak =: // comment
| -- comment
| newline character
Spaces =: space character+ | /* comment */
So your example would be parsed as
(block
(newline)
(expr (equal a b))
(newline (comment "------ this is a bug!"))
(expr (equal c d))
(newline))
And if the "newline" level is removed
(block
(expr (equal a b))
(comment "------ this is a bug!")
(expr (equal c d)))
>>>>> In <87plvrlzqk.fsf@blackmesatech.com>
>>>>> "C. M. Sperberg-McQueen" <cmsmcq@blackmesatech.com> wrote:
> I'm working on an ixml grammar for a language with the usual rules that
> all binary operators are left-associative and that whitespace is
> optional around operators, and which has three kinds of comments:
> - from // to the end of the line
> - from -- to the end of the line
> - from /* to */
> A common idiom in the language is a block enclosed in braces containing
> a sequence of whitespace-delimited expressions. For example:
> {
> a = b ----------- this is a bug!
> c = d
> }
> This turned out to be ambiguous. One parse was what I expected:
> block
> expression
> equality
> a
> b
> comment
> expression
> equality
> c
> d
> The other parse was unexpected:
> block
> expression
> equality
> equality
> a
> set-difference
> b
> comment
> c
> d
> In the second parse, the first hyphen in the comment string is taken as
> a set-difference operator, followed immediately by a double-hyphen
> comment. And since "a = b - c = d" is legal (and equivalent to
> "(a = (b -c)) = d", the ixml parser reported an ambiguity.
> I suspect that equality and other comparison operators are not really
> left-associative in the language (although they are in some), but
> changing that would still leave an ambiguity for input like:
> {
> a ----- why is this here?
> b
> }
> I sometimes find it challenging to write ixml grammars in such a way as
> to reproduce the behavior of two-level parsers with dedicated lexers.
> (And don't ask me about operator-precedence tables.)
> --
> C. M. Sperberg-McQueen
> Black Mesa Technologies LLC
> http://blackmesatech.com
Received on Tuesday, 19 March 2024 03:18:44 UTC