[antlr-interest] Translating LR to LL - Infinite recurrsion and Non-determinism error
Sharon Li
hushlee83 at yahoo.com.sg
Mon Feb 10 16:42:38 PST 2003
Hi can someone pls help me solve this non-determinism error? I'm trying to translate LR to LL, encountered many infinite recurrsion and non-determinism errors. Any suggestions or advice?
class LParser extends Parser;
options { k=4; }
lsys : ("Lystem"|"lsystem") COLON (INTEGER) ;
ring : ("R"|"r") "ing" ("L"|"l") "system";
seed : ("Seed"|"seed") COLON INTEGER;
dLength : ("D"|"d") "erivation" ("L"|"l") "length" COLON INTEGER;
ignore : ("Ignore"|"ignore") COLON ;
consider : ("Consider"|"consider") COLON ;
operators : (OR | AND | EQUAL | NOTEQUAL | LT | GT | LE | GE | PLUS | MINUS | TIMES | DIVIDE | REM | POW) ;
//lValue : "&" (NAME) ;
value : (INTEGER) ;
arrayRef: LBRACK (expression) RBRACK ;
arrayRefs : (arrayRef)+ ;
name : NAME (arrayRefs)* ;
parameters : expression (COMMA expression)* ;
functionName: "tan" | "sin" | "cos" | "atan" | "asin" | "acos" | "ran" | "nran" | "bran" | "biran"
| "srand" | "exp" | "log" | "floor" | "ceil" | "trunc" | "fabs" | "sign" | "inblob" | "stop"
| "sqrt" | "printf" | "fprintf" | "fopen" | "fclose" | "fflush" | "fscanf" | "func"
| "play" | "funcX" | "funcY" | "funcZ" | "lfunc"
;
function : functionName LPAREN parameters RPAREN ;
expression: MINUS expression
| NOT expression
| (expression ((operators) | (question expression COLON)) expression)
| LPAREN expression RPAREN
| "&" (NAME)
| function
| name
| INTEGER
;
arrayDim : LBRACK expression RBRACK ;
arrayDims : (arrayDim)+;
arrayInitBlock : LBRACE parameters RBRACE ;
arrayDef: NAME arrayDims ("=" arrayInitBlock)* ;
arrayDefs : (arrayDef) (COMMA arrayDef)* ;
arrayDefStatement : "array" arrayDefs SEMI ;
externalDef : (NAME)(arrayDims)* ("=" arrayInitBlock)* ;
externalDefs : (externalDef) (COMMA externalDef)* ;
externalDefStatement : "external" externalDefs SEMI ;
defStatement: arrayDefStatement
| externalDefStatement ;
defStatements : (defStatement)+;
defineBlock : LBRACE defStatements RBRACE;
defines : ("Define"|"define") COLON defineBlock;
block : LBRACE (expression) RBRACE;
startBlock : ("Start"|"start") COLON block;
endBlock : ("End"|"end") COLON block;
/*******lexer class *******************************/
class LLexer extends Lexer;
options{
charVocabulary='\3'..'\377';
k = 4;
}
protected ALPHA : ( 'a'..'z' | 'A'..'Z' );
protected DIGIT : ('0'..'9') ;
//EXP : ('E'|'e') (SIGN)? (DIGIT)+;
INTEGER: (DIGIT)+ ;
NAME : (ALPHA) (ALPHA|DIGIT|UNDERSCORE)* ;
OR : "||";
AND : "&&";
EQUAL : "==";
NOTEQUAL : "!=";
GT : '>';
LT : '<';
LE : "<=";
GE : ">=";
PLUS : '+';
MINUS : '-';
DIVIDE : '/';
TIMES : '*';
POW : '^';
REM : '%';
/***/
COLON : ':';
DOT : '.';
COMMA : ',';
SEMI : ';';
QUESTION : '?';
NOT : '!';
UNDERSCORE : '_';
LPAREN : '(';
RPAREN : ')';
LBRACK : '[';
RBRACK : ']';
LCURLY : '{';
RCURLY : '}';
HEX : '#';
Yahoo! Travel
- Valentine surprise deals. Book now!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20030211/4cb228e7/attachment.html
More information about the antlr-interest
mailing list