[antlr-interest] Suggestion

Balvinder Singh bals1978 at hotmail.com
Fri May 31 05:05:42 PDT 2002


Hi all,

I wrote some lexical rule, plz verify it, these approach seems to me some 
fishy.

options{
k=3;
}

protected
Digit : '0' .. '9'
      ;

protected
Alphabet : 'A' .. 'Z'
         | 'a' .. 'z'
         ;

protected
AlphabeticUserDefinedWord : Alphabet (Alphabet | Digit | '-' | '_')*
                          | Digit (Digit | '-' | '_')* Alphabet
                          ;

protected
Literal : NonNumeric | Numeric
        ;

protected
NonNumeric : '"' ( (~'"') | '"' '"' )* '"'
           | '\'' ( (~'\'') | '\'' '\'')* '\''
           | ('X' | 'x') '"' HexDigits '"'
           | ('X' | 'x') '\'' HexDigits '\''
           ;
protected
Numeric : (('+' | '-')?('0' .. '9')* '.' ('0' .. '9')+)=>('+' | '-')?('0' .. 
'9')* '.' ('0' .. '9')+
        | ('+' | '-')? ('0' .. '9')+
        ;

protected
HexDigits : ('0' .. '9' | 'A' .. 'F' | 'a' .. 'f')+
          ;


protected
LevelNumber : (('0')? ('1' .. '9'))=> ('0')? ('1' .. '9')
            | (('1' .. '4') ('0' .. '9'))=> ('1' .. '4') ('0' .. '9')
            | ('6' '6')=>'6' '6'
            | ('7' '7')=>'7' '7'
            | ('8' '8')=>'8' '8'
            ;

protected
LiteralOrLevelNumber : (NonNumeric )=>NonNumeric { setType(Literal); }
                     | (Numeric)=>Numeric { setType(Literal); }
                     | (LevelNumber)=>LevelNumber { setType(LevelNumber); }
                     ;

protected
LiteralOrLevelNumberOrAlphabeticUserDefinedWord :
(LiteralOrLevelNumber)=>LiteralOrLevelNumber { 
setType(LiteralOrLevelNumber); }
                                                |
                                                
(AlphabeticUserDefinedWord)=>AlphabeticUserDefinedWord
                                                {
                                                
setType(AlphabeticUserDefinedWord);
                                                }
                                                ;



Initially I have conflict LiteralOrLevelNumber and AlphabeticUserDefinedWord 
then I made new Nonterminal LiteralOrLevelNumberOrAlphabeticUserDefinedWord, 
Is this approach is tech. Ok?


balvinder




_________________________________________________________________
Chat with friends online, try MSN Messenger: http://messenger.msn.com


 

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



More information about the antlr-interest mailing list