www.pudn.com > FUN_2V.rar > ucvm_type.h


#ifndef UCVM_TYPE_H
#define UCVM_TYPE_H
/*********************************************************/
#include 
#include 
#include 
#include 
#include 
/*********************************************************/
#define TYPE_EXPR_ID 1
#define TYPE_EXPR_CS 2
#define TYPE_EXPR_CC 3
#define TYPE_EXPR_CI 4
#define TYPE_EXPR_CR 5
#define TYPE_EXPR_OP 6
/*********************************************************/
struct t_CONSTANT_I_node;
struct t_CONSTANT_C_node;
struct t_CONSTANT_S_node;
struct t_CONSTANT_R_node;
struct t_IDENTIFIER_node;
struct t_OPERATIONS_node;
struct t_Tree_Node;
/*********************************************************/
typedef double Real;

typedef struct t_CONSTANT_C_node CONSTANT_C_node;
typedef struct t_CONSTANT_I_node CONSTANT_I_node;
typedef struct t_CONSTANT_R_node CONSTANT_R_node;
typedef struct t_CONSTANT_S_node CONSTANT_S_node;
typedef struct t_IDENTIFIER_node IDENTIFIER_node;
typedef struct t_OPERATIONS_node OPERATIONS_node;
typedef struct t_Tree_Node       Node;
/*********************************************************/
struct t_CONSTANT_C_node
{
    char  c_value;
};
/*********************************************************/
struct t_CONSTANT_I_node
{
    long  i_value;
};
/*********************************************************/
struct t_CONSTANT_R_node
{
    Real  r_value;
};
/*********************************************************/
struct t_CONSTANT_S_node
{
    char *s_value;
};
/*********************************************************/
struct t_IDENTIFIER_node
{
    char *s_label;
};
/*********************************************************/
struct t_OPERATIONS_node
{
    short oper;
    short op_n;
    Node *op_s[4];
};
/*********************************************************/
struct t_Tree_Node
{
    short   node_type;

    union
    {
        CONSTANT_I_node ci;
        CONSTANT_C_node cc;
        CONSTANT_R_node cr;
        CONSTANT_S_node cs;
        IDENTIFIER_node id;
        OPERATIONS_node op;

    }       node_data;
};
/*********************************************************/
extern FILE *yyin;
extern FILE *yyout;
extern FILE *asout;

extern char *g_label_conti;
extern char *g_label_break;

extern int  yylex  (void  );
extern void yyerror(char *);
extern void zzlabel(char *);
/*********************************************************/
#endif/*UCVM_TYPE_H*/