Combinators (Was Re: Application letters at the Haskell workshop: suggestion)
Eray Ozkural (exa)
erayo@cs.bilkent.edu.tr
Sun, 16 Sep 2001 17:44:24 +0300
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Sunday 16 September 2001 04:30 pm, Frank Atanassow wrote:
> A bit off-topic, but after some experience using combinator parsers in
> Haskell (not just Parsec) where the lexical and syntactical bits were done
> in the same grammar, I concluded that the traditional separation between
> the two, a la Lex and Yacc, does indeed have its merits for just this
> reason: by stratifying the grammar you introduce an abstraction boundary
> which, I think, agrees better with the way programmers, at least, have
> learned to reason about syntax.
[snip]
I don't think so. Trying to separate those into distinct functions is messy.
Using combinators is elegant, and if you've read any papers about them you
should have seen that you don't need to emit any "abstract syntax trees" or
such. The more complex the language is, more benefits there are in a unified
formalism. In NLP, people have shown excellent uses of such formalisms. There
are works that span all the way from phonology to semantics.
That is, established convention is not necessarily the right way to
accomplish a task.
- From a theoretical view point, it is most desirable to be concise and
abstract which is what combinatorial parsers seem to facilitate. They fit
surprisingly well to the functional programming paradigm, and they are a good
way to denote compositional semantics.
About context sensitive grammars, I don't have a code that would show how it
is done for the kind of "context-sensitivity" found in programming languages
but perhaps somebody could make a small demonstration?
I won't avoid advertising some of my personal opinion. You see, trying to
separate syntax and semantics in a compiler is only blind devotion to
Chomsky's non-sense preachings in linguistics. There is no such thing in the
world. There is syntax only if there is semantics. I recall an account of how
gcc people had to go back and forth between syntax and semantics. Too many
kludges to get it right. The truth is that:
a) semantics is as formal as syntax
b) syntax in most cases is a shadow of semantics
Therefore, formalizing both at once is reasonable. Of course, this is the
naive explanation and the whole debate goes a lot further but I guess it is
enough for an already off-topic discussion.
Regards,
- --
Eray Ozkural (exa) <erayo@cs.bilkent.edu.tr>
Comp. Sci. Dept., Bilkent University, Ankara
www: http://www.cs.bilkent.edu.tr/~erayo
GPG public key fingerprint: 360C 852F 88B0 A745 F31B EA0F 7C07 AE16 874D 539C
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQE7pLrIfAeuFodNU5wRAgMTAJ4oW8qtzMm3/jHrMwcJX/d5lELI8gCfcPs2
TYF01IcfQpHfjNh3nLNQ1JQ=
=JEZ2
-----END PGP SIGNATURE-----