[Haskell-cafe] Re: Frisby grammars that have context
apfelmus
apfelmus at quantentunnel.de
Tue May 29 10:44:58 EDT 2007
Mark T.B. Carroll wrote:
> I've been playing with Text.Parsers.Frisby to see how it stacks against
> other options and, while it's been great so far, I am finding that I
> can't encode a grammar where what's acceptable depends on what's already
> been parsed in some nontrivial way.
> [...]
> Is this supposed to not be possible in Frisby, or (quite likely) am I
> missing something that allows me to?
It's intentionally impossible. Frisby uses a dynamic programming
approach that crucially depends on the fact that the grammar in question
is context-free (actually something related, but the effect is the
same). You're trying to parse a context-sensitive language.
Sometimes, you can avoid context-sensitivity if there's a way to parse
the token in question regardless of whether it's valid. For example,
Pascal is a context-sensitive language because you may not use a
variable before it has been declared:
procedure Foo(x:Integer)
begin
y := 1;
end;
This not a correct Pascal program, nevertheless the parse succeeds just
fine. The missing declaration for y will be detected when processing the
abstract syntax tree further. The key point is that the shape of the
abstract syntax tree doesn't depend on whether y is declared or not.
Regards,
apfelmus
More information about the Haskell-Cafe
mailing list