1 /* ====== BEGIN INCLUDE SEGMENT apl_operator_table_.incl.pl1 ============================== */ 2 3 /* this is the structure of the data base apl_operator_table_, as seen by the apl_lex_ module */ 4 /* 6/18/73, DAM */ 5 6 dcl 1 apl_operator_table_$apl_operator_table_ external static aligned, 7 2 op_index (0 : (511) /* or so */ ) fixed bin; /* indexed by char code or pseudo char code */ 8 9 10 dcl 1 apl_operator_table_$operator_bead_table external static aligned, /* table of beads, indexed by op_index */ 11 2 operator_bead_table(0 : 1000 /* or so */ ) like operator_bead; 12 13 14 dcl apl_operator_table_$inner_product_table external static aligned, /* hundreds of beads for all possible 15 inner products */ 16 1 the_inner_product_table aligned based(addr(apl_operator_table_$inner_product_table)), 17 2 inner_product_max_code fixed bin, /* max index allowed in this table (both dimensions, its square ) */ 18 2 inner_product_table (0 : the_inner_product_table.inner_product_max_code, 19 0 : the_inner_product_table.inner_product_max_code) like operator_bead; 20 21 22 /*** here are some dummy declarations which are just used to avoid using addrel. 23 they are the declarations showing how several related operator beads are grouped together 24 in operator_bead_table ***/ 25 26 /* scalar operator allowing reduction and inner and outer product */ 27 28 dcl 1 scalar_op based aligned, 29 2 first_operator_bead like operator_bead, /* operator by itself */ 30 2 slash_operator_bead like operator_bead, /* simple reduction */ 31 2 slash_hyphen_operator_bead like operator_bead, /* reduction on first dimension */ 32 2 backslash_operator_bead like operator_bead, /* scan */ 33 2 backslash_hyphen_operator_bead like operator_bead, /* scan on first dimension */ 34 2 outer_product_operator_bead like operator_bead; /* degree.OP */ 35 /* inner product stuff is elsewhere, in inner_product_table */ 36 37 38 /* mixed operator that allows brackets */ 39 40 dcl 1 mixed_op based aligned, 41 2 first_operator_bead like operator_bead, /* with no brackets */ 42 2 brackets_operator_bead like operator_bead; /* OP[dim] form. */ 43 44 45 /* system variable that may be meaningfully assigned into */ 46 /* this includes Quad and QuadQuote as well as QuadIO, SDelta, TDelta, etc. */ 47 48 dcl 1 system_var_op based aligned, 49 2 reference_to like operator_bead, /* op bead for referring to it */ 50 2 assignment_to like operator_bead, /* op bead for assigning into it */ 51 2 subscripted_assignment_to like operator_bead; /* op bead for QuadLX[n] -^H<- m, and things like that */ 52 /* only present if allow_subscripted_assignment bit is on */ 53 54 /* ------ END INCLUDE SEGMENT apl_operator_table_.incl.pl1 ------------------------------ */