001package de.monochromata.anaphors.ast.reference.strategy;
002
003import de.monochromata.Strategy;
004import de.monochromata.anaphors.ast.reference.Referent;
005
006/**
007 * A strategy used to obtain referents
008 *
009 * @param <E>
010 *            The expression type
011 * @param <TB>
012 *            The type binding type
013 * @param <S>
014 *            The scope type (optional)
015 * @param <I>
016 *            The type used to represent identifiers
017 * @param <QI>
018 *            The type used to represent qualified identifiers
019 */
020public interface ReferentializationStrategy<E, TB, S, I, QI> extends Strategy {
021
022    /**
023     * Checks whether the given definite expression can, using this
024     * referentialization strategy, refer to the given potential referent in the
025     * given scope. All information in the definite expression needs to be matched
026     * by the given potential referent for the method to return true. Matching is
027     * performed in a way that is specific to the referentialization strategy.
028     *
029     * @param idFromDefiniteExpression
030     *            the ID from the definite expression that shall refer to the given
031     *            potential referent
032     * @param potentialReferent
033     *            the potential referent to refer to
034     * @param scope
035     *            the scope in which the definite expression occurs
036     * @return {@code true} if all information provided by the definite expression
037     *         matches information provided by the potential referent, where
038     *         matching depends on the implementation of this method, {@code false}
039     *         otherwise.
040     */
041    public boolean canReferTo(I idFromDefiniteExpression, Referent<TB, S, I, QI> potentialReferent, S scope);
042
043}