/* * (c) copyright 1990 by the Vrije Universiteit, Amsterdam, The Netherlands. * See the copyright notice in the ACK home directory, in the file "Copyright". */ #define RCSID2 "$Header$" /* * VAX-11 machine dependent yacc declarations */ /* operands are indicated with a letter combination: b - general operand of byte size w - general operand of word size l - general operand of long size u - general operand of > long size (immediate mode is not implemented for this size, and neither are immediate floating point encodings A - an operand of which the address is taken (so, no register or immediate mode) V - a bit-field operand (no immediate mode) Bb - byte offset branch Bw - word offset branch Bl - long offset branch Bx - branch, size of offset determined by instruction Be - extended conditional branch; the instruction may be replaced by a reverse-conditional branch over a branch or jump To reduce the number of terminals, some instructions that have operands of equal size are coded with an X instead of b, w, or l; these instructions have the size in the high order word of the valu field. This is needed because some yacc versions do not accept grammars with more than 127 terminal symbols. */ %token <y_word> REG %token <y_word> CASE_X_X_X %token <y_word> OP0 %token <y_word> OP1_A, OP1_Bx, OP1_u, OP1_Be %token <y_word> OP1_BX, OP1_X %token <y_word> OP2_A_A, OP2_A_l, OP2_b_b, OP2_b_l, OP2_b_u, OP2_b_w, OP2_l_A, OP2_l_Bb, OP2_l_b, OP2_l_l, OP2_l_u, OP2_l_w, OP2_u_b, OP2_u_l, OP2_u_u, OP2_u_w, OP2_w_b, OP2_w_l, OP2_w_u, OP2_w_w, OP2_l_Be %token <y_word> OP3_b_b_b, OP3_b_l_l, OP3_b_u_u, OP3_b_w_A, OP3_l_V_Bb, OP3_l_l_Bb, OP3_l_l_l, OP3_l_w_A, OP3_u_u_u, OP3_u_w_A, OP3_w_A_A, OP3_w_A_l, OP3_w_w_w, OP3_l_V_Be %token <y_word> OP4_A_l_w_A, OP4_b_b_b_Bw, OP4_l_b_V_l, OP4_l_l_b_V, OP4_l_l_l_Bw, OP4_l_l_l_u, OP4_l_u_l_l, OP4_u_u_u_Bw, OP4_w_A_A_A, OP4_w_A_A_b, OP4_w_A_w_A, OP4_w_w_w_Bw %token <y_word> OP5_u_b_u_l_u, OP5_u_w_u_l_u, OP5_w_A_A_w_A, OP5_w_A_b_w_A %token <y_word> OP6_b_w_A_b_w_A, OP6_l_l_l_l_l_l, OP6_w_A_b_A_w_A, OP6_w_A_w_A_w_A /* operand types: O - the b, w, l, A and V operands (they all fall into the same syntactic category) B - branch offsets (these do not result in an addressing mode byte) */ %type <y_word> OP1_O, OP1_B %type <y_word> OP2_O_O, OP2_O_B %type <y_word> OP3_O_O_O, OP3_O_O_B %type <y_word> OP4_O_O_O_O, OP4_O_O_O_B %type <y_word> OP5_O_O_O_O_O %type <y_word> OP6_O_O_O_O_O_O %type <y_word> CASE_O_O_O %type <y_word> oper