X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fcalc%2Foper.h;h=8208e30ec9dc39ac1b0d264aab45c154fbc4cc09;hp=cf86b18b2fb2198300d79c32628126355eb90f8b;hb=42f44eb5bf4ecd36e26e051fada79d861d0f92d2;hpb=1b6db76e3005344b33ab45b00e7e61386a33932a diff --git a/src/calc/oper.h b/src/calc/oper.h index cf86b18..8208e30 100644 --- a/src/calc/oper.h +++ b/src/calc/oper.h @@ -36,9 +36,9 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; } else if (op1 == op2) { return 0; - } else if (!op1) { + } else if (!op1 || op1 == PSI_T_NUMBER) { return 1; - } else if (!op2) { + } else if (!op2 || op2 == PSI_T_NUMBER) { return -1; } @@ -49,6 +49,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 0; case PSI_T_TILDE: return 0; + case PSI_T_CAST: + return 0; case PSI_T_ASTERISK: return -1; case PSI_T_SLASH: @@ -97,6 +99,58 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 0; case PSI_T_TILDE: return 0; + case PSI_T_CAST: + return 0; + case PSI_T_ASTERISK: + return -1; + case PSI_T_SLASH: + return -1; + case PSI_T_MODULO: + return -1; + case PSI_T_PLUS: + return -1; + case PSI_T_MINUS: + return -1; + case PSI_T_LSHIFT: + return -1; + case PSI_T_RSHIFT: + return -1; + case PSI_T_LCHEVR: + return -1; + case PSI_T_CMP_LE: + return -1; + case PSI_T_RCHEVR: + return -1; + case PSI_T_CMP_GE: + return -1; + case PSI_T_AMPERSAND: + return -1; + case PSI_T_CMP_EQ: + return -1; + case PSI_T_CMP_NE: + return -1; + case PSI_T_CARET: + return -1; + case PSI_T_PIPE: + return -1; + case PSI_T_AND: + return -1; + case PSI_T_OR: + return -1; + default: + assert(0); + break; + } + break; + + case PSI_T_CAST: + switch (op2) { + case PSI_T_NOT: + return 0; + case PSI_T_TILDE: + return 0; + case PSI_T_CAST: + return 0; case PSI_T_ASTERISK: return -1; case PSI_T_SLASH: @@ -145,6 +199,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 0; case PSI_T_SLASH: @@ -193,6 +249,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 0; case PSI_T_SLASH: @@ -241,6 +299,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 0; case PSI_T_SLASH: @@ -289,6 +349,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -337,6 +399,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -385,6 +449,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -433,6 +499,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -481,6 +549,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -529,6 +599,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -577,6 +649,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -625,6 +699,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -673,6 +749,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -721,6 +799,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -769,6 +849,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -817,6 +899,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -865,6 +949,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -913,6 +999,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: @@ -961,6 +1049,8 @@ static inline int psi_calc_oper(token_t op1, token_t op2) return 1; case PSI_T_TILDE: return 1; + case PSI_T_CAST: + return 1; case PSI_T_ASTERISK: return 1; case PSI_T_SLASH: