BSD 4 development
authorBill Joy <wnj@ucbvax.Berkeley.EDU>
Tue, 15 Apr 1980 04:15:39 +0000 (20:15 -0800)
committerBill Joy <wnj@ucbvax.Berkeley.EDU>
Tue, 15 Apr 1980 04:15:39 +0000 (20:15 -0800)
Work on file usr/src/cmd/apl/tab.c

Synthesized-from: CSRG//cd1/4.0

usr/src/cmd/apl/tab.c [new file with mode: 0644]

diff --git a/usr/src/cmd/apl/tab.c b/usr/src/cmd/apl/tab.c
new file mode 100644 (file)
index 0000000..469a028
--- /dev/null
@@ -0,0 +1,209 @@
+#define        B       0100000
+struct tab
+{
+       int     input;
+       int     lexval;
+       int     retval;
+} tab[] =
+{
+/*
+ * one of a kind
+ */
+
+       ':',    unk,lpar,
+       '"',    unk,rpar,
+       ';',    unk,lbkt,
+       '\'',   unk,rbkt,
+       '/',    COM,com,
+       0200  , COM0,com0,
+       '?',    EXD,com,
+       0201  , EXD0,com0,
+       'K',    unk,strng,
+       'J',    unk,null,
+       '.',    IPROD,dot,
+       'L',    QUAD,quad,
+       0202  , QQUAD,quad,
+       0203  , CQUAD,quad,
+       '<',    unk,semi,
+       '>',    unk,cln,
+       0204  , COMNT,comnt,
+       'C',    COMNT,comnt,
+       ']',    BRAN0,tran,
+
+/*
+ * dyadic scalars
+ *     op2 op1 v (dyadic op)
+ */
+
+       '#',    LT,dscal,
+       '&',    GT,dscal,
+       '$',    LE,dscal,
+       '^',    GE,dscal,
+       '%',    EQ,dscal,
+       '*',    NE,dscal,
+       ')',    AND,dscal,
+       '(',    OR,dscal,
+       0205  , NAND,dscal,
+       0206  , NOR,dscal,
+
+/*
+ * monadic or dyadic scalars
+ *     op2 op1 v (dyadic op)
+ *     op1 v+1 (monadic op)
+ */
+
+       '-',    ADD,mdscal,
+       '_',    SUB,mdscal,
+       '=',    MUL,mdscal,
+       '+',    DIV,mdscal,
+       'M',    MOD,mdscal,
+       'D',    MIN,mdscal,
+       'S',    MAX,mdscal,
+       'P',    PWR,mdscal,
+       0207  , LOG,mdscal,
+       'O',    CIR,mdscal,
+       0210  , COMB,mdscal,
+
+/*
+ * monadic
+ *     op1 v (monadic op)
+ */
+
+       'T',    NOT,m,
+/*
+ * dyadic
+ *     op2 op1 v (dyadic op)
+ */
+
+       'N',    REP,d,
+       'Y',    TAKE,d,
+       'U',    DROP,d,
+       '[',    ASGN,asg,
+
+/*
+ * monadic or dyadic
+ *     op2 op1 v (dyadic op)
+ *     op1 v+1 (monadic op)
+ */
+
+       'E',    EPS,md,
+       'B',    BASE,md,
+       'Q',    DEAL,md,
+       'R',    DRHO,md,
+       'I',    DIOT,md,
+       0211  , ROT0,md,
+       0212  , DTRN,md,
+       0213  , DIBM,md,
+       0214  , DDOM,md,
+
+
+
+/*
+ * monadic with optional subscript
+ *     op1 v (monadic op)
+ *     op1 sub v+1 (subscripted monadic op)
+ */
+
+       0215  , GDU,msub,
+       0216  , GDD,msub,
+
+/*
+ * dyadic with optional subscript
+ *     op2 op1 v (dyadic op)
+ *     op2 op1 sub v+1 (subscripted dyadic op)
+ */
+
+
+/*
+ * monadic or dyadic with optional subscript
+ *     op2 op1 v (dyadic op)
+ *     op1 v+1 (monadic op)
+ *     op2 op1 sub v+2 (subscripted dyadic op)
+ *     op1 sub v+3 (subscripted monadic op)
+ */
+
+       0217  , ROT,mdsub,
+       ',',    CAT,mdsub,
+
+/*
+ * end of list
+ */
+
+       0
+};
+
+int    comtab[] =
+{
+       "ascii",        comnull,        ASCII,
+       "apl",          comnull,        APL,
+       "clear",        comnull,        CLEAR,
+       "continue",     comnull,        CONTIN,
+       "copy",         comnam,         COPY,
+       "csh",          comnull,        CSH,
+       "debug",        comnull,        DEBUG,
+       "digits",       comexpr,        DIGITS,
+       "drop",         comnam,         DROPC,
+       "edit",         comnam,         ED_IT,
+       "ex",           comnam,         EX_IT,
+       "erase",        comnam,         ERASE,
+       "fns",          comnull,        FNS,
+       "fuzz",         comexpr,        FUZZ,
+       "lib",          comnull,        LIB,
+       "load",         comnam,         LOAD,
+       "off",          comnull,        OFF,
+       "origin",       comexpr,        ORIGIN,
+       "read",         comnam,         READ,
+       "save",         comnam,         SAVE,
+       "vars",         comnull,        VARS,
+       "vi",           comnam,         EX_VI,
+       "width",        comexpr,        WIDTH,
+#ifdef SOMED
+       "symbols",      comnull,        SYMBOLS,
+#endif
+       0,              unk
+};
+       struct charbox  chartab[] =
+{
+       '/','_',
+       '?','_',
+       'K','L',
+       'L','O',
+       'C','J',
+       ')','T',
+       '(','T',
+       'O','P',
+       '.','K',
+       'O','_',
+       '?','O',
+       'B','N',
+       '+','L',
+       'H','M',
+       'G','M',
+       'M','O',
+       'F','a',
+       'F','b',
+       'F','c',
+       'F','d',
+       'F','e',
+       'F','f',
+       'F','g',
+       'F','h',
+       'F','i',
+       'F','j',
+       'F','k',
+       'F','l',
+       'F','m',
+       'F','n',
+       'F','o',
+       'F','p',
+       'F','q',
+       'F','r',
+       'F','s',
+       'F','t',
+       'F','u',
+       'F','v',
+       'F','w',
+       'F','x',
+       'F','y',
+       'F','z'
+};