[antlr-interest] Re: Handling identifiers

mzukowski at yci.com mzukowski at yci.com
Thu Jul 24 08:29:22 PDT 2003


You can add attributes to ASTs by subclassing.  Again the gcc grammar has an
example of that (in Java) in TNode.java.

Looks like you handled this in the lexer the right way.

Monty

-----Original Message-----
From: mafw14 [mailto:98vdxjfr02 at sneakemail.com] 
Sent: Thursday, July 24, 2003 1:24 AM
To: antlr-interest at yahoogroups.com
Subject: [antlr-interest] Re: Handling identifiers


--- In antlr-interest at yahoogroups.com, mzukowski at y... wrote:
> Do identifiers get declared?
> 
> You may need to handle this in the parser, the same way I handle
typedefs in
> the gcc grammar http://www.codetransform.com/gcc.html with a
semantic
> predicate.
> 
> Could you give some sample text?
> How do you know when to put an identifier into the literals hash
table?

Thanks for your reply.  The identifiers are not declared within
the language but are predefined.  I do not want to include them
as keywords in the language but have a class that defines them
so the identifiers can be changed and that each identifier can
have attributes (such as data type).  The language is stronly
typed so I want to prevent an integer being compared with a
float etc.

I think I have partly figured it out now - I have modified
the rule for an identifier as follows:

IDENTIFIER
	options {testLiterals=true; }
	: t:LETTERS
	{
		if (Identifier.isNotIdentifier(t.getText()))
		{
			$setType(STRING_T);
		}
	}
	;

I wish to save the data type of each literal or identifier on
the AST.  Is there an easy way to extend the AST to store
additional attibutes?  BTW: This parser is only used as a
checker and does not generate any code.

A sample of the text of the language is:

(MSG_TYPE = XXX) AND (VALUE > 0.001) OR NOT (SOURCE IN ["S1", "S22"])

where MSG_TYPE and SOURCE are identifiers of type STRING_T and
VALUE is of type REAL_T.  XXX is a literal string (does not have to
be enclosed in quotes).  The square brackets enclose a set of
strings.

Thanks, Mark.



 

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/ 




More information about the antlr-interest mailing list