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

📄 parse.c

📁 根据tiny实现的C-词法语法分析器 编译原理课程
💻 C
📖 第 1 页 / 共 2 页
字号:
#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=&in;
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 + -