Just a note on this excerpt from your proposal:
Example: Defining DTD-Specific Grammars
The following grammar is written in a hypothetical variant of BYacc/Java or
ANTLR in which the actions are XML quasi-literal strings as supported by Step 1
above. (We would probably create an ANTLR wrapper.)
expr:
mult
| a:expr '+' b:mult { <apply><plus/>$a$b</apply> }
| a:expr '-' b:mult { <apply><minus/>$a$b</apply> }
;
mult:
pow
| a:mult '*' b:pow { <apply><times/>$a$b</apply> }
| a:mult '/' b:pow { <apply><divide/>$a$b</apply> }
;
pow:
prim
| a:prim '**' b:prim { <apply><power/>$a$b</apply> }
;
I know you have worked a lot on your quasi notation, but I found what might be another source of ideas. I recently stumbled across "bigwig" http://www.brics.dk/bigwig/ which has a really nice framework for filling in HTML templates with "gaps" -- the cool thing is that the html is embedded in the language which can do flow control analysis to make sure all the "gaps" are filled in before the document is sent back, and also make sure that the gaps are not filled in twice. The analysis isn't perfect but it is pretty cool. I haven't played with it much yet though. Not that this has anything to do with your proposal....
I like your proposal. As far as the ANTLR stuff is concerned, it breaks down
into three parts:
making the tree grammar work with xml
making the tree grammar generate code in E or E-accessible Java
translating the actions into quasi notation code
I'll have to investigate DOM to see where there might be mismatch between it and ANTLR's tree model. I'd love to have this easy kind of tree transformation notation in ANTLR.
Monty