001package de.monochromata.anaphors.ast;
002
003import de.monochromata.anaphors.ast.relatedexp.RelatedExpression;
004import de.monochromata.anaphors.ast.relatedexp.strategy.RelatedExpressionStrategy;
005
006/**
007 * Represents a related expression at the AST level. Because instances of this
008 * type contain AST nodes, they should be short-lived and must not be persisted.
009 *
010 * @param <N>  The node type in the AST
011 * @param <E>  The expression type
012 * @param <T>  The type type
013 * @param <B>  The binding type
014 * @param <TB> The type binding type
015 * @param <S>  The scope type (optional)
016 * @param <I>  The type used to represent identifiers
017 * @param <QI> The type used to represent qualified identifiers
018 * @param <R>  The sub-type of related expression to use
019 */
020public interface RelatedExpressionPart<N, E, T, B, TB extends B, S, I, QI, R extends RelatedExpression<N, T, B, TB, S, QI, R>> {
021
022        /**
023         * Get the related expression of the anaphora relation.
024         *
025         * @return The related expression.
026         */
027        public R getRelatedExpression();
028
029        /**
030         * Get the related expression strategy that was used to find the related
031         * expression of this anaphora relation.
032         *
033         * @return The related expression strategy.
034         */
035        public RelatedExpressionStrategy<N, T, B, TB, S, QI, R> getRelatedExpressionStrategy();
036
037}