[Haskell-cafe] Examples for the problem
Steve Schafer
steve at fenestra.com
Wed Mar 2 15:32:34 CET 2011
On Wed, 2 Mar 2011 14:14:02 +0100, you wrote:
>Thank you all for the responses. Here's an example:
>
>As I alrerady said, I tried to parse the MMIXAL assembly language.
>Each instruction has up to three operands, looking like this:
>
> @+4 (Jump for bytes forward)
> "foo" (the string foo"
> '0'>>(1+2)
>
>etc. A string literal may contain anything but a newline, (there are
>no escape codes or similar). But when I add a check for a newline,
>the parser just fails and the next one is tried. This is undesired, as
>I want to return an error like "unexpected newline" instead. How is
>this handled in other parsers?
Tillman's reply is absolutely correct. If a particular sequence of
characters is invalid according to your grammar, then _all_ of the
alternatives in scope at that point should fail to parse that sequence.
If that's not happening, then there's something wrong with the way
you've expressed your grammar.
I don't know how much experience you have with language grammars, but it
might be helpful to try to write down MMIXAL's grammar using EBNF
notation, as a starting point.
-Steve Schafer
More information about the Haskell-Cafe
mailing list