From: Emmanuel Engel <Emmanuel.Engel@lri.fr>
To: caml-list@inria.fr
Subject: Grammaires et pretty print
Date: Tue, 02 Dec 1997 13:45:37 +0100 [thread overview]
Message-ID: <348402F1.D25@lri.fr> (raw)
J'ai une question sur les grammaires et le pretty-print. Chaque fois
que je doit debugger un programme, je suis toujours plus ou moin amene
a definir des pretty printer pour avoir une chance de faire afficher
au debugger ou aux "print" que j'insere partout dans le code les
informations (de facon lisible) qui me sont utiles pour suivre le
deroulement de l'execution du programme. Par ailleurs bien souvent
j'ai ecrit un parser (avec camlyacc) pour ces structures de donnees.
Il me semble qu'un outil qui sait engendre des parser devrait aussi
savoir faire du pretty-print. Je m'explique:
Un outil comme (caml)yacc (camlp4) prend en entree une grammaire, des
(meta) regles pour desambiguer cette grammaire et rend un parser qui
reconnait les expressions du langage engendre par la grammaire.
Pourquoi de tels outils ne rendent pas aussi un pretty-printer pour
les expressions engendrees par la grammaire ? Cela ne me semble plus
facile que le parsing:
Soit la grammaire non ambigue
E -> E_1 + E | E_1
E_1 -> E_2 * E_1 | E_2
E_2 -> cst | (E)
Engendrer le pretty-printer de maniere systematique avec un
parenthesage minimal n'est pas difficile, il suffit d'ecrire une serie
de fonction mutuellement recursives qui suivent exactement la
structure de la grammaire:
let rec print_E = function
x1 + x2 ->
print_E_1 x1;
print_token +;
print_E x2
|x ->
print_E_1 x
and print_E_1 = function
x1 * x2 ->
print_E_2 x1;
print_token *;
print_E_1 x2
|x ->
print_E_2
and print_E_2 = function
cst ->
print cst
|x ->
print_token (;
print x;
print_token )
De tels outils n'existent pas. Il doit y avoir une bonne raison, quel
est le point que j'ai loupe ??
--
- Emmanuel Engel
next reply other threads:[~1997-12-02 16:39 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-12-02 12:45 Emmanuel Engel [this message]
1997-12-02 20:58 ` Daniel de Rauglaudre
1997-12-03 17:38 ` Pierre Weis
1997-12-07 15:30 ` Grammars and " Daniel de Rauglaudre
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=348402F1.D25@lri.fr \
--to=emmanuel.engel@lri.fr \
--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