From: "Rafael 'Dido' Sevilla" <dido@imperium.ph>
To: caml-list@inria.fr
Subject: [Caml-list] line number information in abstract syntax trees
Date: Mon, 15 Sep 2003 15:53:39 +0800 [thread overview]
Message-ID: <20030915075339.GA20719@imperium.ph> (raw)
As some of you have suggested earlier, I have foregone doing some
preliminary semantic analysis for my compiler in my ocamlyacc grammar,
and instead am using the grammar solely to do syntactic analysis. Which
then brings me to another problem. I've created an abstract syntax tree
data type, but now I need to somehow embed line number information
obtained from the syntactic analysis phase so that I can later do error
reporting. I can't think of a clean way to do this. So far, I have a
syntax tree data type that kind of looks like:
type program = { impmodule: string ; tdecls: topdecl list; plineno:int}
and topdecl =
Declaration of decl * int
and decl = { idents: string list ; dtype: xtype ; dlineno:int}
and xtype =
Data of datatype * int
| Func of fntype * int
| Alias of xtype * int
and datatype =
Byte of int
| Int of int
| Big of int
| Real of int
| String of int
| Tuple of (datatype list * int)
| Array of (datatype * int)
| List of (datatype * int)
| Chan of (datatype * int)
Note that all the record types have additional fields that look like
'plineno:int' and every variant type has an int tacked on somewhere.
That int is supposed to contain the line number.
This works just fine, but it just seems to me like such a grossly ugly
hack into what is otherwise an elegant-looking data structure. Anyone
have style guidelines
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
next reply other threads:[~2003-09-15 7:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-09-15 7:53 Rafael 'Dido' Sevilla [this message]
2003-09-15 11:14 ` Michal Moskal
2003-09-16 20:07 ` skaller
2003-09-17 8:44 ` Christian Lindig
2003-09-18 19:01 ` skaller
2003-09-19 6:50 ` Christian Lindig
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=20030915075339.GA20719@imperium.ph \
--to=dido@imperium.ph \
--cc=caml-list@inria.fr \
/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