Deprecated : This code is no longer supported
This commit is contained in:
206
ExprParser.g4
206
ExprParser.g4
@@ -1,126 +1,126 @@
|
|||||||
parser grammar ExprParser;
|
// parser grammar ExprParser;
|
||||||
|
|
||||||
options {
|
// options {
|
||||||
tokenVocab=ExprLexer;
|
// tokenVocab=ExprLexer;
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Class Parser rules
|
// // Class Parser rules
|
||||||
prog : class EOF;
|
// prog : class EOF;
|
||||||
|
|
||||||
class:(Public | Private | Protected ) Class ID SLPAREN method+ SRPAREN;
|
// class:(Public | Private | Protected ) Class ID SLPAREN method+ SRPAREN;
|
||||||
|
|
||||||
//Method Decloration
|
// //Method Decloration
|
||||||
method: Public Static Void ID LPAREN arg* RPAREN SLPAREN methodCode SRPAREN
|
// method: Public Static Void ID LPAREN arg* RPAREN SLPAREN methodCode SRPAREN
|
||||||
| Private Static Void ID SLPAREN methodCode SRPAREN
|
// | Private Static Void ID SLPAREN methodCode SRPAREN
|
||||||
| Protected Static Void ID SLPAREN methodCode SRPAREN
|
// | Protected Static Void ID SLPAREN methodCode SRPAREN
|
||||||
;
|
// ;
|
||||||
|
|
||||||
methodCode: systemOutPrint* forloop*
|
// methodCode: systemOutPrint* forloop*
|
||||||
;
|
// ;
|
||||||
|
|
||||||
systemOutPrint
|
// systemOutPrint
|
||||||
: SYSTEM DOT OUT DOT PRINT LPAREN data RPAREN SEMI;
|
// : SYSTEM DOT OUT DOT PRINT LPAREN data RPAREN SEMI;
|
||||||
|
|
||||||
forloop: For LPAREN arg RPAREN SLPAREN methodCode SRPAREN;
|
// forloop: For LPAREN arg RPAREN SLPAREN methodCode SRPAREN;
|
||||||
|
|
||||||
arg: String arraydef* ID
|
// arg: String arraydef* ID
|
||||||
| exp SEMI exp SEMI exp
|
// | exp SEMI exp SEMI exp
|
||||||
;
|
// ;
|
||||||
|
|
||||||
exp: define
|
// exp: define
|
||||||
| ID GreterEql INTE
|
// | ID GreterEql INTE
|
||||||
| ID INCMENT
|
// | ID INCMENT
|
||||||
;
|
// ;
|
||||||
define : Int ID EQL INTE;
|
// define : Int ID EQL INTE;
|
||||||
arraydef: SqLPAREN (data T)* SqRPAREN;
|
// arraydef: SqLPAREN (data T)* SqRPAREN;
|
||||||
data: STRING ;
|
// data: STRING ;
|
||||||
|
|
||||||
|
|
||||||
//TODO: sections 4 to 9
|
// //TODO: sections 4 to 9
|
||||||
|
|
||||||
//Primitive Types
|
// //Primitive Types
|
||||||
type:
|
// type:
|
||||||
primitiveType dims? //Handle int[] or just int
|
// primitiveType dims? //Handle int[] or just int
|
||||||
|name dims?;
|
// |name dims?;
|
||||||
|
|
||||||
primitiveType:
|
// primitiveType:
|
||||||
primitiveNumericType
|
// primitiveNumericType
|
||||||
|Boolean;
|
// |Boolean;
|
||||||
|
|
||||||
primitiveNumericType:
|
// primitiveNumericType:
|
||||||
primitiveIntegralType
|
// primitiveIntegralType
|
||||||
|primitiveFloatingPointType;
|
// |primitiveFloatingPointType;
|
||||||
|
|
||||||
primitiveIntegralType:
|
// primitiveIntegralType:
|
||||||
Byte
|
// Byte
|
||||||
|Short
|
// |Short
|
||||||
|Int
|
// |Int
|
||||||
|Long
|
// |Long
|
||||||
|Char;
|
// |Char;
|
||||||
|
|
||||||
primitiveFloatingPointType:
|
// primitiveFloatingPointType:
|
||||||
Float
|
// Float
|
||||||
|Double;
|
// |Double;
|
||||||
|
|
||||||
dims:
|
// dims:
|
||||||
(LBracket RBracket)*;
|
// (LBracket RBracket)*;
|
||||||
|
|
||||||
name:
|
// name:
|
||||||
Identifier (Dot Identifier)*;
|
// Identifier (Dot Identifier)*;
|
||||||
// Operators 15.20 Relational Operators
|
// // Operators 15.20 Relational Operators
|
||||||
relationalExpression:
|
// relationalExpression:
|
||||||
shiftExpression
|
// shiftExpression
|
||||||
|relationalExpression LessThan ShiftExpression
|
// |relationalExpression LessThan ShiftExpression
|
||||||
|relationalExpression GreaterThan ShiftExpression
|
// |relationalExpression GreaterThan ShiftExpression
|
||||||
|relationalExpression LessOrEqual ShiftExpression
|
// |relationalExpression LessOrEqual ShiftExpression
|
||||||
|relationalExpression GreaterOrEqual ShiftExpression
|
// |relationalExpression GreaterOrEqual ShiftExpression
|
||||||
|relationalExpression InstanceOf ReferenceType;
|
// |relationalExpression InstanceOf ReferenceType;
|
||||||
|
|
||||||
//Equality Operators
|
// //Equality Operators
|
||||||
|
|
||||||
equalityExpression:
|
// equalityExpression:
|
||||||
relationalExpression
|
// relationalExpression
|
||||||
|equalityExpression EqualEqual relationalExpression
|
// |equalityExpression EqualEqual relationalExpression
|
||||||
|equalityExpression NotEqualTo relationalExpression;
|
// |equalityExpression NotEqualTo relationalExpression;
|
||||||
|
|
||||||
//Bitwise and Logical Operators
|
// //Bitwise and Logical Operators
|
||||||
andExpression:
|
// andExpression:
|
||||||
equalityExpression
|
// equalityExpression
|
||||||
|andExpression BitwiseAND andExpression;
|
// |andExpression BitwiseAND andExpression;
|
||||||
exclusiveOrExpression:
|
// exclusiveOrExpression:
|
||||||
andExpression
|
// andExpression
|
||||||
|exclusiveOrExpression BitwiseXOR andExpression;
|
// |exclusiveOrExpression BitwiseXOR andExpression;
|
||||||
inclusiveOrExpression:
|
// inclusiveOrExpression:
|
||||||
exclusiveOrExpression
|
// exclusiveOrExpression
|
||||||
inclusiveOrExpression BitwiseOR exclusiveOrExpression;
|
// inclusiveOrExpression BitwiseOR exclusiveOrExpression;
|
||||||
//Conditional And (&&)
|
// //Conditional And (&&)
|
||||||
conditionalAndExpression:
|
// conditionalAndExpression:
|
||||||
inclusiveOrExpression
|
// inclusiveOrExpression
|
||||||
|conditionalAndExpression ConditionalAnd inclusiveOrExpression;
|
// |conditionalAndExpression ConditionalAnd inclusiveOrExpression;
|
||||||
//conditional Or (||)
|
// //conditional Or (||)
|
||||||
conditionalOrExpression:
|
// conditionalOrExpression:
|
||||||
conditionalAndExpression
|
// conditionalAndExpression
|
||||||
|conditionalOrExpression ConditionalOr conditionalAndExpression;
|
// |conditionalOrExpression ConditionalOr conditionalAndExpression;
|
||||||
//conditional Operator (?)
|
// //conditional Operator (?)
|
||||||
conditionalExpression:
|
// conditionalExpression:
|
||||||
conditionalOrExpression
|
// conditionalOrExpression
|
||||||
|conditionalOrExpression QuestionMark exp Colon conditionalOrExpression;
|
// |conditionalOrExpression QuestionMark exp Colon conditionalOrExpression;
|
||||||
|
|
||||||
//Assignment operators
|
// //Assignment operators
|
||||||
assignmentExpression:
|
// assignmentExpression:
|
||||||
conditionalExpression
|
// conditionalExpression
|
||||||
|assignment;
|
// |assignment;
|
||||||
assignment:
|
// assignment:
|
||||||
leftHandSide assignmentOperator assignmentExpression;
|
// leftHandSide assignmentOperator assignmentExpression;
|
||||||
leftHandSide:
|
// leftHandSide:
|
||||||
expressionName;
|
// expressionName;
|
||||||
|fieldAccess
|
// |fieldAccess
|
||||||
|arrayAccess;
|
// |arrayAccess;
|
||||||
assignmentOperator:
|
// assignmentOperator:
|
||||||
Assignment | MultiplyAssign | DivideAssign | RemainderAssign | AddAssign | SubtractAssign | LeftShiftAssign
|
// Assignment | MultiplyAssign | DivideAssign | RemainderAssign | AddAssign | SubtractAssign | LeftShiftAssign
|
||||||
| SighnedRightShiftAssign | BitwiseANDAssign | BitwiseXORAssign | BitwiseORAssign;
|
// | SighnedRightShiftAssign | BitwiseANDAssign | BitwiseXORAssign | BitwiseORAssign;
|
||||||
|
|
||||||
//Determining Meaning of a Name (Section 6.5)
|
// //Determining Meaning of a Name (Section 6.5)
|
||||||
expressionName:
|
// expressionName:
|
||||||
name;
|
// name;
|
||||||
|ambiguousName Dot name;
|
// |ambiguousName Dot name;
|
||||||
|
|||||||
Reference in New Issue
Block a user