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