Browse thread
How can I generate an AST?
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Loup Vaillant <loup.vaillant@g...> |
| Subject: | Re: [Caml-list] How can I generate an AST? |
2007/8/20, Daniel de Rauglaudre <daniel.de_rauglaudre@inria.fr>: > On Mon, Aug 20, 2007 at 10:22:17AM +0200, Loup Vaillant wrote: > > > This may be a better approach. However, I am not eager to use camlp*, > > for it will introduce a additional dependency. I may choose this > > however, if the camlp* AST is simpler than the Ocaml AST. Where can I > > find it? > > Solution using camlp5: > [...] > But, well, you need to know camlp5, understand the quotation system, > perhaps the revised syntax too, in one word, read the doc, and I can > understand that if you did not use camlp5 before, it is some work... Indeed. I didn't work with camlp* before, so the learning curve may be a problem, I don't know. > Other solution not using camlp*: > > Read the ocaml sources, file "parsing/parser.mly" to understand how > the ocaml syntax tree works. Program your parser to generate this > syntax tree. I have already read "parsing/parstree.mli", so I assume half the work is done! (well, I hope so, for I don't know .mly files...) > Once done, to give your syntax tree directly to the > ocaml compiler, output: > > 1/ the magic number you can find in ocaml sources at utils/config.ml > - ast_impl_magic_number for an implementation > ast_intf_magic_number for an interface > 2/ your input file name > 3/ your syntax tree in binary with "output_value" That, is what I need. Thank you. I'll notify the list once I managed to produce some output. I have still one problem, though : how should I access this code? It is not part of the standard library, so I can't just "open Config;;". I can't hard-copy this code, either, that is too ugly. Maybe there is a way to install a "development package" of Ocaml so I can link it? Thanks, Loup