xref: /csrg-svn/usr.bin/f77/libI77/format.h (revision 18017)
12510Sdlw /*
2*18017Slibs char id_format[] = "@(#)format.h	1.6";
32510Sdlw  *
42510Sdlw  * format parser definitions
52510Sdlw  */
62510Sdlw 
72510Sdlw struct syl
82510Sdlw {
917968Slibs 	short op,p1,p2,rpcnt;
102510Sdlw };
112510Sdlw 
1217978Slibs /*	do NOT change this defines or add new ones without
13*18017Slibs  *	changing the value of the following define for OP_TYPE_TAB.
14*18017Slibs  *	change format.h both in the compiler and libI77 simultaneously.
1517978Slibs  */
1617978Slibs 
17*18017Slibs 
182510Sdlw #define RET	1
192510Sdlw #define REVERT 	2
202510Sdlw #define GOTO 	3
212510Sdlw #define X 	4
222510Sdlw #define SLASH 	5
232510Sdlw #define STACK 	6
242510Sdlw #define I 	7
252510Sdlw #define ED 	8
262510Sdlw #define NED 	9
272510Sdlw #define IM 	10
282510Sdlw #define APOS 	11
292510Sdlw #define H 	12
302510Sdlw #define TL 	13
312510Sdlw #define TR 	14
322510Sdlw #define T 	15
332510Sdlw #define COLON 	16
342510Sdlw #define S 	17
352510Sdlw #define SP 	18
362510Sdlw #define SS 	19
372510Sdlw #define P 	20
3817875Sdlw #define BNZ 	21
3917875Sdlw #define B 	22
402510Sdlw #define F 	23
412510Sdlw #define E 	24
422510Sdlw #define EE 	25
432510Sdlw #define D 	26
442510Sdlw #define DE	27		/*** NOT STANDARD FORTRAN ***/
452510Sdlw #define G 	28
462510Sdlw #define GE 	29
472510Sdlw #define L 	30
482510Sdlw #define A 	31
492510Sdlw #define AW	32
502510Sdlw #define R	33		/*** NOT STANDARD FORTRAN ***/
512510Sdlw #define DOLAR	34		/*** NOT STANDARD FORTRAN ***/
522510Sdlw #define SU	35		/*** NOT STANDARD FORTRAN ***/
532510Sdlw 
5417978Slibs #define LAST_TERM SU
5517978Slibs 
5617978Slibs /* OP_TYPE_TAB is used in dofio.c .
5717978Slibs 	  Each value corresponds to a value above, and must be
5817978Slibs 	  ED for editing terms: I,IM,F,E,EE,D,DE,G,GE,L,A,AW
5917978Slibs 	  NED for nonediting terms which change the I/O stream:
6017978Slibs 			X,SLASH,APOS,H,TL,TR,T
6117978Slibs 	  and just the value of the term for all others.
6217978Slibs 
6317978Slibs 	  E.g. SP is defined above as 17, so the element 17 of
6417978Slibs 	  OP_TYPE_TAB (counting from zero) is SP since SP does not
6517978Slibs 	  read or write data;
6617978Slibs 	  IM is defined as 10 so the element 10 of OP_TYPE_TAB
6717978Slibs 	  is ED since IM edits data from the i/o list.
6817978Slibs  */
6917978Slibs #define OP_TYPE_TAB {0, RET, REVERT, GOTO, NED, NED, STACK, ED, ED, NED, \
7017978Slibs 			ED, NED, NED, NED, NED, NED, COLON, S, SP, SS, P, \
7117978Slibs 			BNZ, B, ED, ED, ED, ED, ED, ED, ED, ED, ED, ED, \
7217978Slibs 			R, DOLAR, SU }
7317978Slibs 
7416597Sralph #define	FMTUNKN	-1
752510Sdlw #define FMTOK	1
762510Sdlw #define FMTERR	0
772510Sdlw 
7817968Slibs #define FMT_COMP 0x101		/* indicates pre-compiled formats */
7917968Slibs 
8017968Slibs extern struct syl *syl_ptr;
8117968Slibs extern int parenlvl,revloc;
8217968Slibs extern short pc;
83