Skip to content

Instantly share code, notes, and snippets.

@manuelleduc
Created July 26, 2018 09:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save manuelleduc/a0452713da62d9ed6efcf0105c91729e to your computer and use it in GitHub Desktop.
Save manuelleduc/a0452713da62d9ed6efcf0105c91729e to your computer and use it in GitHub Desktop.
package fr.mleduc.simplelanguage.revisitor.revisitor;
import fr.mleduc.simplelanguage.revisitor.model.stmt.Block;
import fr.mleduc.simplelanguage.revisitor.model.stmt.Break;
import fr.mleduc.simplelanguage.revisitor.model.stmt.Continue;
import fr.mleduc.simplelanguage.revisitor.model.stmt.If;
import fr.mleduc.simplelanguage.revisitor.model.stmt.Return;
import fr.mleduc.simplelanguage.revisitor.model.stmt.Stmt;
import fr.mleduc.simplelanguage.revisitor.model.stmt.While;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.And;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.Binary;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.Divide;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.Equal;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.Expr;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.FunctionBody;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.FunctionLiteral;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.Greater;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.GreaterEqual;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.Invoke;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.Lower;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.LowerEqual;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.Minus;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.Multiply;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.Not;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.NotEqual;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.Or;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.Plus;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.ReadArgument;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.ReadLocalVariable;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.Unbox;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.WriteLocalVariable;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.values.BigIntValue;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.values.BoolValue;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.values.IntValue;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.values.LongValue;
import fr.mleduc.simplelanguage.revisitor.model.stmt.expr.values.StringValue;
public interface SLRevisitor<AndT extends BinaryT, BigIntValueT extends ExprT, BinaryT extends ExprT, BlockT extends StmtT, BoolValueT extends ExprT, BreakT extends StmtT, ContinueT extends StmtT, DivideT extends BinaryT, EqualT extends BinaryT, ExprT extends StmtT, FunctionBodyT extends ExprT, FunctionLiteralT extends ExprT, GreaterT extends BinaryT, GreaterEqualT extends BinaryT, IfT extends StmtT, IntValueT extends ExprT, InvokeT extends ExprT, LongValueT extends ExprT, LowerT extends BinaryT, LowerEqualT extends BinaryT, MinusT extends BinaryT, MultiplyT extends BinaryT, NotT extends ExprT, NotEqualT extends BinaryT, OrT extends BinaryT, PlusT extends BinaryT, ReadArgumentT extends ExprT, ReadLocalVariableT extends ExprT, ReturnT extends StmtT, StmtT, StringValueT extends ExprT, UnboxT extends ExprT, WhileT extends StmtT, WriteLocalVariableT extends ExprT> {
NotEqualT _notEqual(NotEqual it);
MinusT _minus(Minus it);
ContinueT _continue(Continue it);
FunctionBodyT _functionBody(FunctionBody it);
AndT _and(And it);
FunctionLiteralT _functionLiteral(FunctionLiteral it);
DivideT _divide(Divide it);
GreaterT _greater(Greater it);
WriteLocalVariableT _writeLocalVariable(WriteLocalVariable it);
ReturnT _return(Return it);
BreakT _break(Break it);
LowerEqualT _lowerEqual(LowerEqual it);
BigIntValueT _bigIntValue(BigIntValue it);
IntValueT _intValue(IntValue it);
BlockT _block(Block it);
IfT _if(If it);
InvokeT _invoke(Invoke it);
NotT _not(Not it);
ReadLocalVariableT _readLocalVariable(ReadLocalVariable it);
ReadArgumentT _readArgument(ReadArgument it);
OrT _or(Or it);
UnboxT _unbox(Unbox it);
GreaterEqualT _greaterEqual(GreaterEqual it);
LongValueT _longValue(LongValue it);
MultiplyT _multiply(Multiply it);
StringValueT _stringValue(StringValue it);
BoolValueT _boolValue(BoolValue it);
PlusT _plus(Plus it);
LowerT _lower(Lower it);
EqualT _equal(Equal it);
WhileT _while(While it);
default NotEqualT $(NotEqual it) {
if(java.util.Objects.equals(NotEqual.class, it.getClass())) return _notEqual((NotEqual) it);
return null;
}
default MinusT $(Minus it) {
if(java.util.Objects.equals(Minus.class, it.getClass())) return _minus((Minus) it);
return null;
}
default ContinueT $(Continue it) {
if(java.util.Objects.equals(Continue.class, it.getClass())) return _continue((Continue) it);
return null;
}
default FunctionBodyT $(FunctionBody it) {
if(java.util.Objects.equals(FunctionBody.class, it.getClass())) return _functionBody((FunctionBody) it);
return null;
}
default AndT $(And it) {
if(java.util.Objects.equals(And.class, it.getClass())) return _and((And) it);
return null;
}
default FunctionLiteralT $(FunctionLiteral it) {
if(java.util.Objects.equals(FunctionLiteral.class, it.getClass())) return _functionLiteral((FunctionLiteral) it);
return null;
}
default DivideT $(Divide it) {
if(java.util.Objects.equals(Divide.class, it.getClass())) return _divide((Divide) it);
return null;
}
default GreaterT $(Greater it) {
if(java.util.Objects.equals(Greater.class, it.getClass())) return _greater((Greater) it);
return null;
}
default BinaryT $(Binary it) {
if(java.util.Objects.equals(Or.class, it.getClass())) return _or((Or) it);
if(java.util.Objects.equals(NotEqual.class, it.getClass())) return _notEqual((NotEqual) it);
if(java.util.Objects.equals(GreaterEqual.class, it.getClass())) return _greaterEqual((GreaterEqual) it);
if(java.util.Objects.equals(Minus.class, it.getClass())) return _minus((Minus) it);
if(java.util.Objects.equals(Multiply.class, it.getClass())) return _multiply((Multiply) it);
if(java.util.Objects.equals(And.class, it.getClass())) return _and((And) it);
if(java.util.Objects.equals(Divide.class, it.getClass())) return _divide((Divide) it);
if(java.util.Objects.equals(Greater.class, it.getClass())) return _greater((Greater) it);
if(java.util.Objects.equals(LowerEqual.class, it.getClass())) return _lowerEqual((LowerEqual) it);
if(java.util.Objects.equals(Plus.class, it.getClass())) return _plus((Plus) it);
if(java.util.Objects.equals(Lower.class, it.getClass())) return _lower((Lower) it);
if(java.util.Objects.equals(Equal.class, it.getClass())) return _equal((Equal) it);
return null;
}
default WriteLocalVariableT $(WriteLocalVariable it) {
if(java.util.Objects.equals(WriteLocalVariable.class, it.getClass())) return _writeLocalVariable((WriteLocalVariable) it);
return null;
}
default ReturnT $(Return it) {
if(java.util.Objects.equals(Return.class, it.getClass())) return _return((Return) it);
return null;
}
default BreakT $(Break it) {
if(java.util.Objects.equals(Break.class, it.getClass())) return _break((Break) it);
return null;
}
default LowerEqualT $(LowerEqual it) {
if(java.util.Objects.equals(LowerEqual.class, it.getClass())) return _lowerEqual((LowerEqual) it);
return null;
}
default ExprT $(Expr it) {
if(java.util.Objects.equals(NotEqual.class, it.getClass())) return _notEqual((NotEqual) it);
if(java.util.Objects.equals(Minus.class, it.getClass())) return _minus((Minus) it);
if(java.util.Objects.equals(FunctionBody.class, it.getClass())) return _functionBody((FunctionBody) it);
if(java.util.Objects.equals(And.class, it.getClass())) return _and((And) it);
if(java.util.Objects.equals(FunctionLiteral.class, it.getClass())) return _functionLiteral((FunctionLiteral) it);
if(java.util.Objects.equals(Divide.class, it.getClass())) return _divide((Divide) it);
if(java.util.Objects.equals(Greater.class, it.getClass())) return _greater((Greater) it);
if(java.util.Objects.equals(WriteLocalVariable.class, it.getClass())) return _writeLocalVariable((WriteLocalVariable) it);
if(java.util.Objects.equals(LowerEqual.class, it.getClass())) return _lowerEqual((LowerEqual) it);
if(java.util.Objects.equals(BigIntValue.class, it.getClass())) return _bigIntValue((BigIntValue) it);
if(java.util.Objects.equals(IntValue.class, it.getClass())) return _intValue((IntValue) it);
if(java.util.Objects.equals(Invoke.class, it.getClass())) return _invoke((Invoke) it);
if(java.util.Objects.equals(Not.class, it.getClass())) return _not((Not) it);
if(java.util.Objects.equals(ReadLocalVariable.class, it.getClass())) return _readLocalVariable((ReadLocalVariable) it);
if(java.util.Objects.equals(ReadArgument.class, it.getClass())) return _readArgument((ReadArgument) it);
if(java.util.Objects.equals(Or.class, it.getClass())) return _or((Or) it);
if(java.util.Objects.equals(Unbox.class, it.getClass())) return _unbox((Unbox) it);
if(java.util.Objects.equals(LongValue.class, it.getClass())) return _longValue((LongValue) it);
if(java.util.Objects.equals(GreaterEqual.class, it.getClass())) return _greaterEqual((GreaterEqual) it);
if(java.util.Objects.equals(Multiply.class, it.getClass())) return _multiply((Multiply) it);
if(java.util.Objects.equals(StringValue.class, it.getClass())) return _stringValue((StringValue) it);
if(java.util.Objects.equals(BoolValue.class, it.getClass())) return _boolValue((BoolValue) it);
if(java.util.Objects.equals(Plus.class, it.getClass())) return _plus((Plus) it);
if(java.util.Objects.equals(Lower.class, it.getClass())) return _lower((Lower) it);
if(java.util.Objects.equals(Equal.class, it.getClass())) return _equal((Equal) it);
return null;
}
default BigIntValueT $(BigIntValue it) {
if(java.util.Objects.equals(BigIntValue.class, it.getClass())) return _bigIntValue((BigIntValue) it);
return null;
}
default IntValueT $(IntValue it) {
if(java.util.Objects.equals(IntValue.class, it.getClass())) return _intValue((IntValue) it);
return null;
}
default BlockT $(Block it) {
if(java.util.Objects.equals(Block.class, it.getClass())) return _block((Block) it);
return null;
}
default IfT $(If it) {
if(java.util.Objects.equals(If.class, it.getClass())) return _if((If) it);
return null;
}
default InvokeT $(Invoke it) {
if(java.util.Objects.equals(Invoke.class, it.getClass())) return _invoke((Invoke) it);
return null;
}
default NotT $(Not it) {
if(java.util.Objects.equals(Not.class, it.getClass())) return _not((Not) it);
return null;
}
default ReadLocalVariableT $(ReadLocalVariable it) {
if(java.util.Objects.equals(ReadLocalVariable.class, it.getClass())) return _readLocalVariable((ReadLocalVariable) it);
return null;
}
default ReadArgumentT $(ReadArgument it) {
if(java.util.Objects.equals(ReadArgument.class, it.getClass())) return _readArgument((ReadArgument) it);
return null;
}
default OrT $(Or it) {
if(java.util.Objects.equals(Or.class, it.getClass())) return _or((Or) it);
return null;
}
default UnboxT $(Unbox it) {
if(java.util.Objects.equals(Unbox.class, it.getClass())) return _unbox((Unbox) it);
return null;
}
default GreaterEqualT $(GreaterEqual it) {
if(java.util.Objects.equals(GreaterEqual.class, it.getClass())) return _greaterEqual((GreaterEqual) it);
return null;
}
default LongValueT $(LongValue it) {
if(java.util.Objects.equals(LongValue.class, it.getClass())) return _longValue((LongValue) it);
return null;
}
default MultiplyT $(Multiply it) {
if(java.util.Objects.equals(Multiply.class, it.getClass())) return _multiply((Multiply) it);
return null;
}
default StringValueT $(StringValue it) {
if(java.util.Objects.equals(StringValue.class, it.getClass())) return _stringValue((StringValue) it);
return null;
}
default StmtT $(Stmt it) {
if(java.util.Objects.equals(NotEqual.class, it.getClass())) return _notEqual((NotEqual) it);
if(java.util.Objects.equals(Minus.class, it.getClass())) return _minus((Minus) it);
if(java.util.Objects.equals(Continue.class, it.getClass())) return _continue((Continue) it);
if(java.util.Objects.equals(FunctionBody.class, it.getClass())) return _functionBody((FunctionBody) it);
if(java.util.Objects.equals(And.class, it.getClass())) return _and((And) it);
if(java.util.Objects.equals(FunctionLiteral.class, it.getClass())) return _functionLiteral((FunctionLiteral) it);
if(java.util.Objects.equals(Divide.class, it.getClass())) return _divide((Divide) it);
if(java.util.Objects.equals(Greater.class, it.getClass())) return _greater((Greater) it);
if(java.util.Objects.equals(WriteLocalVariable.class, it.getClass())) return _writeLocalVariable((WriteLocalVariable) it);
if(java.util.Objects.equals(Return.class, it.getClass())) return _return((Return) it);
if(java.util.Objects.equals(Break.class, it.getClass())) return _break((Break) it);
if(java.util.Objects.equals(LowerEqual.class, it.getClass())) return _lowerEqual((LowerEqual) it);
if(java.util.Objects.equals(BigIntValue.class, it.getClass())) return _bigIntValue((BigIntValue) it);
if(java.util.Objects.equals(IntValue.class, it.getClass())) return _intValue((IntValue) it);
if(java.util.Objects.equals(Block.class, it.getClass())) return _block((Block) it);
if(java.util.Objects.equals(If.class, it.getClass())) return _if((If) it);
if(java.util.Objects.equals(Invoke.class, it.getClass())) return _invoke((Invoke) it);
if(java.util.Objects.equals(Not.class, it.getClass())) return _not((Not) it);
if(java.util.Objects.equals(ReadLocalVariable.class, it.getClass())) return _readLocalVariable((ReadLocalVariable) it);
if(java.util.Objects.equals(ReadArgument.class, it.getClass())) return _readArgument((ReadArgument) it);
if(java.util.Objects.equals(Or.class, it.getClass())) return _or((Or) it);
if(java.util.Objects.equals(Unbox.class, it.getClass())) return _unbox((Unbox) it);
if(java.util.Objects.equals(LongValue.class, it.getClass())) return _longValue((LongValue) it);
if(java.util.Objects.equals(GreaterEqual.class, it.getClass())) return _greaterEqual((GreaterEqual) it);
if(java.util.Objects.equals(Multiply.class, it.getClass())) return _multiply((Multiply) it);
if(java.util.Objects.equals(StringValue.class, it.getClass())) return _stringValue((StringValue) it);
if(java.util.Objects.equals(BoolValue.class, it.getClass())) return _boolValue((BoolValue) it);
if(java.util.Objects.equals(Plus.class, it.getClass())) return _plus((Plus) it);
if(java.util.Objects.equals(Lower.class, it.getClass())) return _lower((Lower) it);
if(java.util.Objects.equals(Equal.class, it.getClass())) return _equal((Equal) it);
if(java.util.Objects.equals(While.class, it.getClass())) return _while((While) it);
return null;
}
default BoolValueT $(BoolValue it) {
if(java.util.Objects.equals(BoolValue.class, it.getClass())) return _boolValue((BoolValue) it);
return null;
}
default PlusT $(Plus it) {
if(java.util.Objects.equals(Plus.class, it.getClass())) return _plus((Plus) it);
return null;
}
default LowerT $(Lower it) {
if(java.util.Objects.equals(Lower.class, it.getClass())) return _lower((Lower) it);
return null;
}
default EqualT $(Equal it) {
if(java.util.Objects.equals(Equal.class, it.getClass())) return _equal((Equal) it);
return null;
}
default WhileT $(While it) {
if(java.util.Objects.equals(While.class, it.getClass())) return _while((While) it);
return null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment