Integrate the reactor API (imported from the typechecker project).

This commit is contained in:
Fedor Isakov 2016-06-24 14:17:54 +02:00
parent 61ef4ff4af
commit 64f332f5b0
19 changed files with 107 additions and 90 deletions

View File

@ -7,8 +7,8 @@ import java.util.List;
public interface ConstraintOccurrence {
public Constraint constraint();
Constraint constraint();
public List<?> arguments();
List<?> arguments();
}

View File

@ -60,9 +60,9 @@ public abstract class EvaluationSession {
protected static interface Backend {
public EvaluationSession current();
EvaluationSession current();
public EvaluationSession.Config createConfig(Program program);
EvaluationSession.Config createConfig(Program program);
}

View File

@ -5,34 +5,34 @@ package jetbrains.mps.logic.reactor.evaluation;
public interface EvaluationTrace {
public void activate(ConstraintOccurrence occurrence);
void activate(ConstraintOccurrence occurrence);
public void reactivate(ConstraintOccurrence occurrence);
void reactivate(ConstraintOccurrence occurrence);
public void suspend(ConstraintOccurrence occurrence);
void suspend(ConstraintOccurrence occurrence);
public void discard(ConstraintOccurrence occurrence);
void discard(ConstraintOccurrence occurrence);
public void trying(MatchRule matchRule);
void trying(MatchRule matchRule);
public void reject(MatchRule matchRule);
void reject(MatchRule matchRule);
public void trigger(MatchRule matchRule);
void trigger(MatchRule matchRule);
public void retry(MatchRule matchRule);
void retry(MatchRule matchRule);
public void finish(MatchRule matchRule);
void finish(MatchRule matchRule);
public void tell(PredicateInvocation invocation);
void tell(PredicateInvocation invocation);
public void ask(boolean result, PredicateInvocation invocation);
void ask(boolean result, PredicateInvocation invocation);
public void failure(EvaluationFailureException fail);
void failure(EvaluationFailureException fail);
@Deprecated
public void reportFailure(String message);
void reportFailure(String message);
public static final EvaluationTrace NULL = new EvaluationTrace() {
EvaluationTrace NULL = new EvaluationTrace() {
public void activate(ConstraintOccurrence occurrence) {
}

View File

@ -5,6 +5,6 @@ package jetbrains.mps.logic.reactor.evaluation;
public interface Instructible {
public void tell(PredicateInvocation invocation);
void tell(PredicateInvocation invocation);
}

View File

@ -6,10 +6,10 @@ import jetbrains.mps.logic.reactor.program.Rule;
public interface MatchRule {
public Rule rule();
Rule rule();
public Iterable<ConstraintOccurrence> matchHeadKept();
Iterable<ConstraintOccurrence> matchHeadKept();
public Iterable<ConstraintOccurrence> matchHeadReplaced();
Iterable<ConstraintOccurrence> matchHeadReplaced();
}

View File

@ -7,8 +7,8 @@ import java.util.List;
public interface PredicateInvocation {
public Predicate predicate();
Predicate predicate();
public List<?> arguments();
List<?> arguments();
}

View File

@ -5,6 +5,6 @@ package jetbrains.mps.logic.reactor.evaluation;
public interface Queryable extends Instructible {
public boolean ask(PredicateInvocation invocation);
boolean ask(PredicateInvocation invocation);
}

View File

@ -1,18 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<debug-info>
<concept fqn="jetbrains.mps.baseLanguage.structure.ConstructorDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.ExpressionStatement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.FieldDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.ForeachStatement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.IfStatement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.InstanceMethodDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.ReturnStatement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.Statement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.StaticFieldDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.StaticMethodDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.SuperConstructorInvocation" />
<concept fqn="jetbrains.mps.baseLanguage.structure.ThrowStatement" />
<debug-info-v2>
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123140:jetbrains.mps.baseLanguage.structure.ConstructorDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123155:jetbrains.mps.baseLanguage.structure.ExpressionStatement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068390468200:jetbrains.mps.baseLanguage.structure.FieldDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1144226303539:jetbrains.mps.baseLanguage.structure.ForeachStatement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123159:jetbrains.mps.baseLanguage.structure.IfStatement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123165:jetbrains.mps.baseLanguage.structure.InstanceMethodDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068581242864:jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068581242878:jetbrains.mps.baseLanguage.structure.ReturnStatement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123157:jetbrains.mps.baseLanguage.structure.Statement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1070462154015:jetbrains.mps.baseLanguage.structure.StaticFieldDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1081236700938:jetbrains.mps.baseLanguage.structure.StaticMethodDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1070475587102:jetbrains.mps.baseLanguage.structure.SuperConstructorInvocation" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1164991038168:jetbrains.mps.baseLanguage.structure.ThrowStatement" />
<root nodeRef="r:2a79c8aa-e372-4c00-8d71-5d7f3db517e4(jetbrains.mps.logic.reactor.evaluation)/2394628030058821331">
<file name="EvaluationTrace.java">
<node id="1568093847249272547" at="8,0,9,0" concept="5" trace="activate#(Ljetbrains/mps/logic/reactor/evaluation/ConstraintOccurrence;)V" />
@ -135,7 +135,7 @@
<scope id="5160444407776325559" at="61,0,63,0">
<var name="message" id="5160444407776325560" />
</scope>
<unit id="5160444407776325513" at="35,49,64,3" name="jetbrains.mps.logic.reactor.evaluation.EvaluationTrace$1" />
<unit id="5160444407776325513" at="35,29,64,3" name="jetbrains.mps.logic.reactor.evaluation.EvaluationTrace$1" />
<unit id="2394628030058821331" at="6,0,66,0" name="jetbrains.mps.logic.reactor.evaluation.EvaluationTrace" />
</file>
</root>
@ -437,5 +437,5 @@
<unit id="8638394859472384258" at="6,0,17,0" name="jetbrains.mps.logic.reactor.evaluation.EvaluationFailureException" />
</file>
</root>
</debug-info>
</debug-info-v2>

View File

@ -5,14 +5,14 @@ package jetbrains.mps.logic.reactor.logical;
public interface Logical<T> {
public String name();
String name();
/**
* Returns the representative logical instance.
*
* TODO: rename to 'find()'
*/
public Logical<T> findRoot();
Logical<T> findRoot();
/**
* Returns the value associated with this logical instance.
@ -21,15 +21,15 @@ public interface Logical<T> {
*
* FIXME: must return the representative's value
*/
public T value();
T value();
/**
* True iff the representative has a non-null value.
*/
public boolean isBound();
boolean isBound();
public boolean isWildcard();
boolean isWildcard();
public MetaLogical<T> metaLogical();
MetaLogical<T> metaLogical();
}

View File

@ -5,6 +5,6 @@ package jetbrains.mps.logic.reactor.logical;
public interface LogicalContext {
public <V> Logical<V> variable(MetaLogical<V> metaLogical);
<V> Logical<V> variable(MetaLogical<V> metaLogical);
}

View File

@ -0,0 +1,10 @@
package jetbrains.mps.logic.reactor.logical;
/*Generated by MPS */
public interface LogicalOwner {
Logical<?> logical();
}

View File

@ -6,10 +6,10 @@ import jetbrains.mps.unification.Term;
public interface LogicalUnification {
public <TERM extends Term> TERM asRoot(TERM term);
<TERM extends Term> TERM asRoot(TERM term);
public <TERM extends Term> SolverLogical<TERM> logical(TERM var);
<TERM extends Term> SolverLogical<TERM> logical(TERM var);
public boolean isLogical(Term term);
boolean isLogical(Term term);
}

View File

@ -8,29 +8,29 @@ public interface SolverLogical<T> extends Logical<T> {
/**
* Covariant override.
*/
public SolverLogical<T> findRoot();
SolverLogical<T> findRoot();
/**
* Unions two equivalence classes of logicals.
* Both the receiver and the {@code other} parameter are expected to be representatives.
* The one with the highest rank becomes the representative for the new class.
*/
public void union(SolverLogical<T> other, SolverLogical.ValueReconciler<T> reconciler);
void union(SolverLogical<T> other, SolverLogical.ValueReconciler<T> reconciler);
/**
* Calls {@link jetbrains.mps.logic.reactor.logical.SolverLogical#union(SolverLogical<T>, SolverLogical.ValueReconciler<T>) } with the default value reconciler.
* The default reconciler throws {@link java.lang.IllegalArgumentException } if the two values are not equal.
*/
public void union(SolverLogical<T> other);
void union(SolverLogical<T> other);
/**
* Should only be called on a representative.
*/
public void setValue(T newValue);
void setValue(T newValue);
public static interface ValueReconciler<T> {
static interface ValueReconciler<T> {
public void reconcile(T valueA, T valueB);
void reconcile(T valueA, T valueB);
}

View File

@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<debug-info>
<concept fqn="jetbrains.mps.baseLanguage.structure.ConstructorDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.ExpressionStatement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.FieldDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.ForStatement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.InstanceMethodDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.ReturnStatement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.StaticFieldDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.SuperConstructorInvocation" />
<debug-info-v2>
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123140:jetbrains.mps.baseLanguage.structure.ConstructorDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123155:jetbrains.mps.baseLanguage.structure.ExpressionStatement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068390468200:jetbrains.mps.baseLanguage.structure.FieldDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1144231330558:jetbrains.mps.baseLanguage.structure.ForStatement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123165:jetbrains.mps.baseLanguage.structure.InstanceMethodDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068581242864:jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068581242878:jetbrains.mps.baseLanguage.structure.ReturnStatement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1070462154015:jetbrains.mps.baseLanguage.structure.StaticFieldDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1070475587102:jetbrains.mps.baseLanguage.structure.SuperConstructorInvocation" />
<root nodeRef="r:7365f7fe-12e6-4229-8901-f6dc6d5df03f(jetbrains.mps.logic.reactor.logical)/1564179198503508264">
<file name="Logical.java">
<node id="7045828502339522708" at="8,0,9,0" concept="4" trace="name#()Ljava/lang/String;" />
@ -26,6 +26,13 @@
<unit id="1564179198503508264" at="6,0,36,0" name="jetbrains.mps.logic.reactor.logical.Logical" />
</file>
</root>
<root nodeRef="r:7365f7fe-12e6-4229-8901-f6dc6d5df03f(jetbrains.mps.logic.reactor.logical)/4725685633777355365">
<file name="LogicalOwner.java">
<node id="4725685633777390939" at="8,0,9,0" concept="4" trace="logical#()Ljetbrains/mps/logic/reactor/logical/Logical;" />
<scope id="4725685633777390939" at="8,0,9,0" />
<unit id="4725685633777355365" at="6,0,11,0" name="jetbrains.mps.logic.reactor.logical.LogicalOwner" />
</file>
</root>
<root nodeRef="r:7365f7fe-12e6-4229-8901-f6dc6d5df03f(jetbrains.mps.logic.reactor.logical)/7835819612255545383">
<file name="SolverLogical.java">
<node id="4650394911992714457" at="11,0,12,0" concept="4" trace="findRoot#()Ljetbrains/mps/logic/reactor/logical/SolverLogical;" />
@ -162,5 +169,5 @@
<unit id="8907901911298493091" at="6,0,11,0" name="jetbrains.mps.logic.reactor.logical.LogicalContext" />
</file>
</root>
</debug-info>
</debug-info-v2>

View File

@ -6,8 +6,8 @@ import java.util.Collection;
public interface AndItem {
public Symbol symbol();
Symbol symbol();
public Collection<?> arguments();
Collection<?> arguments();
}

View File

@ -11,17 +11,17 @@ import jetbrains.mps.logic.reactor.logical.LogicalContext;
*/
public interface Constraint extends AndItem {
public ConstraintSymbol symbol();
ConstraintSymbol symbol();
public List<Class<?>> argumentTypes();
List<Class<?>> argumentTypes();
public Collection<?> occurrenceArguments(LogicalContext logicalContext);
Collection<?> occurrenceArguments(LogicalContext logicalContext);
/**
* Returns the collection of predicates that need to be applied after a successful match of this collection by a
* rule's head.
* This method only returns meaningful results for constraints that serve as patterns in a rule's head.
*/
public Collection<? extends Predicate> patternPredicates();
Collection<? extends Predicate> patternPredicates();
}

View File

@ -10,9 +10,9 @@ import jetbrains.mps.logic.reactor.logical.LogicalContext;
*/
public interface Predicate extends AndItem {
public PredicateSymbol symbol();
PredicateSymbol symbol();
public Collection<?> invocationArguments(LogicalContext logicalContext);
Collection<?> invocationArguments(LogicalContext logicalContext);
}

View File

@ -5,6 +5,6 @@ package jetbrains.mps.logic.reactor.program;
public interface PredicateFactory {
public Predicate predicate(PredicateSymbol predicateSymbol, Object... args);
Predicate predicate(PredicateSymbol predicateSymbol, Object... args);
}

View File

@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<debug-info>
<concept fqn="jetbrains.mps.baseLanguage.structure.ConstructorDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.ExpressionStatement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.FieldDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.IfStatement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.InstanceMethodDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.ReturnStatement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.Statement" />
<concept fqn="jetbrains.mps.baseLanguage.structure.StaticFieldDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.StaticMethodDeclaration" />
<concept fqn="jetbrains.mps.baseLanguage.structure.SuperConstructorInvocation" />
<debug-info-v2>
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123140:jetbrains.mps.baseLanguage.structure.ConstructorDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123155:jetbrains.mps.baseLanguage.structure.ExpressionStatement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068390468200:jetbrains.mps.baseLanguage.structure.FieldDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123159:jetbrains.mps.baseLanguage.structure.IfStatement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123165:jetbrains.mps.baseLanguage.structure.InstanceMethodDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068581242864:jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068581242878:jetbrains.mps.baseLanguage.structure.ReturnStatement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1068580123157:jetbrains.mps.baseLanguage.structure.Statement" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1070462154015:jetbrains.mps.baseLanguage.structure.StaticFieldDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1081236700938:jetbrains.mps.baseLanguage.structure.StaticMethodDeclaration" />
<concept fqn="c:f3061a53-9226-4cc5-a443-f952ceaf5816/1070475587102:jetbrains.mps.baseLanguage.structure.SuperConstructorInvocation" />
<root nodeRef="r:f43ee4a0-488a-425a-87a0-594ab3b0d15f(jetbrains.mps.logic.reactor.program)/3363149567548688543">
<file name="PredicateFactory.java">
<node id="3363149567548689033" at="8,0,9,0" concept="4" trace="predicate#(Ljetbrains/mps/logic/reactor/program/PredicateSymbol;null)Ljetbrains/mps/logic/reactor/program/Predicate;" />
@ -248,5 +248,5 @@
<unit id="9010599623176680927" at="6,0,17,0" name="jetbrains.mps.logic.reactor.program.InvalidConstraintException" />
</file>
</root>
</debug-info>
</debug-info-v2>