[antlr-interest] Problem with Self 4.1 grammar

Jim Idle jimi at temporal-wave.com
Mon Mar 24 01:25:53 PDT 2008


I should add that your predicate can aklso be just ('.' Digit)=> (I 
presume that Digit is a fragment rule, as it should be).

Jim
> Your real needs to add the empty alt:
>
> Real
>    : Decimal
>       (
>           ('.' Decimal)=> '.' Decimal (('e'|'E') ('+'|'-') Decimal)?
>           | // Just an integer { $type = Integer; }
>       )
>    ;
>
> Dot  : '.' ;
>
>
>> Hello again,
>>
>> I am currently building a self 4.1 grammar which so far seems to work 
>> reasonably well for certain specific files but I came across a 
>> problem in the grammar which I am not sure how to resolve. The 
>> problem is that Self like Smalltalk uses '.' as a statement separator 
>> and there appears to be some conflict in the case:
>>
>> [ x == 1. ]   
>> Where it seems unable to determine that 1 is an int obviously adding 
>> white space
>> [ x == 1 . ]
>> works. I assume this is some sort of lexing problem but the only rule 
>> I have which may conflict is:
>>
>> Real
>>     : Decimal ( ('.' Decimal) => '.' Decimal ) ( ('e'|'E') ('+'|'-') 
>> Decimal )?
>>     ;
>>
>> with Integer and Decimal defined as:
>>
>> Integer
>>     : Decimal
>>     | Base GeneralDigit+
>>     ;
>>
>> Decimal
>>         : Digit+
>>         ;
>>
>> Thanks in advance,
>>
>> Carter.
>>
>> Is there some way to peek into the token stream to see what the lexer 
>> is doing? It seems like the lexing problems given some of the 
>> operator ambiguities in Self are causing most of my problems.
>>
>>       
>> ____________________________________________________________________________________ 
>>
>> Looking for last minute shopping deals?  Find them fast with Yahoo! 
>> Search.  
>> http://tools.search.yahoo.com/newsearch/category.php?category=shopping
>>   
>



More information about the antlr-interest mailing list