[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