forked from jasder/antlr
Add unambiguous shift and comparison operators to the lexer
This commit is contained in:
parent
ad2b5876a5
commit
c835fc9a79
|
@ -725,7 +725,7 @@ expression
|
|||
| expression ('*'|'/'|'%') expression
|
||||
| expression ('+'|'-') expression
|
||||
| expression ('<' '<' | '>' '>' '>' | '>' '>') expression
|
||||
| expression ('<' '=' | '>' '=' | '>' | '<') expression
|
||||
| expression ('<=' | '>=' | '>' | '<') expression
|
||||
| expression 'instanceof' type
|
||||
| expression ('==' | '!=') expression
|
||||
| expression '&' expression
|
||||
|
@ -735,7 +735,7 @@ expression
|
|||
| expression '||' expression
|
||||
| expression '?' expression ':' expression
|
||||
| expression
|
||||
('='<assoc=right>
|
||||
( '='<assoc=right>
|
||||
| '+='<assoc=right>
|
||||
| '-='<assoc=right>
|
||||
| '*='<assoc=right>
|
||||
|
@ -743,9 +743,9 @@ expression
|
|||
| '&='<assoc=right>
|
||||
| '|='<assoc=right>
|
||||
| '^='<assoc=right>
|
||||
| '>' '>' '='<assoc=right>
|
||||
| '>' '>' '>' '='<assoc=right>
|
||||
| '<' '<' '='<assoc=right>
|
||||
| '>>='<assoc=right>
|
||||
| '>>>='<assoc=right>
|
||||
| '<<='<assoc=right>
|
||||
| '%='<assoc=right>
|
||||
)
|
||||
expression
|
||||
|
@ -1141,6 +1141,8 @@ TILDE : '~';
|
|||
QUESTION : '?';
|
||||
COLON : ':';
|
||||
EQUAL : '==';
|
||||
LE : '<=';
|
||||
GE : '>=';
|
||||
NOTEQUAL : '!=';
|
||||
AND : '&&';
|
||||
OR : '||';
|
||||
|
@ -1163,6 +1165,9 @@ AND_ASSIGN : '&=';
|
|||
OR_ASSIGN : '|=';
|
||||
XOR_ASSIGN : '^=';
|
||||
MOD_ASSIGN : '%=';
|
||||
LSHIFT_ASSIGN : '<<=';
|
||||
RSHIFT_ASSIGN : '>>=';
|
||||
URSHIFT_ASSIGN : '>>>=';
|
||||
|
||||
Identifier
|
||||
: JavaLetter JavaLetterOrDigit*
|
||||
|
|
|
@ -719,23 +719,9 @@ assignmentOperator
|
|||
| '|='
|
||||
| '^='
|
||||
| '%='
|
||||
| t1='<' t2='<' t3='='
|
||||
// { $t1.getLine() == $t2.getLine() &&
|
||||
// $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
|
||||
// $t2.getLine() == $t3.getLine() &&
|
||||
// $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
|
||||
| t1='>' t2='>' t3='>' t4='='
|
||||
// { $t1.getLine() == $t2.getLine() &&
|
||||
// $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
|
||||
// $t2.getLine() == $t3.getLine() &&
|
||||
// $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() &&
|
||||
// $t3.getLine() == $t4.getLine() &&
|
||||
// $t3.getCharPositionInLine() + 1 == $t4.getCharPositionInLine() }?
|
||||
| t1='>' t2='>' t3='='
|
||||
// { $t1.getLine() == $t2.getLine() &&
|
||||
// $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() &&
|
||||
// $t2.getLine() == $t3.getLine() &&
|
||||
// $t2.getCharPositionInLine() + 1 == $t3.getCharPositionInLine() }?
|
||||
| '<<='
|
||||
| '>>='
|
||||
| '>>>='
|
||||
;
|
||||
|
||||
conditionalExpression
|
||||
|
@ -775,14 +761,10 @@ relationalExpression
|
|||
;
|
||||
|
||||
relationalOp
|
||||
: t1='<' t2='='
|
||||
// { $t1.getLine() == $t2.getLine() &&
|
||||
// $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
|
||||
| t1='>' t2='='
|
||||
// { $t1.getLine() == $t2.getLine() &&
|
||||
// $t1.getCharPositionInLine() + 1 == $t2.getCharPositionInLine() }?
|
||||
| '<'
|
||||
| '>'
|
||||
: '<='
|
||||
| '>='
|
||||
| '<'
|
||||
| '>'
|
||||
;
|
||||
|
||||
shiftExpression
|
||||
|
@ -1243,6 +1225,8 @@ TILDE : '~';
|
|||
QUESTION : '?';
|
||||
COLON : ':';
|
||||
EQUAL : '==';
|
||||
LE : '<=';
|
||||
GE : '>=';
|
||||
NOTEQUAL : '!=';
|
||||
AND : '&&';
|
||||
OR : '||';
|
||||
|
@ -1265,6 +1249,9 @@ AND_ASSIGN : '&=';
|
|||
OR_ASSIGN : '|=';
|
||||
XOR_ASSIGN : '^=';
|
||||
MOD_ASSIGN : '%=';
|
||||
LSHIFT_ASSIGN : '<<=';
|
||||
RSHIFT_ASSIGN : '>>=';
|
||||
URSHIFT_ASSIGN : '>>>=';
|
||||
|
||||
Identifier
|
||||
: JavaLetter JavaLetterOrDigit*
|
||||
|
|
Loading…
Reference in New Issue