Files
Software-Analysis/ExprParser.g4

127 lines
3.3 KiB
Plaintext
Raw Normal View History

// parser grammar ExprParser;
// options {
// tokenVocab=ExprLexer;
// }
// // Class Parser rules
// prog : class EOF;
// 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
// ;
// methodCode: systemOutPrint* forloop*
// ;
// systemOutPrint
// : SYSTEM DOT OUT DOT PRINT LPAREN data RPAREN SEMI;
// forloop: For LPAREN arg RPAREN SLPAREN methodCode SRPAREN;
// 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 ;
// //TODO: sections 4 to 9
// //Primitive Types
// type:
// primitiveType dims? //Handle int[] or just int
// |name dims?;
// primitiveType:
// primitiveNumericType
// |Boolean;
// primitiveNumericType:
// primitiveIntegralType
// |primitiveFloatingPointType;
// primitiveIntegralType:
// Byte
// |Short
// |Int
// |Long
// |Char;
// primitiveFloatingPointType:
// Float
// |Double;
// 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;
// //Equality Operators
// 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;
// //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;