home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703A.ISO
/
VPR_DATA
/
DOGA
/
SOURCES
/
POLYEDIT.LZH
/
ML
/
CODE.H
< prev
next >
Wrap
C/C++ Source or Header
|
1996-02-15
|
3KB
|
120 lines
/*
* 中間コード制御
*
* T.Kobayashi 1994.5.21
*/
#define CODE 1
#ifndef DATA
#include "data.h"
#endif
/*
* 内部表現コード
*/
#define CODE_CONST 1 /* 定数 */
#define CODE_OPERATOR 2 /* 演算子 */
#define CODE_SENTENSE 3 /* 文 */
#define CODE_IDENT 4 /* 識別子 */
#define CODE_ARRAY 5 /* 配列 */
/* 文 */
#define SENT_VAR 1 /* 変数定義 */
#define SENT_DEF_FUNC 2 /* 関数定義 */
#define SENT_IF 11 /* if 文 */
#define SENT_IF_ELSE 12 /* if-else 文 */
#define SENT_WHILE 13 /* while 文 */
#define SENT_DO 14 /* do-while 文 */
#define SENT_FOR 15 /* for 文 */
#define SENT_BREAK 16 /* break 文 */
#define SENT_CONTINUE 17 /* continue 文 */
#define SENT_RETURN 18 /* return 文 */
#define SENT_NULL 20 /* 空文 */
#define SENT_COMPLEX 21 /* 複文 */
#define SENT_ASSIGN 22 /* 代入文 */
#define SENT_ASN_PLUS 23 /* += */
#define SENT_ASN_MINUS 24 /* -= */
#define SENT_ASN_MULT 25 /* *= */
#define SENT_ASN_DIVIDE 26 /* /= */
#define SENT_ASN_AND 27 /* &= */
#define SENT_ASN_OR 28 /* |= */
#define SENT_ASN_XOR 29 /* |= */
#define SENT_ASN_INC 30 /* ++ */
#define SENT_ASN_DEC 31 /* -- */
#define SENT_EXPRESS 32 /* 式 */
/*
* 内部表現構造体
*/
/* 共通部分 */
typedef struct {
char type, size ;
}
CodeCommon ;
/* 定数 */
typedef struct {
char type, size ;
DataStruct data ;
}
CodeConst ;
/* 演算子 */
typedef struct {
char type, size ;
short otype ; /* 演算子の種類 */
}
CodeOperator ;
/* 文 */
typedef struct {
char type, size ;
short stype ; /* 文の種類 */
short line ; /* 文の存在する行番号 */
char *file ; /* 文の存在するファイル名 */
void *next ; /* 次の文へのポインタ */
}
CodeSentense ;
/* 識別子 */
typedef struct {
char type, size ;
short itype ; /* 識別子の種類 */
short ident ; /* 識別子番号 */
}
CodeIdent ;
/* 配列 */
typedef struct {
char type, size ;
short asize ; /* 識別子の種類 */
}
CodeArray ;
typedef union {
char type ;
CodeCommon com ;
CodeConst c ;
CodeOperator ope ;
CodeSentense sent ;
CodeIdent ident ;
CodeArray ary ;
}
CodeStruct ;
/* code.c */
extern void CodeInit( int );
extern void CodeExit( void );
extern CodeConst *CodeSetInt( int );
extern CodeConst *CodeSetConst( DataStruct* );
extern CodeOperator *CodeSetOperator( int );
extern CodeSentense *CodeSetSentense( char*, int );
extern CodeIdent *CodeSetIdent( int, int );
extern CodeArray *CodeSetArray( int );
extern CodeStruct *CodeTop( void );
extern CodeStruct *CodeNextPtr( void );
extern CodeStruct *CodeNext( CodeStruct* );
extern CodeStruct *CodeNextSentense( CodeStruct* );
extern void *CodeAlloc( int );