⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 struct.h

📁 编译方法课程设计之LL(1)语法分析
💻 H
字号:
#define stack_init_size 100
/*堆栈 初始大小*/
#define stackinc        1     
/*堆栈 分配增量*/
typedef struct 
{
    char*base,*top ;
    int stacksize ;
    /*堆栈 当前大小*/
}
stack ;

#define LEN sizeof(struct node )

struct head*ff ;
struct node 
{
    char type ;
    /* 1 非终 2 终结符 3 空*/
    char id ;
    struct node*next ;
    /* 顺向指针*/
    struct node*pn ;
    /* 规则式指针*/
    struct node*pm ;
    /* 文法指针  兼   逆向循环指针*/
}
;
struct head 
{
    char id ;
    char kong ;
    struct ffnode*first ;
    struct ffnode*follow ;
    struct node*kg ;
    
}
;
struct ffnode 
{
    char id ;
    struct ffnode*nt ;
    struct node*fp ;
    
}
;
/*  出错暂停  */
void  exit_pause()
{ /*  printf("\nPress any key to continue");
	getch();
    exit(1);*/
}

int initstack(stack*s)
{
    
    s->base=(char*)malloc(stack_init_size*sizeof(char));
    if(!s->base){printf("分配失败"); exit_pause();}
    s->top=s->base ;
    s->stacksize=stack_init_size ;
    return OK ;
}

int gettop(stack*s,char*e)
{
    if(s->base==s->top)return ERROR ;
    *e=*(s->top-1);
    return OK ;
}
int push(stack*s,char ch)
{
    if(s->top-s->base>=s->stacksize) return ERROR;
    *(s->top++)=ch ;
    return OK ;
    
}
int pop(stack*s,char*e)
{
    if(s->top==s->base)return ERROR ;
    *e=*(--s->top);
    return OK ;
    
}

void destroy(stack*s)
{
    
    free(s->base);
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -