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