[antlr-interest] Tokens and context

John Lam jlam at iunknown.com
Tue Jul 16 11:55:20 PDT 2002


Thanks so much for sending this link along. That chapter rocks (I loved the maze metaphor). For the time being, I'm going to stick with using "any" as a token (I'm quite flexible in the design of my language). 
 
If I have cycles later to revisit this problem I'll see if I can figure out how to deal with "*" in a cleaner fashion. Using a TokenStreamFilter just might be the ticket as well; I can replace earlier "*"''s with the correct tokens.
 
Cheers,
-John
http://www.iunknown.com
 

	-----Original Message----- 
	From: mzukowski at yci.com [mailto:mzukowski at yci.com] 
	Sent: Mon 7/15/2002 5:16 PM 
	To: antlr-interest at yahoogroups.com 
	Cc: 
	Subject: RE: [antlr-interest] Tokens and context
	
	

	As with everything else in antlr, think about how you would do this by hand,
	especially after reading Ter's chapter on "Building Translators by Hand"
	http://www.antlr.org/book/index.html. 
	
	Antlr doesn't have a good way of wildcarding things like that.  It can deal
	with ambiguous keywords but it takes some work, mostly with syntactic
	predicates.  See http://www.jguru.com/faq/view.jsp?EID=140. 
	
	It will mostly come down to dealing with the ambiguities.  '*' can't morph
	into the appropriate token by context, antlr just can't deal with it like
	that.  But you can put in syntactic predicates to elimiate the ambiguities.
	You'll have to hoist them by hand though.
	
	If you have enough context you could write a filter that changes '*' into
	the right thing via a TokenStreamFilter.  See
	www.codetransform.com/filterexample.html.
	
	How complete is your language and what kind of performance do you need?  For
	small examples that will be typed into a search panel as given you could
	iterate through parsing with '*' as identifier, modifier, expression, etc.
	
	Monty
	www.codetransform.com
	
	> -----Original Message-----
	> From: John Lam [mailto:jlam at iunknown.com]
	> Sent: Monday, July 15, 2002 12:16 PM
	> To: Antlr-interest at yahoogroups.com
	> Subject: [antlr-interest] Tokens and context
	>
	>
	> I've been scratching my head over this one. Here's the
	> general problem:
	> I want to be able to use "*" as a wildcarding character. The
	> problem is
	> that it can be treated as either a token or as part of an identifier.
	> Consider:
	>
	> public void System.Foo();
	>
	> I would also like to find this method using the following expressions:
	>
	> [1] * void System.Foo();
	> [2] public void *();
	> [3] public void System.*();
	> [4] public void S*.*();
	>
	> The problem is that * is treated as a token in [1] and as part of the
	> identifier in cases 2-4.
	>
	> Is there a general solution to this problem? Currently I'm using a
	> really crufty hack that involves creating a new token ("any") to
	> represent * in the accessibility modifiers.
	>
	> Thanks!
	>
	> -John
	> http://www.iunknown.com
	>
	> 
	>
	> 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/
	
	
	


 

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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/ms-tnef
Size: 6706 bytes
Desc: not available
Url : http://www.antlr.org/pipermail/antlr-interest/attachments/20020716/eac6f9e9/attachment.bin


More information about the antlr-interest mailing list