亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pas.c

?? PASCAL語言子集編譯器
?? C
?? 第 1 頁 / 共 4 頁
字號:
/***************************************/
/*         pas.c                       */
/*          高級語言到四元式           */
/***************************************/

#include  "stdio.h"
#include   "string.h"
#include	"globals.h"
#include	"symtab.h"
//#include	"code.h"
#include     "block.h"
#include     "cgen.h"

#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    times       36
#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;     //字符緩沖區指針

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];  //詞法分析結果緩沖區
struct aa n;   // 當前字符
struct aa n1;  //當前表達式中的字符
struct aa E;   //非終結符
struct aa sstack[100];//符號棧
struct aa ibuf[100];
struct aa 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;
FILE *source;
FILE *code; 
int Error=FALSE;
/**********************************************/
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];
int pointmark=-1,pointtemp=-1;
int sign=0;
//sign=1,表達式為賦值語句;sign=2,表達式為布爾表達式
/********************************************************/
static int action[19][13]=
/*0*/   {{2,-1,-1,3,4,-1,-1,5,-1,-1,10,1,-1},
/*1*/   {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ACC,-1,-1},
/*2*/   {-1,-1,-1,-1,-1,-1,-1,-1,-1,6,-1,-1,-1},
/*3*/   {-1,-1,-1,-1,-1,-1,-1,-1,-1,7,-1,-1,-1},
/*4*/   {2,-1,-1,3,4,-1,-1,5,-1,-1,-1,9,8},
/*5*/   {-1,-1,104,-1,-1,-1,104,-1,104,-1,104,-1,-1},
/*6*/   {-1,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}, 
/*7*/   {-1,-1,-1,-1,-1,11,-1,-1,-1,-1,-1,-1,-1},
/*8*/   {-1,-1,-1,-1,-1,-1,12,-1,-1,-1,-1,-1,-1},
/*9*/   {-1,-1,-1,-1,-1,-1,105,-1,13,-1,-1,-1,-1},
/*10*/  {2,-1,-1,3,4,-1,-1,5,-1,-1,-1,14,-1},
/*11*/  {2,-1,-1,3,4,-1,-1,5,-1,-1,-115,-1},
/*12*/  {-1,-1,103,-1,-1,-1,103,-1,103,-1,103,-1,-1},
/*13*/  {2,-1,-1,3,4,-1,-1,5,-1,-1,-1,9,16},
/*14*/  {-1,-1,17,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
/*15*/  {-1,-1,102,-1,-1,-1,102,-1,102,-1,102,-1,-1},
/*16*/  {-1,-1,-1,-1,-1,-1,106,-1,-1,-1,-1,-1,-1},
/*17*/  {2,-1,-1,3,4,-1,-1,5,-1,-1,-1,18,-1},
/*18*/  {-1,-1,101,-1,-1,-1,101,-1,101,-1,101,-1,-1}};

static int action1[10][7]=
/*0*/     {{3,-1,-1,2,-1,-1,1},
/*1*/     {-1,4,5,-1,-1,ACC,-1},
/*2*/     {3,-1,-1,2,-1,-1,6},
/*3*/     {104,104,104,104,104,104,-1},
/*4*/     {3,-1,-1,2,-1,-1,7},
/*5*/     {3,-1,-1,2,-1,-1,8},
/*6*/     {-1,4,5,-1,9,-1,-1},
/*7*/     {101,101,5,101,101,101,-1},
/*8*/     {102,102,102,102,102,102,-1},
/*9*/     {103,103,103,103,103,103,-1}};

static int action2[16][11]=
/*0*/     {{1,-1,4,-1,5,-1,-1,-1,13,7,8},
/*1*/     {-1,2,-1,101,-1,101,101,101,-1,-1,-1},
/*2*/     {3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}, 
/*3*/     {-1,-1,-1,102,-1,102,102,102,-1,-1,-1},
/*4*/     {1,-1,4,-1,5,-1,-1,-1,11,7,8},
/*5*/     {1,-1,4,-1,5,-1,-1,-1,6,7,8},
/*6*/     {-1,-1,-1,104,-1,9,10,104,-1,-1,-1},
/*7*/     {1,-1,4,-1,5,-1,-1,-1,14,7,8}, 
/*8*/     {1,-1,4,-1,5,-1,-1,-1,15,7,8},
/*9*/     {105,-1,105,-1,105,-1,-1,105,-1,-1,-1},
/*10*/    {107,-1,107,-1,107,-1,-1,107,-1,-1,-1},
/*11*/    {-1,-1,-1,12,-1,9,10,-1,-1,-1,-1},
/*12*/    {-1,103,-1,103,-1,103,103,103,-1,-1,-1},
/*13*/    {-1,-1,-1,-1,-1,9,10,ACC,-1,-1,-1},        
/*14*/    {-1,-1,-1,106,-1,9,10,106,-1,-1,-1}, 
/*15*/    {-1,-1,-1,108,-1,9,10,108-1,-1,-1}}; 
/*********************從文件讀一行到緩沖區*******************************/

readline()
{
	char ch1;
	pline=line;
	ch1=getc(cfile);
	while (ch1!='\n')
	{
		*pline=ch1;
		pline++;
		ch1=getc(cfile);
	}
	*pline='\0';
	pline=line;
}
/*******************從緩沖區讀一個字符***************/

readch()
{
	if(ch=='\0')
	{
		readline();
		lnum++;
	}
	ch=*pline;
	pline++;
}

/**************標志符和關鍵字的識別***********************/

find(char spel[])
{
	int ss1=0;
	int ii=0;
	while((ss1==0)&&(ii<nlength))
	{
		if(!strcmp(spel,ntab1[ii])) ss1=1;
		ii++;
	}
	if(ss1==1) return (ii-1);
	else return -1;
}

identifier()
{
	int iii=0,j,k;
	int ss=0;
	 k=0;
	do
	{
		spelling[k]=ch;
		k++;
		readch();
	}
	while(((ch>='a')&&(ch<='z'))||((ch>='0')&&(ch<='9')));
	pline--;
	spelling[k]='\0';
	while((ss==0)&&(iii<10))
	{
		if(!strcmp(spelling,reswords[iii].sp)) ss=1;
		iii++;
	}
	//關鍵字匹配
	if(ss==1)
	{
		buf[count].sy1=reswords[iii-1].sy;
	}
	else
	{
		buf[count].sy1=ident;
		j=find(spelling);
		if(j==-1)
		{
			buf[count].pos=tt1;
			strcpy(ntab1[tt1],spelling);
			tt1++;
			nlength++;
		}
		else buf[count].pos=j;
	}
	count++;
	for(k=0;k<10;k++)spelling[k]=' ';
}
/*******************數字的識別************************/

number()
{
	int ivalue=0;
	int digit;
	do
	{
		digit=ch-'0';
		ivalue=ivalue*10+digit;
		readch();
	}
	while((ch>='0')&&(ch<='9'));
	buf[count].sy1=intconst;
	buf[count].pos=ivalue;
	count++;
	pline--;
}
/***********************掃描主函數*************************/

scan()
{
	//int i;
	while(!feof(cfile))
	{
		switch(ch)
		{
		case ' ':
			break;
		case 'a':
		case 'b':
		case 'c':
		case 'd':
		case 'e':
		case 'f':
		case 'g':
		case 'h':
		case 'i':
		case 'j':
		case 'k':
		case 'l':
		case 'm':
		case 'n':
		case 'o':
		case 'p':
		case 'q':
		case 'r':
		case 's':
		case 't':
		case 'u':
		case 'v':
		case 'w':
		case 'x':
		case 'y':
		case 'z':
			identifier();
			break;
		case '0':
		case '1':
		case '2':
		case '3':
		case '4':
		case '5':
		case '6':
		case '7':
		case '8':
		case '9':
			number();
			break;
		case '<':
			readch();
			if(ch=='=')
			{
				buf[count].pos=0;
			}
			else
			{
				if(ch=='>')buf[count].pos=4;
				else
				{
					buf[count].pos=1;
					pline--;
				}
			}
			buf[count].sy1=rop;
			count++;
			break;
		case '>':
			readch();
			if(ch=='=')
			{
				buf[count].pos=2;
			}
			else
			{
				buf[count].pos=3;
				pline--;
			}
			buf[count].sy1=rop;
			count++;
			break;
		case '(':
			buf[count].sy1=lparent;
			count++;
			break;
		case ')':
			buf[count].sy1=rparent;
			count++;
			break;
		case '#':
			buf[count].sy1=jinghao;
			count++;
			break;
		case '+':
			buf[count].sy1=plus;
			count++;
			break;
		case '*':
			buf[count].sy1=times;
			count++;
			break;
		case ':':
			readch();
			if(ch=='=')
			buf[count].sy1=becomes;
			count++;
			break;
		case '=':
			buf[count].sy1=rop;
			buf[count].pos=5;
			count++;
			break;
		case ';':
			buf[count].sy1=semicolon;
			count++;
			break;
		}
			readch();
	}
			buf[count].sy1=-1;
}
/****************************************************************/

readnu()
{
	if(pbuf->sy1>=0)
	{
		n.sy1=pbuf->sy1;
		n.pos=pbuf->pos;
		pbuf++;
	}
}
/*****************************中間變量的生成*************************/

newtemp()
{
	newt++;
	return newt;
}
/*********************生成四元式**************************/

gen(char op1[],struct aa arg11,struct aa arg22,int result1)
{
	strcpy(fexp[nxq].op,op1);
	fexp[nxq].arg1.sy1=arg11.sy1;
	fexp[nxq].arg1.pos=arg11.pos;
	fexp[nxq].arg2.sy1=arg22.sy1;
	fexp[nxq].arg2.pos=arg22.pos;
	fexp[nxq].result=result1;
	nxq++;
	return nxq-1;
}
/*****************布爾表達式的匹配***********************/

merg(int p1,int p2)
{
	int p;
	if(p2==0) return p1;
	else
	{
		p=p2;
		while(fexp[p].result!=0) p=fexp[p].result;
		fexp[p].result=p1;
		return p2;
	}
}

backpatch(int p,int t)
{
	int tempq;
	int q;
	q=p;
	while(q!=0)
	{
		tempq=fexp[q].result;
		fexp[q].result=t;
		q=tempq;
	}
}
/************************************************************/

change1(int chan)
{
	switch(chan)
	{
	case ident:
	case intconst:
		return 0;
	case plus:
		return 1;
	case times:
		return 2;
	case lparent:
		return 3;
	case rparent:
		return 4;
	case jinghao:
		return 5;
	case tempsy:
		return 6;
	}
}

change2(int chan)
{
	switch(chan)
	{
	case ident:
	case intconst:
		return 0;
	case rop:
		return 1;
	case lparent:
		return 2;
	case rparent:
		return 3;
	case op_not:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区三区高清不卡| 欧美在线观看一二区| 亚洲国产精品一区二区久久恐怖片 | 国产一区二区三区日韩| 亚洲午夜羞羞片| 午夜视频在线观看一区二区三区| 亚洲女子a中天字幕| 亚洲愉拍自拍另类高清精品| 亚洲综合一区二区三区| 亚洲成人一区二区| 日韩黄色片在线观看| 青青草原综合久久大伊人精品| 男人的j进女人的j一区| 麻豆精品精品国产自在97香蕉| 久久成人麻豆午夜电影| 国模少妇一区二区三区| 成人97人人超碰人人99| 欧美日韩一区久久| 欧美一区二区免费| 久久免费国产精品| 亚洲美女在线一区| 视频在线观看91| 国产精品一级在线| 91麻豆成人久久精品二区三区| 欧美视频在线观看一区二区| 欧美性xxxxx极品少妇| 日韩一级完整毛片| 国产精品午夜在线观看| 一区二区国产盗摄色噜噜| 日韩高清不卡在线| 成人激情图片网| 7777精品伊人久久久大香线蕉超级流畅| 日韩一区二区高清| 亚洲欧美激情在线| 久久97超碰色| 欧美三级视频在线| 久久九九全国免费| 亚洲超碰精品一区二区| 国产v日产∨综合v精品视频| 欧美在线播放高清精品| 精品三级在线看| 亚洲欧美日韩国产一区二区三区| 午夜精品福利一区二区三区蜜桃| 国产91精品精华液一区二区三区| 欧美艳星brazzers| 国产精品免费人成网站| 久久精品免费观看| 欧美三级午夜理伦三级中视频| 国产农村妇女精品| 美女视频网站黄色亚洲| 色88888久久久久久影院按摩| 精品欧美久久久| 亚洲综合视频网| 成人国产精品免费观看动漫| 欧美日韩国产综合一区二区三区 | 亚洲综合视频在线观看| 极品少妇xxxx偷拍精品少妇| 欧美最新大片在线看| 国产欧美日韩亚州综合| 精品在线播放免费| 日韩一区二区影院| 婷婷国产在线综合| 欧美色男人天堂| 国产精品灌醉下药二区| 国产精品一区在线| 久久夜色精品一区| 久久se这里有精品| 日韩欧美中文字幕公布| 免费成人在线观看视频| 欧美精品乱码久久久久久| 亚洲综合一二三区| 欧美日韩综合在线免费观看| 亚洲男人的天堂在线aⅴ视频| 丰满白嫩尤物一区二区| 26uuuu精品一区二区| 久久99九九99精品| 久久精品视频一区二区| 国产乱对白刺激视频不卡| 欧美一区永久视频免费观看| 亚洲18影院在线观看| 在线这里只有精品| 午夜精品福利一区二区蜜股av | 日韩中文字幕一区二区三区| 欧美日韩国产在线观看| 日韩中文字幕亚洲一区二区va在线| 欧美日本在线观看| 丝袜亚洲另类欧美| 日韩美女主播在线视频一区二区三区| 麻豆成人综合网| 久久网站最新地址| 97久久久精品综合88久久| 日韩美女视频一区二区 | 56国语精品自产拍在线观看| 日本最新不卡在线| 亚洲精品在线观| 亚洲精品一卡二卡| 亚洲国产激情av| 国产suv一区二区三区88区| 国产精品久久久久桃色tv| 亚洲欧美另类久久久精品| xvideos.蜜桃一区二区| av不卡免费在线观看| 大胆亚洲人体视频| 亚洲国产成人一区二区三区| aaa亚洲精品一二三区| 亚洲午夜电影在线| 久久久久久电影| 色狠狠色狠狠综合| 另类的小说在线视频另类成人小视频在线 | jlzzjlzz欧美大全| 亚洲成人手机在线| 久久日韩粉嫩一区二区三区| 97se亚洲国产综合自在线观| 日韩国产欧美一区二区三区| 国产亚洲欧美中文| 欧美精品电影在线播放| 国产精品影视在线观看| 图片区小说区国产精品视频| 国产婷婷一区二区| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲视频一区在线| 精品国产百合女同互慰| 欧美性猛交一区二区三区精品| 国产精品一区专区| 日本伊人色综合网| 亚洲色图视频网| 2024国产精品| 欧美猛男男办公室激情| 成人激情图片网| 国产一区二区三区精品欧美日韩一区二区三区 | 成人av网站在线观看免费| 亚洲成人自拍偷拍| 中文字幕一区二区三区蜜月| 亚洲精品在线三区| 欧美情侣在线播放| 欧美无人高清视频在线观看| 不卡av在线免费观看| 国产69精品一区二区亚洲孕妇| 日韩福利电影在线观看| 亚洲福利一区二区三区| 亚洲精品午夜久久久| 国产精品区一区二区三区| 久久网站最新地址| 久久亚洲一级片| 欧美精品一区二区三区在线 | 国产精品第一页第二页第三页| 久久一二三国产| 欧美videofree性高清杂交| 日韩西西人体444www| 欧美精品日日鲁夜夜添| 5月丁香婷婷综合| 666欧美在线视频| 日韩一区二区免费电影| 91精品国产色综合久久不卡电影 | 亚洲美女免费视频| 亚洲欧洲一区二区在线播放| 国产精品久久久久久久久果冻传媒 | 秋霞电影一区二区| 美女在线观看视频一区二区| 免费在线一区观看| 蜜桃av一区二区三区| 久久久不卡网国产精品二区| 久久久久国产精品厨房| 国产亚洲精久久久久久| 中文子幕无线码一区tr| 国产精品国产三级国产普通话三级| 国产精品欧美一区二区三区| 亚洲同性gay激情无套| 亚洲乱码中文字幕综合| 亚洲aⅴ怡春院| 国产精一区二区三区| 成人av影视在线观看| 欧美亚洲愉拍一区二区| 日韩亚洲欧美高清| 国产精品国产三级国产普通话蜜臀 | 综合久久综合久久| 亚洲午夜久久久久| 麻豆精品视频在线| 成人精品视频网站| 欧美日韩一区不卡| 欧美mv日韩mv| 亚洲精品视频免费观看| 日本亚洲三级在线| 成人免费视频免费观看| 99久久综合国产精品| 欧美日本乱大交xxxxx| 久久人人爽爽爽人久久久| 亚洲精品日韩一| 久久99精品一区二区三区| 99国产精品久久久久久久久久| 欧美日韩精品一区二区三区| 久久婷婷色综合| 视频一区二区三区入口| 国产a级毛片一区| 777午夜精品视频在线播放| 国产农村妇女毛片精品久久麻豆| 亚洲高清中文字幕| 国产成人综合网| 91精品国产手机| 亚洲影视在线播放|