package me.hammerle.code; public enum Syntax { UNKNOWN(" ", 0), OPEN_BRACKET("(", 1, (byte) 2), CLOSE_BRACKET(")", 1, (byte) 1), OPEN_SBRACKET("[", 1, (byte) 4), CLOSE_SBRACKET("]", 1, (byte) 3), INC("++", 2, (byte) 5, (byte) 1), POST_INC("p+", 2, (byte) 5, (byte) 1), DEC("--", 2, (byte) 5, (byte) 1), POST_DEC("p-", 2, (byte) 5, (byte) 1), NOT("!", 2, (byte) 0, (byte) 1), BIT_NOT("~", 2, (byte) 0, (byte) 1), MUL("*", 3), DIV("/", 3), MOD("%", 3), ADD("+", 4), SUB("-", 4), LEFT_SHIFT("<<", 5), RIGHT_SHIFT(">>", 5), SMALLER("<", 6), SMALLER_EQUAL("<=", 6), GREATER(">", 6), GREATER_EQUAL(">=", 6), EQUAL("==", 7), NOT_EQUAL("!=", 7), BIT_AND("&", 8), BIT_XOR("^", 9), BIT_OR("|", 10), AND("&&", 11), OR("||", 12), SET("=", 14), SET_ADD("+=", 14), SET_SUB("-=", 14), SET_MUL("*=", 14), SET_DIV("/=", 14), SET_MOD("%=", 14), SET_SHIFT_LEFT("<<=", 14), SET_SHIFT_RIGHT(">>=", 14), SET_BIT_AND("&=", 14), SET_BIT_XOR("^=", 14), SET_BIT_OR("|=", 14), COMMA(",", 15, (byte) -1); private int weight; private String function; private byte status; private byte pars; Syntax(String function, int weight, byte status, byte pars) { this.weight = weight; this.function = function; this.status = status; this.pars = pars; } Syntax(String function, int weight, byte status) { this(function, weight, status, (byte) 2); } Syntax(String function, int weight) { this(function, weight, (byte) 0); } public String getFunction() { return function; } public int getWeight() { return weight; } public boolean shouldStartLayer() { return status == 1 || status == 3; } public boolean shouldEndLayer() { return status == 2 || status == 4; } public boolean isFunction() { return status >= 0; } public boolean isArray() { return status == 3 || status == 4; } public boolean isIncOrDec() { return status == 5; } public byte getParameters() { return pars; } }