[antlr-interest] Converting Tree operands ('^' '!') to rewrite rules ( '-> ^(...)')

Jens Boeykens jens.boeykens at gmail.com
Fri Jul 11 00:33:15 PDT 2008


Hello,

I'm a student in computer science and for the moment I'm doing internship
in a  company (Sigasi <http://www.sigasi.com/>) mainly working on hardware
refactoring.
So far, I have written a program which can read a .g grammar as input, parse
it into a tree and automatically regenerate the grammar by using a
stringtemplate I have written. This regeneration allows some useful things.
e.g. I have written something to sort the rules alphabetically using the
trees, and then  regenerate the  grammar from the tree resulting in a
grammar with sorted rules.

The next step is to convert tree operands to rewrite rules. Eg.

*rule : a b^ c d^ e;*
will be automatically converted to*
rule: a b c d e -> ^(d  ^(b a c) e);*

My question is: does there already exists something that I could reuse (and
where to find it) or can you give me some tips to achieve this? The
convertion will probably be done on the trees which are created with my
(slightly modified) ANTLRv3.g. Thus for the previous example:

*(RULE rule (BLOCK (ALT a (^ b) c (^ d) e EOA) EOB) EOR) *
needs to be converted somehow to
*(RULE rule (BLOCK (ALT a b c d e EOA) (-> (ALT (TREE_BEGIN d (TREE_BEGIN b
a c) e) EOA)) EOB) EOR)*

My regenerator will then read in the second tree and thus generate a grammar
with a tree rewrite rule.
The conversion itself is not very simple so any  help is appreciated.
Difficulties are rules with alternatives which have complex trees:
*rule : (a^ | b^) c ;*

Am I correct that rules like *rule : (a b)^ c ;   *and* **rule : (a b)! c ;
*are no longer allowed? It parses but doesn't really make sense in my
oppinion.

So why would I want to do all this? Well with the rewrite rules it is easier
to create the tree walker from a parser. This is the final goal: when you
have written a parser grammar for a language, you can give it to my tool,
and it will automatically generate a tree grammar from it. Thus no need to
do it manually or to create 2 grammars.

Best regards,
Jens
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20080711/ce338b5f/attachment.html 


More information about the antlr-interest mailing list