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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? scan.c

?? tiny編譯器++
?? C
字號(hào):
/****************************************************/
/* File: scan.c                                     */
/* The scanner implementation for the TINY compiler */
/* Compiler Construction: Principles and Practice   */
/* Kenneth C. Louden                                */
/****************************************************/

#include "globals.h"
#include "util.h"
#include "scan.h"

/* states in scanner DFA */
typedef enum
{
	START, INASSIGN, SQM,/* new add state */INCOMMENT, INNUM, INID, DONE
} StateType;

/* lexeme of identifier or reserved word */
char tokenString[MAXTOKENLEN + 1];

/* BUFLEN = length of the input buffer for
 source code lines */
#define BUFLEN 256

static char lineBuf[BUFLEN]; /* holds the current line */
static int linepos = 0; /* current position in LineBuf */
static int bufsize = 0; /* current size of buffer string */
static int EOF_flag = FALSE; /* corrects ungetNextChar behavior on EOF */

/* getNextChar fetches the next non-blank character
 from lineBuf, reading in a new line if lineBuf is
 exhausted */
static int getNextChar(void)
{
	if (!(linepos < bufsize))
	{
		lineno++;
		if (fgets(lineBuf, BUFLEN - 1, source))
		{
			bufsize = strlen(lineBuf);
			if (EchoSource)
			{
				/* new add code */
				if (10 == lineBuf[bufsize - 1])
				{
					fprintf(listing, "%4d: %s", lineno, lineBuf);
				}
				else
				{
					fprintf(listing, "%4d: %s\n", lineno, lineBuf);
				}
				/* end add */
			}
			linepos = 0;
			return lineBuf[linepos++];
		}
		else
		{
			EOF_flag = TRUE;
			return EOF;
		}
	}
	else
		return lineBuf[linepos++];
}

/* ungetNextChar backtracks one character
 in lineBuf */
static void ungetNextChar(void)
{
	if (!EOF_flag)
		linepos--;
}

/* ungetNextToken backtracks one token
 in lineBuf */
void ungetNextToken(void)
{
	if (!EOF_flag)
	{
		linepos -= strlen(tokenString);
	}
}

/* lookup table of reserved words */
static struct
{
	char* str;
	TokenType tok;
} reservedWords[MAXRESERVED] =
{
{ "if", IF },
{ "then", THEN },
{ "else", ELSE },
{ "end", END },
{ "repeat", REPEAT },
{ "until", UNTIL },
{ "read", READ },
{ "write", WRITE },
{ "true", TINYTRUE },
{ "false", TINYFALSE },
{ "or", OR },
{ "and", AND },
{ "not", NOT },
{ "int", INT },
{ "bool", BOOL },
{ "string", STRING },
{ "while", WHILE },
{ "do", DO } };

/* lookup an identifier to see if it is a reserved word */
/* uses linear search */
static TokenType reservedLookup(char * s)
{
	int i;
	for (i = 0; i < MAXRESERVED; i++)
		if (!strcmp(s, reservedWords[i].str))
			return reservedWords[i].tok;
	return ID;
}

/****************************************/
/* the primary function of the scanner  */
/****************************************/
/* function getToken returns the
 * next token in source file
 */
TokenType getToken(void)
{ /* index for storing into tokenString */
	int tokenStringIndex = 0;
	/* holds current token to be returned */
	TokenType currentToken;
	/* current state - always begins at START */
	StateType state = START;
	/* flag to indicate save to tokenString */
	int save;
	while (state != DONE)
	{
		int c = getNextChar();
		save = TRUE;
		switch (state)
		{
		case START:
			if (isdigit(c))
				state = INNUM;
			else if (isalpha(c))
				state = INID;
			else if (c == ':')
				state = INASSIGN;
			else if ((c == ' ') || (c == '\t') || (c == '\n'))
				save = FALSE;
			/* new add code */
			else if (c == '\'')
			{
				save = FALSE;
				state = SQM;
			}
			/* end add */
			else if (c == '{')
			{
				save = FALSE;
				state = INCOMMENT;
			}
			else
			{
				state = DONE;
				switch (c)
				{
				case EOF:
					save = FALSE;
					currentToken = ENDFILE;
					break;
				case '=':
					currentToken = EQ;
					break;
				case '<':
					currentToken = LT;
					break;
				case '+':
					currentToken = PLUS;
					break;
				case '-':
					currentToken = MINUS;
					break;
				case '*':
					currentToken = TIMES;
					break;
				case '/':
					currentToken = OVER;
					break;
				case '(':
					currentToken = LPAREN;
					break;
				case ')':
					currentToken = RPAREN;
					break;
					/* new add code */
				case ',':
					currentToken = COMMA;
					break;
					/* end add */
				case ';':
					currentToken = SEMI;
					break;
				default:
					currentToken = ERROR;
					break;
				}
			}
			break;
			/* new add code*/
		case SQM:
			save = TRUE;
			if (c == '\n' || c == EOF)
			{
				state = DONE;
				currentToken = ERROR;
			}
			else if (c == '\'')
			{
				save = FALSE;
				state = DONE;
				currentToken = STR;
			}
			break;
			/* end add */
		case INCOMMENT:
			save = FALSE;
			if (c == EOF)
			{
				state = DONE;
				/* modify */
				currentToken = ERROR;
			}
			else if (c == '}')
				state = START;
			break;
		case INASSIGN:
			state = DONE;
			if (c == '=')
				currentToken = ASSIGN;
			else
			{ /* backup in the input */
				ungetNextChar();
				save = FALSE;
				currentToken = ERROR;
			}
			break;
		case INNUM:
			if (!isdigit(c))
			{ /* backup in the input */
				ungetNextChar();
				save = FALSE;
				state = DONE;
				currentToken = NUM;
			}
			break;
		case INID:
			if (!isalpha(c))
			{ /* backup in the input */
				ungetNextChar();
				save = FALSE;
				state = DONE;
				currentToken = ID;
			}
			break;
		case DONE:
		default: /* should never happen */
			fprintf(listing, "Scanner Bug: state= %d\n", state);
			state = DONE;
			currentToken = ERROR;
			break;
		}
		if ((save) && (tokenStringIndex <= MAXTOKENLEN))
			tokenString[tokenStringIndex++] = (char) c;
		if (state == DONE)
		{
			tokenString[tokenStringIndex] = '\0';
			if (currentToken == ID)
				currentToken = reservedLookup(tokenString);
		}
	}
	if (TraceScan)
	{
		fprintf(listing, "\t%d: ", lineno);
		printToken(currentToken, tokenString);
	}
	return currentToken;
} /* end getToken */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精选视频免费看| 亚洲一区二区影院| 在线免费不卡电影| 精品一区二区三区在线播放| 中文字幕中文乱码欧美一区二区| 欧美日韩国产一区| 不卡电影一区二区三区| 久久精品国产99国产精品| 一区二区三区日韩欧美精品| 久久日韩精品一区二区五区| 精品视频在线免费| www.亚洲色图.com| 国产高清精品久久久久| 日韩影视精彩在线| 亚洲午夜日本在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 日韩一区二区电影网| 在线观看三级视频欧美| 99视频一区二区三区| 国产黄色精品视频| 狠狠网亚洲精品| 免费在线视频一区| 婷婷中文字幕综合| 亚洲成人你懂的| 亚洲一区精品在线| 亚洲激情在线播放| 一区二区在线观看av| 国产精品国产自产拍高清av王其 | 91精品麻豆日日躁夜夜躁| av电影在线观看一区| 国产91富婆露脸刺激对白| 国产九色sp调教91| 久久99精品国产麻豆婷婷洗澡| 亚洲高清免费观看高清完整版在线观看| 中文字幕成人在线观看| 中文字幕不卡三区| 中文字幕不卡的av| 日本一区二区成人| 国产精品天美传媒沈樵| 国产精品视频免费| 国产精品久久久久永久免费观看 | 99re这里只有精品首页| 成人一区二区在线观看| 成人激情图片网| 成人app下载| 色综合色狠狠综合色| 在线观看国产精品网站| 欧美午夜电影在线播放| 欧美日韩一卡二卡| 欧美一卡在线观看| www精品美女久久久tv| 久久日一线二线三线suv| 国产精品伦理在线| 亚洲色图视频网| 亚洲一卡二卡三卡四卡| 日本aⅴ亚洲精品中文乱码| 久久精品国内一区二区三区| 国产一区二区网址| 99久久精品国产精品久久| 色婷婷精品久久二区二区蜜臂av| 欧美日韩美女一区二区| 日韩欧美亚洲国产另类| 国产欧美一区二区精品性| 最好看的中文字幕久久| 舔着乳尖日韩一区| 精品在线一区二区三区| 成人av电影在线| 日本久久一区二区| 欧美一区二区视频在线观看2020| 精品久久人人做人人爽| 国产精品美女久久久久久| 亚洲精品伦理在线| 男人操女人的视频在线观看欧美| 国产麻豆精品在线观看| 色噜噜夜夜夜综合网| 日韩午夜激情电影| 国产精品狼人久久影院观看方式| 一二三区精品视频| 黄一区二区三区| 91在线一区二区| 欧美xxxxxxxxx| 樱花影视一区二区| 精品一二三四在线| 在线一区二区三区四区五区| 精品国产三级电影在线观看| 亚洲日本在线a| 麻豆91在线看| 一本一道久久a久久精品综合蜜臀| 欧美高清性hdvideosex| 国产精品美日韩| 裸体歌舞表演一区二区| 欧美亚洲综合网| 国产婷婷色一区二区三区四区| 亚洲一二三区在线观看| 国产成人精品三级麻豆| 91精品国产综合久久久久久| ...av二区三区久久精品| 男男视频亚洲欧美| 欧美性做爰猛烈叫床潮| 中文字幕一区视频| 久久国产夜色精品鲁鲁99| 91国模大尺度私拍在线视频| 国产丝袜美腿一区二区三区| 蜜桃精品在线观看| 欧美午夜精品一区二区三区| 国产精品乱人伦中文| 国产麻豆精品在线| 日韩欧美在线网站| 亚洲va欧美va人人爽| 91久久精品午夜一区二区| 国产精品丝袜91| 国产99久久久久| 欧美xxx久久| 美女脱光内衣内裤视频久久网站| 欧美在线视频日韩| ㊣最新国产の精品bt伙计久久| 国产精品影视天天线| 日韩欧美国产不卡| 天天综合色天天| 欧美色男人天堂| 一区二区三区四区五区视频在线观看| 粉嫩高潮美女一区二区三区| 久久众筹精品私拍模特| 麻豆一区二区三区| 日韩女优毛片在线| 日本欧美韩国一区三区| 欧美日韩国产区一| 日日噜噜夜夜狠狠视频欧美人| 日本久久一区二区| 亚洲电影视频在线| 欧美日韩在线播放三区| 亚洲第一福利一区| 欧美高清dvd| 日韩高清在线不卡| 欧美一区二区播放| 激情伊人五月天久久综合| 精品国产乱码91久久久久久网站| 久久电影网站中文字幕| 欧美精品一区二区高清在线观看| 久久99久国产精品黄毛片色诱| 精品久久久久久无| 国产一区二区在线观看免费 | 亚洲制服丝袜在线| 欧美日韩精品欧美日韩精品一综合| 亚洲在线视频网站| 69久久夜色精品国产69蝌蚪网| 男人的天堂亚洲一区| 26uuu精品一区二区在线观看| 国内精品久久久久影院一蜜桃| 欧美一二三四在线| 极品美女销魂一区二区三区免费| 久久亚洲捆绑美女| 91亚洲精品久久久蜜桃网站| 一区二区三区精密机械公司| 777色狠狠一区二区三区| 免费成人性网站| 国产蜜臀av在线一区二区三区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲成人你懂的| 久久影院午夜片一区| 成人av小说网| 亚洲成人免费观看| 欧美第一区第二区| 成人成人成人在线视频| 亚洲综合视频在线观看| 日韩亚洲欧美成人一区| 国产福利一区二区三区视频| 一区二区三区在线播放| 日韩一区二区电影| 成人av在线电影| 午夜在线电影亚洲一区| 久久久久久久综合狠狠综合| 91在线观看免费视频| 秋霞影院一区二区| 国产精品水嫩水嫩| 91精品国产91久久综合桃花| 成人免费观看av| 香蕉成人伊视频在线观看| 国产视频一区在线观看| 欧美色图一区二区三区| 国产一区欧美一区| 亚洲永久免费av| 欧美国产综合一区二区| 欧美日韩一区小说| 高清shemale亚洲人妖| 偷拍亚洲欧洲综合| 亚洲国产精品精华液2区45| 欧美日韩大陆一区二区| 东方欧美亚洲色图在线| 日日噜噜夜夜狠狠视频欧美人| 国产精品国产三级国产普通话蜜臀 | 久久成人免费日本黄色| 亚洲激情成人在线| 国产人久久人人人人爽| 日韩一区二区三区电影在线观看 | 亚洲精品在线观看网站| 欧美在线观看禁18| 成人精品视频一区二区三区 | 一区二区三区欧美| 欧美激情在线观看视频免费|