package it.xsemantics.example.fj.typesystem.fj.rules; import it.xsemantics.example.fj.typesystem.fj.FJTypeSystemDefinition; import it.xtypes.runtime.RuntimeRule; import it.xtypes.runtime.RuleFailedException; import it.xtypes.runtime.TypingJudgmentEnvironment; import it.xsemantics.example.fj.fj.FjFactory; import it.xsemantics.example.fj.fj.FjPackage; public abstract class FJTypeSystemRule extends RuntimeRule { protected FjFactory factory = FjFactory.eINSTANCE; protected FjPackage basicPackage = FjPackage.eINSTANCE; public FJTypeSystemRule(String ruleName, String typeJudgmentSymbol, String typeStatementRelation) { super(ruleName, typeJudgmentSymbol, typeStatementRelation); } public void applyTypeRule(TypingJudgmentEnvironment environment, Object left, Object right) throws RuleFailedException { addAppliedRuleToTrace(((FJTypeSystemDefinition) runtimeTypeSystem) .applyTypeRule(environment, left, right)); } public void applySubtypeRule(TypingJudgmentEnvironment environment, Object left, Object right) throws RuleFailedException { addAppliedRuleToTrace(((FJTypeSystemDefinition) runtimeTypeSystem) .applySubtypeRule(environment, left, right)); } public void applyOverrideRule(TypingJudgmentEnvironment environment, Object left, Object right) throws RuleFailedException { addAppliedRuleToTrace(((FJTypeSystemDefinition) runtimeTypeSystem) .applyOverrideRule(environment, left, right)); } }