语法分析器完整程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//#include

/*

int _tmain(int argc, _TCHAR* argv[])

{

return 0;

}

*/

/****************************************************/

/* pas.c */

/* 高级语言到四元式*/

/****************************************************/

#include "iostream"

#include "stdio.h"

#include "string.h"

#include "time.h"

#include "conio.h"

void my_delay(unsigned long ms)

{

double start_time = (double)clock() / CLOCKS_PER_SEC * 1000;

while ( (double)clock() / CLOCKS_PER_SEC * 1000 - start_time < ms ) ; }

#define ACC -2

/****************************************/

#define sy_if 0

#define sy_then 1

#define sy_else 2

#define sy_while 3

#define sy_begin 4

#define sy_do 5

#define sy_end 6

#define a 7

#define semicolon 8

#define e 9

#define jinghao 10

#define S 11

#define L 12

#define tempsy 15

#define EA 18 /*E and*/

#define EO 19 /*E or*/

#define plus 34

#define minus 35 //添加减号的关键字

#define times 36

#define division 37 //添加除号的关键字

#define becomes 38

#define op_and 39

#define op_or 40

#define op_not 41

#define rop 42

#define lparent 48

#define rparent 49

#define ident 56

#define intconst 57

/******************************************/ char ch='\0';/*当前字符*/

int count=0;

static char spelling[10]={""};/*存放识别的字*/ static char line[81]={""};/*一行字符缓冲区*/ char *pline;/*字符缓冲区指针*/

char ch_exit;

static char ntab1[100][10];

struct ntab

{

int tc;

int fc;

}ntab2[200];

int label=0;

/*存放临时变量的表的定义*/

struct rwords{

char sp[10];

int sy;

};

/*存放文件的结构*/

struct rwords reswords[10]={{"if",sy_if},

{"do",sy_do},

{"else",sy_else},

{"while",sy_while},

{"then",sy_then},

{"begin",sy_begin},

{"end",sy_end},

{"and",op_and},

{"or",op_or},

{"not",op_not}}; struct aa{

int sy1;

int pos;

}buf[1000],/*词法分析结果缓冲区*/

n,/*当前字符*/

n1,/*当前表达式中的字符*/

E,/*非终结符*/

sstack[100],/*符号栈*/

ibuf[100],

stack[1000];

struct aa oth;

struct fourexp{

char op[10];

struct aa arg1;

struct aa arg2;

int result;

}fexp[200];

/*四元式的结构*/

int ssp=0;/*指向sstack[100]*/

struct aa *pbuf=buf;/*指向词法分析缓冲区*/

int nlength=0;

int lnum=0;/*源程序长度*/

int tt1=0;

FILE *cfile;

FILE *mfile;

/*********************************************************/ int newt=0;

/*临时变量*/

int nxq=100;

/*nxq指向下一个形成的四元式的地址*/

int lr;

int lr1;

int sp=0;

/* 状态栈定义*/

int stack1[100];

int sp1=0;

/*状态栈1的定义*/

int num=0;

struct ll{

int nxq1;

int tc1;

int fc1;

}labelmark[10];

int labeltemp[10];

相关文档
最新文档