[antlr-interest] Request:External action definitions

Terence Parr parrt at jguru.com
Tue Nov 26 10:00:35 PST 2002


Hi.  Yes, great idea!  I would call this "aspect oriented programming" 
and is one future enhancement we've considered.  I have been working 
with Monty and Loring on my new ideas for "how to keep those actions 
from screwing up the grammar and making the grammar specific to one 
problem."  The basic idea, assuming we had good tools for this, would 
be to let you "derive" a new grammar from an old grammar and then have 
changes to the original grammar be "pushed" into your modified grammar. 
  Kind of like a "live" cut-n-paste.  In this way, you keep one clean 
grammar that is just the grammar; no actions.  Then to make that 
grammar do something "derive" a new one and add your actions.  Changes 
can be rolled forward to any derived grammar.  Currently we use 
inheritance which is really just compile-time cut-n-paste for grammars; 
but this is less flexible as you have to rewrite every rule just to get 
actions in there.  This strategy is what you do now, right?  You grab a 
grammar and modify it and then curse when the original grammar gets 
updated (such as what happens for any of you with a modified Java 
grammar). ;)

You might call this the 
RCS-based-grammar-derivation-and-composition-method.  <snicker>  Howz 
that for a buzzword!?

Sound interesting?

Terence
PS	Just finishing up my semester here at USF and should get some good 
ANTLR time in now for next month or so to push out 2.7.2 for real!

On Tuesday, November 26, 2002, at 08:10  AM, mzukowski at yci.com wrote:

> Someone has recently done just this, but I forget who.  I'm sure they 
> will
> pipe up.  Look at the files section on the yahoo list site, I think it 
> is
> there.
>
> Also noweb can be used for this type of thing too.  Searching for 
> noweb in
> the list archives may uncover the one I was thinking of.
>
> Monty
>
> -----Original Message-----
> From: Anakreon Mejdi [mailto:amejdi at ertonline.gr]
> Sent: Tuesday, November 26, 2002 3:41 AM
> To: antlr-interest at yahoogroups.com
> Subject: [antlr-interest] Request:External action definitions
>
>
> I have an idea which might make antlr better.
> Instead of defining the actions in the same file with the grammar
> they could be defined in other file(s).
>
> A way this could be achived(not necessarily the best) would be:
>
> RULE:
> 	'a' .. 'z' { %id; }
> 	;
>
>
> rule
> 	:
> 	RULE { %some_id; }
> 	;
>
>
> tree_rule
> 	:
> 		#(r:RULE { %tree_id; System.out.println("RULE matched");  }
> 	;
>
>
> In this case antlr.Tool will be fed with the grammar file and the
> file(s)  where actions are defined.
>
> The actions identified with a label (like %id) will be searched among
> the  action  files and the label should be replaced by the content of
> the action.
>
> Example:
> 	id = {
> 		System.out.println("Externaly defined action");
> 	}
> 		
> 	tree_id = {
> 		System.out.println(r.getText());
> 	}
>
> This could be achieved with regular expressions but would be a 
> primitive
> implementation.
>
> I'd like to know what you think about it.
> Anakreon
> 		
>
>
>
>
> Your use of Yahoo! Groups is subject to 
> http://docs.yahoo.com/info/terms/
>
>
>
>
> Your use of Yahoo! Groups is subject to 
> http://docs.yahoo.com/info/terms/
>
>
--
Co-founder, http://www.jguru.com
Creator, ANTLR Parser Generator: http://www.antlr.org
Lecturer in Comp. Sci., University of San Francisco


 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 



More information about the antlr-interest mailing list