📄 parse.c
字号:
#include "parse.h"
#include "globals.h"
#include "util.h"
#include "scan.h"
#include <conio.h>
const int number=45;//非终结符的个数
const int num=28; //终结符的个数
//char st[100][20]={"$","program"};
char *stack[]={"$","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program","program"};
int sp=1;
int flag=0;
int error=0;
int get=1;
int tab=0;
tnode *td;
char in[MAXTOKENLEN+1];
char *p=∈
TokenType tk=ID;
char *t[]=
{"program",
"declaration-list",
"declaration-list1",
"declaration",
"declaration1",
"params",
"params1",
"param-list",
"param-list1",
"param",
"args",
"arg-list",
"arg-list1",
"statement-list",
"statement-list1",
"statement",
"compound-stmt",
"local-declarations",
"local-declarations1",
"var-declaration",
"expression-stmt",
"selection-stmt",
"selection-stmt1",
"iteration-stmt",
"return-stmt",
"return-stmt1",
"expression",
"expression1",
"expression2",
"expression3",
"simple-expression",
"simple-expression1",
"additive-expression",
"additive-expression1",
"term",
"term1",
"args1",
"var-declaration1",
"var1",
"relop",
"param1",
"addop",
"mulop",
"factor",
"type-specifier"
};
char *q1[]=
{
"declaration-list",
"declaration",
"declaration",
"e",
"type-specifier",
";",
"(",
"[",
"int",
"param",
",",
"e",
"type-specifier",
"arg-list",
"e",
"expression",
",",
"e",
"statement-list1",
"statement",
"e",
"expression-stmt",
"compound-stmt",
"selection-stmt",
"iteration-stmt",
"return-stmt",
"{",
"local-declarations1",
"var-declaration",
"e",
"type-specifier",
"expression",
";",
"if",
"else",
"e",
"while",
"return",
";",
"expression",
"ID",
"(",
"NUM",
"term1",
"var1",
"(",
"=",
"expression1",
"additive-expression",
"relop",
"e",
"term",
"addop",
"e",
"factor",
"mulop",
"e",
"var1",
"(",
";",
"[",
"e",
"[",
"<=",
"<",
">",
">=",
"==",
"!=",
"e",
"[",
"+",
"-",
"*",
"/",
"(",
"ID",
"NUM",
"int",
"void",
"void",
"ID",
"e"
};
char *q2[]=
{
"e",
"declaration-list1",
"declaration-list1",
"e",
"ID",
"e",
"params",
"NUM",
"ID",
"param-list1",
"param",
"e",
"ID",
"e",
"e",
"arg-list1",
"expression",
"e",
"e",
"statement-list1",
"e",
"e",
"e",
"e",
"e",
"e",
"local-declarations",
"e",
"local-declarations1",
"e",
"ID",
";",
"e",
"(",
"statement",
"e",
"(",
"return-stmt1",
"e",
";",
"expression2",
"expression",
"expression1",
"additive-expression1",
"expression3",
"args",
"expression",
"e",
"simple-expression1",
"additive-expression",
"e",
"additive-expression1",
"term",
"e",
"term1",
"factor",
"e",
"e",
"args",
"e",
"NUM",
"e",
"expression",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"]",
"e",
"e",
"e",
"e",
"expression",
"args1",
"e",
"e",
"e",
"params1",
"param1",
"e"
};
char *q3[]=
{
"e",
"e",
"e",
"e",
"declaration1",
"e",
")",
"]",
"param1",
"e",
"param-list1",
"e",
"param1",
"e",
"e",
"e",
"arg-list1",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"statement-list",
"e",
"e",
"e",
"var-declaration1",
"e",
"e",
"expression",
"e",
"e",
"expression",
"e",
"e",
"e",
"e",
")",
"e",
"simple-expression1",
"e",
")",
"e",
"e",
"e",
"e",
"e",
"e",
"additive-expression1",
"e",
"e",
"term1",
"e",
"e",
")",
"e",
"]",
"e",
"]",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
")",
"e",
"e",
"e",
"e",
"e",
"param-list1",
"e"
};
char *q4[]=
{
"e",
"e",
"e",
"e",
"e",
"e",
"compound-stmt",
";",
"param-list1",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"}",
"e",
"e",
"e",
"e",
"e",
"e",
")",
"e",
"e",
")",
"e",
"e",
"e",
"e",
"expression1",
"e",
"e",
"e",
"expression1",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
";",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e"
};
char *q5[]=
{
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"statement",
"e",
"e",
"statement",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e"
};
char *q6[]=
{
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
"selection-stmt1",
"e",
"e",
"e",
"e",
"e",
"e",
"e",
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -