V5/usr/c/c04.c

Compare this file to the similar file:
Show the results in this format:

#
#include "c0h.c"
/*
 *  info on operators:
 *   01-- is binary operator
 *   02-- left (or only) operand must be lvalue
 *   04-- is relational operator
 *  010-- is assignment-type operator
 *  020-- non-float req. on left
 *  040-- non-float req. on right
 * 0100-- is commutative
 * 0200-- is right, not left-associative
 * 0400-- is leaf of tree
 * *0XX000-- XX is priority of operator
 */
int opdope[] {
	000000,	/* EOF */
	000000,	/* ; */
	000000,	/* { */
	000000,	/* } */
	036000,	/* [ */
	002000,	/* ] */
	036000,	/* ( */
	002000,	/* ) */
	014201,	/* : */
	007001,	/* , */
	000000,	/* 10 */
	000000,	/* 11 */
	000000,	/* 12 */
	000000,	/* 13 */
	000000,	/* 14 */
	000000,	/* 15 */
	000000,	/* 16 */
	000000,	/* 17 */
	000000,	/* 18 */
	000000,	/* 19 */
	000400,	/* name */
	000400,	/* short constant */
	000400,	/* string */
	000400,	/* float */
	000400,	/* double */
	000000,	/* 25 */
	000000,	/* 26 */
	000000,	/* 27 */
	000000,	/* 28 */
	034200,	/* sizeof */
	034202,	/* ++pre */
	034202,	/* --pre */
	034202,	/* ++post */
	034202,	/* --post */
	034220,	/* !un */
	034202,	/* &un */
	034220,	/* *un */
	034200,	/* -un */
	034220,	/* ~un */
	036001,	/* . (structure reference) */
	030101,	/* + */
	030001,	/* - */
	032101,	/* * */
	032001,	/* / */
	032001,	/* % */
	026061,	/* >> */
	026061,	/* << */
	020161,	/* & */
	017161,	/* | */
	017161,	/* ^ */
	036001,	/* -> */
	000000, /* int -> double */
	000000, /* double -> int */
	016001, /* && */
	015001, /* || */
	000000, /* 55 */
	000000, /* 56 */
	000000, /* 57 */
	000000, /* 58 */
	000000,	/* 59 */
	022005,	/* == */
	022005,	/* != */
	024005,	/* <= */
	024005,	/* < */
	024005,	/* >= */
	024005,	/* > */
	024005,	/* <p */
	024005,	/* <=p */
	024005,	/* >p */
	024005,	/* >=p */
	012213,	/* =+ */
	012213,	/* =- */
	012213,	/* =* */
	012213,	/* =/ */
	012213,	/* =% */
	012253,	/* =>> */
	012253,	/* =<< */
	012253,	/* =& */
	012253,	/* =| */
	012253,	/* =^ */
	012213,	/* = */
	000000,	/* 81 */
	000000,	/* 82 */
	000000,	/* 83 */
	000000,	/* 84 */
	000000,	/* 85 */
	000000,	/* 86 */
	000000,	/* 87 */
	000000,	/* 88 */
	000000,	/* 89 */
	014201,	/* ? */
	000000,	/* 91 */
	000000,	/* 92 */
	000000,	/* 93 */
	000000,	/* 94 */
	000000,	/* 95 */
	000000,	/* 96 */
	000000,	/* 97 */
	000000,	/* 98 */
	000000,	/* 99 */
	036001,	/* call */
	036001,	/* mcall */
	000000,	/* goto */
	000000,	/* jump cond */
	000000,	/* branch cond */
	000000,	/* 105 */
	000000, /* 106 */
	000000,	/* 107 */
	000000,	/* 108 */
	000000,	/* 109 */
	000000	/* force r0 */
};

/*
 * conversion table:
 * 0100-- convert left operand
 * 0*0XX-- XX is conversion number, to wit:
 *  000: none
 *  001: int -> ptr
 *  002: ptr -> int
 *  003: int -> double
 *  004: double -> int
 *  077: generally illegal
 */
char cvtab[] {
	0000,	/* i : i */
	0000,	/* i : c */
	0103,	/* i : f */
	0103,	/* i : d */
	0077,	/* i : s */
	0101,	/* i : *i */
	0000,	/* i : *c */
	0101,	/* i : *f */
	0101,	/* i : *d */
	0101,	/* i : *s */
	0101,	/* i : ** */

	0000,	/* c : i */
	0000,	/* c : c */
	0103,	/* c : f */
	0103,	/* c : d */
	0077,	/* c : s */
	0101,	/* c : *i */
	0000,	/* c : *c */
	0101,	/* c : *f */
	0101,	/* c : *d */
	0101,	/* c : *s */
	0101,	/* c : ** */

	0003,	/* f : i */
	0003,	/* f : c */
	0000,	/* f : f */
	0000,	/* f : d */
	0077,	/* f : s */
	0077,	/* f : *i */
	0077,	/* f : *c */
	0077,	/* f : *f */
	0077,	/* f : *d */
	0077,	/* f : *s */
	0077,	/* f : ** */

	0003,	/* d : i */
	0003,	/* d : c */
	0000,	/* d : f */
	0000,	/* d : d */
	0077,	/* d : s */
	0077,	/* d : *i */
	0077,	/* d : *c */
	0077,	/* d : *f */
	0077,	/* d : *d */
	0077,	/* d : *s */
	0077,	/* d : ** */

	0077,	/* s : i */
	0077,	/* s : c */
	0077,	/* s : f */
	0077,	/* s : d */
	0077,	/* s : s */
	0077,	/* s : *i */
	0077,	/* s : *c */
	0077,	/* s : *f */
	0077,	/* s : *d */
	0077,	/* s : *s */
	0077,	/* s : ** */

	0001,	/* *i : i */
	0001,	/* *i : c */
	0077,	/* *i : f */
	0077,	/* *i : d */
	0077,	/* *i : s */
	0002,	/* *i : *i */
	0077,	/* *i : *c */
	0077,	/* *i : *f */
	0077,	/* *i : *d */
	0077,	/* *i : *s */
	0002,	/* *i : ** */

	0000,	/* *c : i */
	0000,	/* *c : c */
	0077,	/* *c : f */
	0077,	/* *c : d */
	0077,	/* *c : s */
	0077,	/* *c : *i */
	0000,	/* *c : *c */
	0077,	/* *c : *f */
	0077,	/* *c : *d */
	0077,	/* *c : *s */
	0077,	/* *c : ** */

	0001,	/* *f : i */
	0001,	/* *f : c */
	0077,	/* *f : f */
	0077,	/* *f : d */
	0077,	/* *f : s */
	0077,	/* *f : *i */
	0077,	/* *f : *c */
	0002,	/* *f : *f */
	0077,	/* *f : *d */
	0077,	/* *f : *s */
	0077,	/* *f : ** */

	0001,	/* *d : i */
	0001,	/* *d : c */
	0077,	/* *d : f */
	0077,	/* *d : d */
	0077,	/* *d : s */
	0077,	/* *d : *i */
	0077,	/* *d : *c */
	0077,	/* *d : *f */
	0002,	/* *d : *d */
	0077,	/* *d : *s */
	0077,	/* *d : ** */

	0001,	/* *s : i */
	0001,	/* *s : c */
	0077,	/* *s : f */
	0077,	/* *s : d */
	0077,	/* *s : s */
	0077,	/* *s : *i */
	0077,	/* *s : *c */
	0077,	/* *s : *f */
	0077,	/* *s : *d */
	0002,	/* *s : *s */
	0077,	/* *s : ** */

	0001,	/* ** : i */
	0001,	/* ** : c */
	0077,	/* ** : f */
	0077,	/* ** : d */
	0077,	/* ** : s */
	0002,	/* ** : *i */
	0077,	/* ** : *c */
	0077,	/* ** : *f */
	0077,	/* ** : *d */
	0077,	/* ** : *s */
	0002	/* ** : ** */
};

/*
 * character type table
 */
char ctab[] {
	EOF,	INSERT,	UNKN,	UNKN,	UNKN,	UNKN,	UNKN,	UNKN,
	UNKN,	SPACE,	NEWLN,	UNKN,	UNKN,	UNKN,	UNKN,	UNKN,
	UNKN,	UNKN,	UNKN,	UNKN,	UNKN,	UNKN,	UNKN,	UNKN,
	UNKN,	UNKN,	UNKN,	UNKN,	UNKN,	UNKN,	UNKN,	UNKN,
	SPACE,	EXCLA,	DQUOTE,	UNKN,	UNKN,	MOD,	 AND,	SQUOTE,
	LPARN,	RPARN,	TIMES,	PLUS,	COMMA,	MINUS,	PERIOD,	DIVIDE,
	DIGIT,	DIGIT,	DIGIT,	DIGIT,	DIGIT,	DIGIT,	DIGIT,	DIGIT,
	DIGIT,	DIGIT,	COLON,	SEMI,	LESS,	ASSIGN,	GREAT,	QUEST,
	UNKN,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,
	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,
	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,
	LETTER,	LETTER,	LETTER,	LBRACK,	UNKN,	RBRACK,	EXOR,	LETTER,
	UNKN,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,
	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,
	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,	LETTER,
	LETTER,	LETTER,	LETTER,	LBRACE,	OR,	RBRACE,	COMPL,	UNKN
};