📄 data.h
字号:
/* data.h */
#define right_max 3
#define analyze_max 7
#define VT_max 6
#define input_max 30
#define stack_max 20
typedef enum {E,E1,T,T1,P,ana_rgt,ana_sign,empty} analyze;
typedef enum {add,mul,i,lef,VT_rgt,VT_sign,NUL} VT;
char ana_cha[][3]={"E ","E1","T ","T1","P ",") ","~ "};
typedef struct node1 {
analyze right[right_max];
int del,err;
} unit;
unit analyze_matrix[analyze_max][VT_max]={
{{{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}, {{E1,T,empty},0,0}, {{E1,T,empty},0,0}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}},
{{{E1,T,empty},1,0}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,0}, {{empty,empty,empty},0,0}},
{{{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}, {{T1,P,empty},0,0}, {{T1,P,empty},0,0}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}},
{{{empty,empty,empty},0,0}, {{T1,P,empty},1,0}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,0}, {{empty,empty,empty},0,0}},
{{{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}, {{empty,empty,empty},1,0}, {{ana_rgt,E,empty},1,0}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}},
{{{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}, {{empty,empty,empty},1,0}, {{empty,empty,empty},0,1}},
{{{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,1}, {{empty,empty,empty},0,-1}}
};
analyze top;
VT next;
typedef struct node2 {
analyze data;
struct node2 *next;
} analyze_node;
analyze_node *analyze_stack;
char input_stream[input_max];
int input_ptr;
int line,num;
analyze pop()
{
analyze back;
analyze_node *pre=analyze_stack;
analyze_node *top=analyze_stack;
if(analyze_stack->next!=NULL)
{
top=pre->next;
while(top->next!=NULL) pre=top,top=top->next;
pre->next=NULL;
}
back=top->data;
free(top);
return back;
}
void push(analyze new_analyze)
{
analyze_node *top=analyze_stack;
if(analyze_stack==NULL)
{
analyze_stack=(node2 *)malloc(sizeof(analyze_node));
analyze_stack->data=new_analyze;
analyze_stack->next=NULL;
return;
}
while(top->next!=NULL) top=top->next;
top->next=(node2 *)malloc(sizeof(analyze_node));
top->next->data=new_analyze;
top->next->next=NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -