[antlr-interest] Simple lexical predicate question
    Ryan Hollom 
    ryan.hollom at us.lawson.com
       
    Tue Sep 12 07:27:22 PDT 2006
    
    
  
Greetings-
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'
                (identifier 
                        (('is a' | 'is an') identifier) | 'is' 
primitiveType)
                );
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,
Ryan
-------------- 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