148069Sbostic /*- 2*62163Sbostic * Copyright (c) 1980, 1993 3*62163Sbostic * The Regents of the University of California. All rights reserved. 422586Sdist * 548069Sbostic * %sccs.include.redist.c% 648069Sbostic * 7*62163Sbostic * @(#)opinfo.h 8.1 (Berkeley) 06/06/93 822586Sdist */ 95545Slinton 105545Slinton /* 115562Slinton * Tree operator definitions. 125545Slinton */ 135545Slinton 145545Slinton struct opinfo { 155545Slinton short opflags; 165545Slinton char *opstring; 175545Slinton }; 185545Slinton 195545Slinton OPINFO opinfo[]; 205545Slinton 215545Slinton #define O_NOP 0 /* no op */ 225545Slinton #define O_NAME 1 /* leaf op for address of a variable */ 235545Slinton #define O_QNAME 2 /* variable qualified by surrounding block */ 245545Slinton #define O_LCON 3 /* long constant (i.e. integer) */ 255545Slinton #define O_FCON 4 /* floating constant (i.e. real) */ 265545Slinton #define O_SCON 5 /* string constant (type alfa) */ 275545Slinton #define O_INDEX 6 /* array subscript (does just one index) */ 285545Slinton #define O_INDIR 7 /* indirection through a pointer */ 295545Slinton #define O_RVAL 8 /* get value of an operand address */ 305545Slinton #define O_COMMA 9 /* as in parameter lists */ 315545Slinton 325545Slinton /* 335545Slinton * arithmetic operators 345545Slinton */ 355545Slinton 365545Slinton #define O_ITOF 10 /* convert integer to real */ 375545Slinton #define O_ADD 11 385545Slinton #define O_ADDF 12 395545Slinton #define O_SUB 13 405545Slinton #define O_SUBF 14 415545Slinton #define O_NEG 15 425545Slinton #define O_NEGF 16 435545Slinton #define O_MUL 17 445545Slinton #define O_MULF 18 455545Slinton #define O_DIVF 19 /* real divided by real */ 465545Slinton #define O_DIV 20 /* integer divided by integer, integer result */ 475545Slinton #define O_MOD 21 485545Slinton 495545Slinton /* 505545Slinton * logical operators 515545Slinton */ 525545Slinton 535545Slinton #define O_AND 22 545545Slinton #define O_OR 23 555545Slinton 565545Slinton /* 575545Slinton * relational operators 585545Slinton */ 595545Slinton 605545Slinton #define O_LT 24 615545Slinton #define O_LTF 25 625545Slinton #define O_LE 26 635545Slinton #define O_LEF 27 645545Slinton #define O_GT 28 655545Slinton #define O_GTF 29 665545Slinton #define O_GE 30 675545Slinton #define O_GEF 31 685545Slinton #define O_EQ 32 695545Slinton #define O_EQF 33 705545Slinton #define O_NE 34 715545Slinton #define O_NEF 35 725545Slinton 735545Slinton /* 745545Slinton * debugger commands 755545Slinton */ 765545Slinton 775545Slinton #define O_ASSIGN 36 785545Slinton #define O_CHFILE 37 795545Slinton #define O_CONT 38 805545Slinton #define O_LIST 39 815545Slinton #define O_NEXT 40 825545Slinton #define O_PRINT 41 835545Slinton #define O_STEP 42 845545Slinton #define O_WHATIS 43 855545Slinton #define O_WHERE 44 865545Slinton #define O_XI 45 875545Slinton #define O_XD 46 885545Slinton #define O_CALL 47 895545Slinton #define O_EDIT 48 905545Slinton #define O_DUMP 49 915545Slinton #define O_HELP 50 925545Slinton #define O_REMAKE 51 935545Slinton #define O_RUN 52 945545Slinton #define O_SOURCE 53 955545Slinton #define O_STATUS 54 965545Slinton #define O_TRACE 55 975545Slinton #define O_TRACEI 56 985545Slinton #define O_STOP 57 995545Slinton #define O_STOPI 58 1005545Slinton #define O_DELETE 59 1015545Slinton #define O_WHICH 60 1025545Slinton #define O_QLINE 61 /* filename : linenumber */ 1035545Slinton #define O_ALIAS 62 1045562Slinton #define O_GRIPE 63 1055545Slinton 1065562Slinton #define O_LASTOP 63 /* must be number of last operator */ 1075545Slinton 1085545Slinton /* 1095545Slinton * operator flags and predicates 1105545Slinton */ 1115545Slinton 1125545Slinton #define LEAF 01 1135545Slinton #define UNARY 02 1145545Slinton #define BINARY 04 1155545Slinton #define BOOL 010 1165545Slinton #define REALOP 020 1175545Slinton #define INTOP 040 1185545Slinton 1195545Slinton #define isbitset(a, m) ((a&m) == m) 1205545Slinton #define isleaf(o) isbitset(opinfo[o].opflags, LEAF) 1215545Slinton #define isunary(o) isbitset(opinfo[o].opflags, UNARY) 1225545Slinton #define isbinary(o) isbitset(opinfo[o].opflags, BINARY) 1235545Slinton #define isreal(o) isbitset(opinfo[o].opflags, REALOP) 1245545Slinton #define isint(o) isbitset(opinfo[o].opflags, INTOP) 1255545Slinton #define isboolean(o) isbitset(opinfo[o].opflags, BOOL) 1265545Slinton 1275545Slinton #define degree(o) (opinfo[o].opflags&(LEAF|UNARY|BINARY)) 128