Deprecated : This code is no longer supported

This commit is contained in:
Mann Patel
2025-09-26 22:00:50 -06:00
parent 65bb1f8018
commit b6d5e913ec

View File

@@ -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;