From: Alessandro Baretta <a.baretta@barettadeit.com>
To: skaller <skaller@users.sourceforge.net>
Cc: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Another nasty with ocamlyacc: magic needed?
Date: Mon, 05 Dec 2005 10:05:54 +0100 [thread overview]
Message-ID: <439402F2.60708@barettadeit.com> (raw)
In-Reply-To: <1133772769.8957.168.camel@rosella>
skaller wrote:
> I do. It is useful. But the secondary parser is an RD parser
> interpreter. The idea isn't to allow arbitrary grammar
> extensions .. only to make particular yacc productions
> open-recursive closed by the dynamically built table
> of extensions.
>
> Thus the RD parser calls back into yacc entry points,
> and, the yacc productions call into the RD parser entry
> points. This is organised via the lexer.
By applying the 'ocamlyacc parser.mly; rm parser.mli; ocamlc -i parser.ml'
approach, you can enclose the code generated by ocamlyacc into a structure. I
used this approach when I was young and inexperienced to generate a functor from
a parser definition, whereby the parser actions called a bunch of functions
passed as parameters to the functor. I can also imagine that, possibly with some
help from pa_ocamllex, you can define a pair of mutually recursive lexer and
parser modules, which is about as far as you think about going with the yacc
architecture.
All this does require some "black magic", but no Obj.magic, which is rather neat.
Alex
--
*********************************************************************
http://www.barettadeit.com/
Baretta DE&IT
A division of Baretta SRL
tel. +39 02 370 111 55
fax. +39 02 370 111 54
Our technology:
The Application System/Xcaml (AS/Xcaml)
<http://www.asxcaml.org/>
The FreerP Project
<http://www.freerp.org/>
next prev parent reply other threads:[~2005-12-05 9:05 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-05 5:35 skaller
2005-12-05 6:25 ` [Caml-list] " Geoff Wozniak
2005-12-05 7:08 ` Alessandro Baretta
2005-12-05 8:52 ` skaller
2005-12-05 9:05 ` Alessandro Baretta [this message]
2005-12-06 0:41 ` skaller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=439402F2.60708@barettadeit.com \
--to=a.baretta@barettadeit.com \
--cc=caml-list@yquem.inria.fr \
--cc=skaller@users.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox