I have two codes and I would like to be able to see their identical syntax with antlr
String s1 = "public class Test { public static int add (int i, int j) { int g = i + j; return g;}}";
String s2 = "public class Essai { public static int add (int nb1, int nb2) {int nb3 = nb1 + nb2; return nb3;}}";
I transform the string into a tree via antlr
public static Java8Parser.CompilationUnitContext getTree(String s) {
CharStream cs = CharStreams.fromString(s);
antlr4.Java8Lexer java8Lexer = new antlr4.Java8Lexer (cs);
CommonTokenStream commonTokenStream = new CommonTokenStream(java8Lexer);
antlr4.Java8Parser java8Parser = new antlr4.Java8Parser (commonTokenStream);
Java8Parser.CompilationUnitContext tree = java8Parser.compilationUnit();
System.out.println(tree.toStringTree(java8Parser));
return tree;
}
And I get two similar trees but of course not quite the same
(compilationUnit (typeDeclaration (classDeclaration (normalClassDeclaration (classModifier public)
class Test (classBody { (classBodyDeclaration (classMemberDeclaration (methodDeclaration (methodModifier public) (methodModifier static) (methodHeader (result (unannType (unannPrimitiveType (numericType (integralType int)))))
(methodDeclarator add ( (formalParameterList (formalParameters (formalParameter (unannType (unannPrimitiveType (numericType (integralType int)))) (variableDeclaratorId i))) , (lastFormalParameter (formalParameter (unannType (unannPrimitiveType (numericType (integralType int)))) (variableDeclaratorId j)))) )))
(methodBody (block { (blockStatements (blockStatement (localVariableDeclarationStatement (localVariableDeclaration (unannType (unannPrimitiveType (numericType (integralType int)))) (variableDeclaratorList (variableDeclarator (variableDeclaratorId g) = (variableInitializer (expression (assignmentExpression (conditionalExpression (conditionalOrExpression (conditionalAndExpression (inclusiveOrExpression (exclusiveOrExpression (andExpression (equalityExpression (relationalExpression (shiftExpression (additiveExpression (additiveExpression (multiplicativeExpression (unaryExpression (unaryExpressionNotPlusMinus (postfixExpression (expressionName i)))))) + (multiplicativeExpression (unaryExpression (unaryExpressionNotPlusMinus (postfixExpression (expressionName j))))))))))))))))))))) ;))
(blockStatement (statement (statementWithoutTrailingSubstatement (returnStatement return (expression (assignmentExpression (conditionalExpression (conditionalOrExpression (conditionalAndExpression (inclusiveOrExpression (exclusiveOrExpression (andExpression (equalityExpression (relationalExpression (shiftExpression (additiveExpression (multiplicativeExpression (unaryExpression (unaryExpressionNotPlusMinus (postfixExpression (expressionName g))))))))))))))))) ;))))) }))))) })))) <EOF>)
and
(compilationUnit (typeDeclaration (classDeclaration (normalClassDeclaration (classModifier public)
class Essai (classBody { (classBodyDeclaration (classMemberDeclaration (methodDeclaration (methodModifier public) (methodModifier static) (methodHeader (result (unannType (unannPrimitiveType (numericType (integralType int))))) (methodDeclarator add ( (formalParameterList (formalParameters (formalParameter (unannType (unannPrimitiveType (numericType (integralType int)))) (variableDeclaratorId nb1))) , (lastFormalParameter (formalParameter (unannType (unannPrimitiveType (numericType (integralType int)))) (variableDeclaratorId nb2)))) )))
(methodBody (block { (blockStatements (blockStatement (localVariableDeclarationStatement (localVariableDeclaration (unannType (unannPrimitiveType (numericType (integralType int)))) (variableDeclaratorList (variableDeclarator (variableDeclaratorId nb3) = (variableInitializer (expression (assignmentExpression (conditionalExpression (conditionalOrExpression (conditionalAndExpression (inclusiveOrExpression (exclusiveOrExpression (andExpression (equalityExpression (relationalExpression (shiftExpression (additiveExpression (additiveExpression (multiplicativeExpression (unaryExpression (unaryExpressionNotPlusMinus (postfixExpression (expressionName nb1)))))) + (multiplicativeExpression (unaryExpression (unaryExpressionNotPlusMinus (postfixExpression (expressionName nb2))))))))))))))))))))) ;))
(blockStatement (statement (statementWithoutTrailingSubstatement (returnStatement return (expression (assignmentExpression (conditionalExpression (conditionalOrExpression (conditionalAndExpression (inclusiveOrExpression (exclusiveOrExpression (andExpression (equalityExpression (relationalExpression (shiftExpression (additiveExpression (multiplicativeExpression (unaryExpression (unaryExpressionNotPlusMinus (postfixExpression (expressionName nb3))))))))))))))))) ;))))) }))))) })))) <EOF>)
How can I compare the two codes and say other than different variable names they are the same?