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*/