extern unsigned char *iline
;
extern struct asoperbox charconv
[OPERBOXSIZE
];
if ( ( F
== '.') && ( digit(*iline
) == 0 ) ) {
for (I
= 0; I
<= OPERBOXSIZE
;I
++) {
if (( D
== (charconv
[I
].letters
[0]) ) &&
( E
== (charconv
[I
].letters
[1]) ) ) {
F
= charconv
[I
].returnchar
;
/* eventually this should be replaces with arrays that hae a better */
/* method of selecting and returning the lexical value, but */
/* for now, this is a quick implementation */
/* use char as subscript from ascii - get apl character hopefully */
/* for character conversion from ascii to apl char set --- */
/* see files write2.c and write3.c for more recent version */
struct asoperbox charconv
[OPERBOXSIZE
] = {
/* ascii mnemonic ( from HP APL ascii char mnemonics and */
/* equivalent apl character value. */
/* all are two lowercase letters preceeded by a dot. */
/* letters for identifiers are lowercase or uppercase */
/* lowercase corresponding to apl uppercase and */
/* uppercase corresponding to apl underscored letters. */
"le", /* less than or equal */ '$',
"ge", /* greater than or equal*/ '^',
"ne", /* not equal */ '*',
"om", /* omega ( not used ) */ 'W',
"rh", /* shape (rho) */ 'R',
"nt", /* not ( also '~' ) */ 'T',
"tk", /* take ( also '^' ) */ 'Y',
"ci", /* circular function */ 'O',
"al", /* alpha ( not used ) */ 'A',
"cl", /* maximum ( ceiling ) */ 'S',
"fl", /* minimum ( floor ) */ 'D',
"dl", /* del ( not used ) */ 'G',
"de", /* upside down del */ 'H',
"jt", /* small circle ( null )*/ 'J',
"ss", /* right U ( not used ) */ 'Z',
"sc", /* left U ( not used ) */ 'X',
"su", /* U ( not used ) */ 'V',
"[^", /* upside-down del */ 'H',
"bv", /* decode ( base ) */ 'B',
"rp", /* encode ( rep ) */ 'N',
"br", /* residue ( mod ) */ 'M',
"sp", /* assignment */ '[',
"rv", /* reversal */ 0217,
"tr", /* transpose */ 0212,
"rb", /* reverse bar */ 0214,
"cb", /* comma bar ( not used)*/ 0,
"sb", /* slash bar */ 0200,
"bb", /* blackslash bar */ 0201,
"gu", /* grade up */ 0215,
"gd", /* grade down */ 0216,
"qq", /* quote quad */ 0202,
"ib", /* i - beam */ 0213,
"ex", /* execute ( not used ) */ 0,
"fr", /* format( not used ) */ 0,
"di", /* diamond ( not used ) */ 0,
"ot", /* out ( not used ) */ 0,
"ld", /* locked del (not used)*/ 0,
"[a", /* alias for 'A' */ 0220,
"[b", /* alias for 'B' */ 0221,
"[c", /* alias for 'C' */ 0222,
"[d", /* alias for 'D' */ 0223,
"[e", /* alias for 'E' */ 0224,
"[f", /* alias for 'F' */ 0225,
"[g", /* alias for 'G' */ 0226,
"[h", /* alias for 'H' */ 0227,
"[i", /* alias for 'I' */ 0230,
"[j", /* alias for 'J' */ 0231,
"[k", /* alias for 'K' */ 0232,
"[l", /* alias for 'L' */ 0233,
"[m", /* alias for 'M' */ 0234,
"[n", /* alias for 'N' */ 0235,
"[o", /* alias for 'O' */ 0236,
"[p", /* alias for 'P' */ 0237,
"[q", /* alias for 'Q' */ 0240,
"[r", /* alias for 'R' */ 0241,
"[s", /* alias for 'S' */ 0242,
"[t", /* alias for 'T' */ 0243,
"[u", /* alias for 'U' */ 0244,
"[v", /* alias for 'V' */ 0245,
"[w", /* alias for 'W' */ 0246,
"[x", /* alias for 'X' */ 0247,
"[y", /* alias for 'Y' */ 0250,
"[z", /* alias for 'Z' */ 0251