All Downloads are FREE. Search and download functionalities are using the official Maven repository.

alice.tuprolog.parser.dynamic.Associativity Maven / Gradle / Ivy

The newest version!
package alice.tuprolog.parser.dynamic;

import java.util.EnumSet;
import java.util.stream.Stream;

public enum Associativity {
    XF, YF, XFX, XFY, YFX, FX, FY;

    public static Associativity values(int i) {
        return values()[i];
    }

    public static EnumSet X_FIRST = EnumSet.of(XF, XFX, XFY, FX);
    public static EnumSet Y_FIRST = EnumSet.of(YF, YFX, FY);

    public static EnumSet INFIX = EnumSet.of(XFX, YFX, XFY);
    public static EnumSet PREFIX = EnumSet.of(FX, FY);
    public static EnumSet POSTFIX = EnumSet.of(YF, XF);

    public static EnumSet NON_PREFIX = EnumSet.complementOf(PREFIX);

    public static boolean isAssociativity(String value) {
        return Stream.of(values()).anyMatch(it -> it.toString().equalsIgnoreCase(value));
    }

    static {
        if (!NON_PREFIX.equals(EnumSet.of(XFX, YFX, XFY, YF, XF))) {
            throw new IllegalStateException();
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy