Merge branch 'main' of github.com:Patel-Mann/CPSC-499
This commit is contained in:
@@ -238,7 +238,7 @@ UnsighnedRightShiftAssign: '>>>=';
|
|||||||
|
|
||||||
|
|
||||||
//IDENTIFIERS -------------------------------------------------------------------------------------------------------------------------------------------
|
//IDENTIFIERS -------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
Identifier: JavaLetter JavaLetterOrDigit;
|
IDENTIFIER: JavaLetter JavaLetterOrDigit;
|
||||||
|
|
||||||
fragment JavaLetter:
|
fragment JavaLetter:
|
||||||
[a-zA-Z_$];
|
[a-zA-Z_$];
|
||||||
|
|||||||
124
ExprSyntactic.g4
Normal file
124
ExprSyntactic.g4
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
parser grammar ExprSyntactic;
|
||||||
|
|
||||||
|
options {
|
||||||
|
tokenVocab=ExprLexer;
|
||||||
|
}
|
||||||
|
|
||||||
|
identifier: IDENTIFIER;
|
||||||
|
|
||||||
|
qualifiedIdentifier: identifier {'.' identifier};
|
||||||
|
|
||||||
|
literal: IntegerLiteral
|
||||||
|
| FloatingPointLiteral
|
||||||
|
| CharacterLiteral
|
||||||
|
| StringLiteral
|
||||||
|
| BooleanLiteral
|
||||||
|
| NullLiteral;
|
||||||
|
|
||||||
|
expression: expression1 [assignmentOperator expression1];
|
||||||
|
|
||||||
|
assignmentOperator: Assignment
|
||||||
|
| AddAssign
|
||||||
|
| SubtractAssign
|
||||||
|
| MultiplyAssign
|
||||||
|
| DivideAssign
|
||||||
|
| BitwiseANDAssign
|
||||||
|
| BitwiseORAssign
|
||||||
|
| BitwiseXORAssign
|
||||||
|
| RemainderAssign
|
||||||
|
| LeftShiftAssign
|
||||||
|
| SighnedRightShiftAssign
|
||||||
|
| UnsighnedRightShiftAssign;
|
||||||
|
|
||||||
|
type: identifier {'.' identifier} bracketsOpt
|
||||||
|
| basicType;
|
||||||
|
|
||||||
|
statementExpression: expression;
|
||||||
|
|
||||||
|
constantExpression: expression;
|
||||||
|
|
||||||
|
expression1: expression2 [expression1Rest];
|
||||||
|
|
||||||
|
expression1Rest: ['?' expression ':' expression1];
|
||||||
|
|
||||||
|
expression2: expression3 [expression2Rest];
|
||||||
|
|
||||||
|
expression2Rest: {infixop expression3}
|
||||||
|
| expression3 INSTANCEOF type;
|
||||||
|
|
||||||
|
infixop: ConditionalOR
|
||||||
|
| ConditionalAND
|
||||||
|
| BitwiseOR
|
||||||
|
| BitwiseXOR
|
||||||
|
| BitwiseAND
|
||||||
|
| EqualTO
|
||||||
|
| NotEqualTO
|
||||||
|
| LessThan
|
||||||
|
| GreterThan
|
||||||
|
| LessThanEqualTo
|
||||||
|
| GreaterThanEqualTo
|
||||||
|
| LeftShift
|
||||||
|
| SignedRightShift
|
||||||
|
| UnsignedRightShift
|
||||||
|
| Addition
|
||||||
|
| Subtraction
|
||||||
|
| Multiplication
|
||||||
|
| Division
|
||||||
|
| Remainder;
|
||||||
|
|
||||||
|
expression3: prefixOp expression3 // Recursion
|
||||||
|
| (expr | type) expression3
|
||||||
|
| primary {selector} {postfixOP};
|
||||||
|
|
||||||
|
primary: (expression)
|
||||||
|
| This [arguments]
|
||||||
|
| Super superSuffix
|
||||||
|
| literal
|
||||||
|
| New creator
|
||||||
|
| identifier {'.' identifier} [identifierSuffix]
|
||||||
|
| basicType bracketsOpt '.'Class
|
||||||
|
| Void '.' Class;
|
||||||
|
|
||||||
|
identifierSuffix: '['(']' bracketsOpt '.' Class '/' expression ']')
|
||||||
|
| arguments
|
||||||
|
|'.' '(' Class '/' This '/' Super arguments '/' New innerCreator ')';
|
||||||
|
// confused about this need to ask prof
|
||||||
|
|
||||||
|
prefixOp: Increment
|
||||||
|
| Decrement
|
||||||
|
| LogicalComplement
|
||||||
|
| BitWiseComplement
|
||||||
|
| Addition
|
||||||
|
| Subtraction;
|
||||||
|
|
||||||
|
postfixOp: Increment | Decrement;
|
||||||
|
|
||||||
|
selector: '.' identifier [arguments]
|
||||||
|
| '.' This
|
||||||
|
| '.' Super superSuffix
|
||||||
|
| '.' New innerCreator
|
||||||
|
| [expression];
|
||||||
|
|
||||||
|
superSuffix: arguments
|
||||||
|
| '.' identifier [arguments];
|
||||||
|
|
||||||
|
basicType: Byte
|
||||||
|
| Short
|
||||||
|
| Char
|
||||||
|
| Int
|
||||||
|
| Long
|
||||||
|
| Float
|
||||||
|
| Double
|
||||||
|
| Boolean;
|
||||||
|
|
||||||
|
argumentsOpt: [arguments];
|
||||||
|
|
||||||
|
arguments: '(' [expression {',' expression}] ')';
|
||||||
|
|
||||||
|
bracketsOpt: {'[' ']'}; //ask prof.
|
||||||
|
|
||||||
|
creator: qualifiedIdentifier ( arrayCreatorRest | classCreatorRest);
|
||||||
|
|
||||||
|
innerCreator: identifier classCreatorRest;
|
||||||
|
|
||||||
|
arrayCreatorRest: '[' ( ']' bracketsOpt arrayInitializer | expression ']' {[expression]};
|
||||||
@@ -216,7 +216,7 @@ RemainderAssign
|
|||||||
LeftShiftAssign
|
LeftShiftAssign
|
||||||
SighnedRightShiftAssign
|
SighnedRightShiftAssign
|
||||||
UnsighnedRightShiftAssign
|
UnsighnedRightShiftAssign
|
||||||
Identifier
|
IDENTIFIER
|
||||||
|
|
||||||
rule names:
|
rule names:
|
||||||
UnicodeInputCharacter
|
UnicodeInputCharacter
|
||||||
@@ -360,7 +360,7 @@ RemainderAssign
|
|||||||
LeftShiftAssign
|
LeftShiftAssign
|
||||||
SighnedRightShiftAssign
|
SighnedRightShiftAssign
|
||||||
UnsighnedRightShiftAssign
|
UnsighnedRightShiftAssign
|
||||||
Identifier
|
IDENTIFIER
|
||||||
JavaLetter
|
JavaLetter
|
||||||
JavaLetterOrDigit
|
JavaLetterOrDigit
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Generated from /Users/mannpatel/Desktop/CPSC-499/ExprLexer.g4 by ANTLR 4.13.2
|
// Generated from C:/Users/mande/OneDrive - University of Calgary/Documents/GitHub/CPSC-499/ExprLexer.g4 by ANTLR 4.13.2
|
||||||
import org.antlr.v4.runtime.Lexer;
|
import org.antlr.v4.runtime.Lexer;
|
||||||
import org.antlr.v4.runtime.CharStream;
|
import org.antlr.v4.runtime.CharStream;
|
||||||
import org.antlr.v4.runtime.Token;
|
import org.antlr.v4.runtime.Token;
|
||||||
@@ -36,7 +36,7 @@ public class ExprLexer extends Lexer {
|
|||||||
UnsignedRightShift=95, AddAssign=96, SubtractAssign=97, MultiplyAssign=98,
|
UnsignedRightShift=95, AddAssign=96, SubtractAssign=97, MultiplyAssign=98,
|
||||||
DivideAssign=99, BitwiseANDAssign=100, BitwiseORAssign=101, BitwiseXORAssign=102,
|
DivideAssign=99, BitwiseANDAssign=100, BitwiseORAssign=101, BitwiseXORAssign=102,
|
||||||
RemainderAssign=103, LeftShiftAssign=104, SighnedRightShiftAssign=105,
|
RemainderAssign=103, LeftShiftAssign=104, SighnedRightShiftAssign=105,
|
||||||
UnsighnedRightShiftAssign=106, Identifier=107;
|
UnsighnedRightShiftAssign=106, IDENTIFIER=107;
|
||||||
public static String[] channelNames = {
|
public static String[] channelNames = {
|
||||||
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
|
||||||
};
|
};
|
||||||
@@ -73,7 +73,7 @@ public class ExprLexer extends Lexer {
|
|||||||
"Remainder", "LeftShift", "SignedRightShift", "UnsignedRightShift", "AddAssign",
|
"Remainder", "LeftShift", "SignedRightShift", "UnsignedRightShift", "AddAssign",
|
||||||
"SubtractAssign", "MultiplyAssign", "DivideAssign", "BitwiseANDAssign",
|
"SubtractAssign", "MultiplyAssign", "DivideAssign", "BitwiseANDAssign",
|
||||||
"BitwiseORAssign", "BitwiseXORAssign", "RemainderAssign", "LeftShiftAssign",
|
"BitwiseORAssign", "BitwiseXORAssign", "RemainderAssign", "LeftShiftAssign",
|
||||||
"SighnedRightShiftAssign", "UnsighnedRightShiftAssign", "Identifier",
|
"SighnedRightShiftAssign", "UnsighnedRightShiftAssign", "IDENTIFIER",
|
||||||
"JavaLetter", "JavaLetterOrDigit"
|
"JavaLetter", "JavaLetterOrDigit"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -119,7 +119,7 @@ public class ExprLexer extends Lexer {
|
|||||||
"SignedRightShift", "UnsignedRightShift", "AddAssign", "SubtractAssign",
|
"SignedRightShift", "UnsignedRightShift", "AddAssign", "SubtractAssign",
|
||||||
"MultiplyAssign", "DivideAssign", "BitwiseANDAssign", "BitwiseORAssign",
|
"MultiplyAssign", "DivideAssign", "BitwiseANDAssign", "BitwiseORAssign",
|
||||||
"BitwiseXORAssign", "RemainderAssign", "LeftShiftAssign", "SighnedRightShiftAssign",
|
"BitwiseXORAssign", "RemainderAssign", "LeftShiftAssign", "SighnedRightShiftAssign",
|
||||||
"UnsighnedRightShiftAssign", "Identifier"
|
"UnsighnedRightShiftAssign", "IDENTIFIER"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ RemainderAssign=103
|
|||||||
LeftShiftAssign=104
|
LeftShiftAssign=104
|
||||||
SighnedRightShiftAssign=105
|
SighnedRightShiftAssign=105
|
||||||
UnsighnedRightShiftAssign=106
|
UnsighnedRightShiftAssign=106
|
||||||
Identifier=107
|
IDENTIFIER=107
|
||||||
'abstract'=6
|
'abstract'=6
|
||||||
'assert'=7
|
'assert'=7
|
||||||
'boolean'=8
|
'boolean'=8
|
||||||
|
|||||||
44
gen/syntactic.g4
Normal file
44
gen/syntactic.g4
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
parser grammar syntactic;
|
||||||
|
|
||||||
|
options {
|
||||||
|
tokenVocab=ExprLexer;
|
||||||
|
}
|
||||||
|
|
||||||
|
identifier: IDENTIFIER;
|
||||||
|
|
||||||
|
qualifiedIdentifier: identifier {'.' identifier};
|
||||||
|
|
||||||
|
literal: IntegerLiteral
|
||||||
|
| FloatingPointLiteral
|
||||||
|
| CharacterLiteral
|
||||||
|
| StringLiteral
|
||||||
|
| BooleanLiteral
|
||||||
|
| NullLiteral;
|
||||||
|
|
||||||
|
expression: expression1 [assignmentOperator expression1];
|
||||||
|
|
||||||
|
assignmentOperator: Assignment
|
||||||
|
| AddAssign
|
||||||
|
| SubtractAssign
|
||||||
|
| MultiplyAssign
|
||||||
|
| DivideAssign
|
||||||
|
| BitwiseANDAssign
|
||||||
|
| BitwiseORAssign
|
||||||
|
| BitwiseXORAssign
|
||||||
|
| RemainderAssign
|
||||||
|
| LeftShiftAssign
|
||||||
|
| SighnedRightShiftAssign
|
||||||
|
| UnsighnedRightShiftAssign;
|
||||||
|
|
||||||
|
type: identifier {'.' identifier} bracketsOpt
|
||||||
|
| basicType;
|
||||||
|
|
||||||
|
statementExpression: expression;
|
||||||
|
|
||||||
|
constantExpression: expression;
|
||||||
|
|
||||||
|
expression1: expression2 [expression1Rest];
|
||||||
|
|
||||||
|
expression1Rest: ['?' expression ':' expression1];
|
||||||
|
|
||||||
|
expression2: expression3 [expression2Rest];
|
||||||
Reference in New Issue
Block a user