[antlr-interest] Simple lexical predicate question

Ryan Hollom ryan.hollom at us.lawson.com
Tue Sep 12 07:27:22 PDT 2006


I am writing a parser/lexer for a language with the following constructs, 
and am having difficulty getting the lexer to work properly.

identifier is a Field
        identifier is a LocalField
        identifier is Numeric
        identifier is an AddressField

So, I have the keywords 'is a Field', 'is a', 'is', and 'is an' 
('LocalField' and 'AddressField' can be any name, and 'Numeric' can be one 
of about 30 different things).

I've had a difficult time defining the rules for these, as I get a lexer 
no viable alt error.  Here is an example of my rule:
fieldDefinition :
        identifier 'is a Field'
                        (('is a' | 'is an') identifier) | 'is' 

primitiveType : 'Alpha' | 'Numeric';

The lexer then chokes on input like:
MyField is a Field
        MyNumericField is Numeric

with a no viable alt line 2:20; char='N'

I assume that I need to define lexer rules for the 'is ...' keywords with 
some type of predicate, but haven't been able to figure it out yet.  Could 
someone point me in the right direction?

Thanks in advance,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20060912/a9bfb939/attachment.html 

More information about the antlr-interest mailing list