Skip to content
This repository was archived by the owner on Mar 8, 2020. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 19 additions & 16 deletions ANNOTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,30 +28,31 @@
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='MethodInvocation'\]/\*\[@internalRole\]\[@internalRole='expression'\] | CallReceiver |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='MethodInvocation'\]/\*\[@internalRole\]\[@internalRole='name'\] | CallCallee |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='MethodInvocation'\]/\*\[@internalRole\]\[@internalRole='arguments'\] | CallPositionalArgument |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='IfStatement'\] | If |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='IfStatement'\] | If, Statement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='IfStatement'\]/\*\[@internalRole\]\[@internalRole='expression'\] | IfCondition |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='IfStatement'\]/\*\[@internalRole\]\[@internalRole='thenStatement'\] | IfBody |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='IfStatement'\]/\*\[@internalRole\]\[@internalRole='elseStatement'\] | IfElse |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='SwitchStatement'\] | Switch |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='SwitchStatement'\] | Switch, Statement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='SwitchStatement'\]/\*\[@InternalType='SwitchCase'\]/self::\*\[child::\*\] | SwitchCase |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='SwitchStatement'\]/\*\[@InternalType='SwitchCase'\]/self::\*\[child::\*\]/\*\[@internalRole\]\[@internalRole='expression'\] | SwitchCaseCondition |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='SwitchStatement'\]/\*\[@InternalType='SwitchCase'\]/self::\*\[not\(child::\*\)\] | SwitchDefault |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='SwitchStatement'\]/\*\[@InternalType='ExpressionStatement'\] | SwitchCaseBody |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='EnhancedForStatement'\] | ForEach |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='EnhancedForStatement'\]/\*\[@internalRole\]\[@internalRole='parameter'\] | ForInit |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='EnhancedForStatement'\] | ForEach, Statement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='EnhancedForStatement'\]/\*\[@internalRole\]\[@internalRole='parameter'\] | ForInit, ForUpdate |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='EnhancedForStatement'\]/\*\[@internalRole\]\[@internalRole='expression'\] | ForExpression |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='EnhancedForStatement'\]/\*\[@internalRole\]\[@internalRole='body'\] | ForBody |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='ForStatement'\] | For |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='ForStatement'\] | For, Statement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='ForStatement'\]/\*\[@internalRole\]\[@internalRole='initializers'\] | ForInit |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='ForStatement'\]/\*\[@internalRole\]\[@internalRole='expression'\] | ForExpression |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='ForStatement'\]/\*\[@internalRole\]\[@internalRole='updaters'\] | ForUpdate |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='ForStatement'\]/\*\[@internalRole\]\[@internalRole='body'\] | ForBody |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='WhileStatement'\] | While |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='WhileStatement'\] | While, Statement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='WhileStatement'\]/\*\[@internalRole\]\[@internalRole='expression'\] | WhileCondition |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='WhileStatement'\]/\*\[@internalRole\]\[@internalRole='body'\] | WhileBody |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='DoStatement'\] | DoWhile |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='DoStatement'\] | DoWhile, Statement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='DoStatement'\]/\*\[@internalRole\]\[@internalRole='expression'\] | DoWhileCondition |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='DoStatement'\]/\*\[@internalRole\]\[@internalRole='body'\] | DoWhileBody |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='InfixExpression'\] | BinaryExpression, BinaryExpressionOp |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='InfixExpression'\]/self::\*\[@operator\]\[@operator='\+'\] | OpAdd |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='InfixExpression'\]/self::\*\[@operator\]\[@operator='\-'\] | OpSubstract |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='InfixExpression'\]/self::\*\[@operator\]\[@operator='\*'\] | OpMultiply |
Expand All @@ -65,6 +66,8 @@
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='InfixExpression'\]/self::\*\[@operator\]\[@operator='&&'\] | OpBooleanAnd |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='InfixExpression'\]/self::\*\[@operator\]\[@operator='\|\|'\] | OpBooleanOr |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='InfixExpression'\]/self::\*\[@operator\]\[@operator='^'\] | OpBooleanXor |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='InfixExpression'\]/\*\[@internalRole\]\[@internalRole='leftOperand'\] | BinaryExpressionLeft |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='InfixExpression'\]/\*\[@internalRole\]\[@internalRole='rightOperand'\] | BinaryExpressionRight |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='PostfixExpression'\]/self::\*\[@operator\]\[@operator='\+\+'\] | OpPostIncrement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='PostfixExpression'\]/self::\*\[@operator\]\[@operator='\-\-'\] | OpPostDecrement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='PrefixExpression'\]/self::\*\[@operator\]\[@operator='\+\+'\] | OpPreIncrement |
Expand All @@ -76,7 +79,7 @@
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Assignment'\] | Assignment |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Assignment'\]/\*\[@internalRole\]\[@internalRole='leftHandSide'\] | AssignmentVariable |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Assignment'\]/\*\[@internalRole\]\[@internalRole='rightHandSide'\] | AssignmentValue |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Assignment'\]/self::\*\[not\(@operator\]\[@operator='='\)\] | AugmentedAssignmentOperator |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Assignment'\]/self::\*\[not\(@operator\]\[@operator='='\)\] | AugmentedAssignmentOperator, AugmentedAssignment |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Assignment'\]/self::\*\[not\(@operator\]\[@operator='='\)\]/self::\*\[@operator\]\[@operator='\+='\] | OpAdd |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Assignment'\]/self::\*\[not\(@operator\]\[@operator='='\)\]/self::\*\[@operator\]\[@operator='\-='\] | OpSubstract |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Assignment'\]/self::\*\[not\(@operator\]\[@operator='='\)\]/self::\*\[@operator\]\[@operator='\*='\] | OpMultiply |
Expand All @@ -88,15 +91,15 @@
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Assignment'\]/self::\*\[not\(@operator\]\[@operator='='\)\]/self::\*\[@operator\]\[@operator='<<='\] | OpBitwiseLeftShift |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Assignment'\]/self::\*\[not\(@operator\]\[@operator='='\)\]/self::\*\[@operator\]\[@operator='>>='\] | OpBitwiseRightShift |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Assignment'\]/self::\*\[not\(@operator\]\[@operator='='\)\]/self::\*\[@operator\]\[@operator='>>>='\] | OpBitwiseUnsignedRightShift |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='TryStatement'\] | Try |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='TryStatement'\] | Try, Statement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='TryStatement'\]/\*\[@internalRole\]\[@internalRole='body'\] | TryBody |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='TryStatement'\]/\*\[@internalRole\]\[@internalRole='catchClauses'\] | TryCatch |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='TryStatement'\]/\*\[@internalRole\]\[@internalRole='finally'\] | TryFinally |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='ThrowStatement'\] | Throw |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='AssertStatement'\] | Assert |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Block'\] | BlockScope |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='ThrowStatement'\] | Throw, Statement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='AssertStatement'\] | Assert, Statement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Block'\] | BlockScope, Block |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='ExpressionStatement'\] | Statement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='ReturnStatement'\] | Return |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='BreakStatement'\] | Break |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='ThisExpression'\] | This |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Javadoc'\] | Documentation |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='ReturnStatement'\] | Return, Statement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='BreakStatement'\] | Break, Statement |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='ThisExpression'\] | This, Expression |
| /self::\*\[@InternalType='CompilationUnit'\]//\*\[@InternalType='Javadoc'\] | Documentation, Comment |
5 changes: 4 additions & 1 deletion driver/normalizer/annotation.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ var AnnotationRules = On(Any).Self(
On(jdt.PropertyBody).Roles(DoWhileBody),
),

On(jdt.InfixExpression).Self(
On(jdt.InfixExpression).Roles(BinaryExpression, BinaryExpressionOp).Self(
On(HasProperty("operator", "+")).Roles(OpAdd),
On(HasProperty("operator", "-")).Roles(OpSubstract),
On(HasProperty("operator", "*")).Roles(OpMultiply),
Expand All @@ -123,6 +123,9 @@ var AnnotationRules = On(Any).Self(
On(HasProperty("operator", "&&")).Roles(OpBooleanAnd),
On(HasProperty("operator", "||")).Roles(OpBooleanOr),
On(HasProperty("operator", "^")).Roles(OpBooleanXor),
).Children(
On(jdt.PropertyLeftOperand).Roles(BinaryExpressionLeft),
On(jdt.PropertyRightOperand).Roles(BinaryExpressionRight),
),

On(jdt.PostfixExpression).Self(
Expand Down
86 changes: 86 additions & 0 deletions tests/binary_expression.native
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{
"status": "ok",
"errors": [],
"ast": {
"CompilationUnit": {
"internalClass": "CompilationUnit",
"types": [
{
"bodyDeclarations": [
{
"body": {
"internalClass": "Block",
"statements": [
{
"fragments": [
{
"initializer": {
"internalClass": "InfixExpression",
"leftOperand": {
"internalClass": "NumberLiteral",
"line": 3,
"startPosition": 41,
"token": "3"
},
"line": 3,
"operator": "+",
"rightOperand": {
"internalClass": "NumberLiteral",
"line": 3,
"startPosition": 45,
"token": "4"
},
"startPosition": 41
},
"internalClass": "VariableDeclarationFragment",
"name": {
"identifier": "a",
"internalClass": "SimpleName",
"line": 3,
"startPosition": 37
}
}
],
"internalClass": "VariableDeclarationStatement",
"type": {
"internalClass": "PrimitiveType",
"line": 3,
"primitiveTypeCode": "int",
"startPosition": 33
}
}
]
},
"constructor": "false",
"internalClass": "MethodDeclaration",
"line": 2,
"name": {
"identifier": "code",
"internalClass": "SimpleName",
"line": 2,
"startPosition": 20
},
"returnType2": {
"internalClass": "PrimitiveType",
"line": 2,
"primitiveTypeCode": "void",
"startPosition": 15
},
"startPosition": 15
}
],
"interface": "false",
"internalClass": "TypeDeclaration",
"line": 1,
"name": {
"identifier": "Code",
"internalClass": "SimpleName",
"line": 1,
"startPosition": 6
},
"startPosition": 0
}
]
}
}
}
5 changes: 5 additions & 0 deletions tests/binary_expression.source
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class Code {
void code() {
int a = 3 + 4;
}
}
Loading