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

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

?? util.c

?? tiny編譯器++
?? C
字號:
/****************************************************/
/* File: util.c                                     */
/* Utility function implementation                  */
/* for the TINY compiler                            */
/* Compiler Construction: Principles and Practice   */
/* Kenneth C. Louden                                */
/****************************************************/

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

/* Procedure printToken prints a token
 * and its lexeme to the listing file
 */
void printToken(TokenType token, const char* tokenString)
{
	switch (token)
	{
	case IF:
	case THEN:
	case ELSE:
	case END:
	case REPEAT:
	case UNTIL:
	case READ:
	case WRITE:
	case WHILE:
	case DO:
	case OR:
	case AND:
	case NOT:
	case COMMA:
	case TINYTRUE:
	case TINYFALSE:
	case INT:
	case BOOL:
	case STRING:
		fprintf(listing, "reserved word: %s\n", tokenString);
		break;
	case ASSIGN:
		fprintf(listing, ":=\n");
		break;
	case LT:
		fprintf(listing, "<\n");
		break;
	case EQ:
		fprintf(listing, "=\n");
		break;
	case LPAREN:
		fprintf(listing, "(\n");
		break;
	case RPAREN:
		fprintf(listing, ")\n");
		break;
	case SEMI:
		fprintf(listing, ";\n");
		break;
	case PLUS:
		fprintf(listing, "+\n");
		break;
	case MINUS:
		fprintf(listing, "-\n");
		break;
	case TIMES:
		fprintf(listing, "*\n");
		break;
	case OVER:
		fprintf(listing, "/\n");
		break;
	case ENDFILE:
		fprintf(listing, "EOF\n");
		break;
	case NUM:
		fprintf(listing, "NUM, val= %s\n", tokenString);
		break;
		/* new add code */
	case STR:
		fprintf(listing, "STR, str= %s\n", tokenString);
		break;
		/* end add */
	case ID:
		fprintf(listing, "ID, name= %s\n", tokenString);
		break;
	case ERROR:
		fprintf(listing, "ERROR: %s\n", tokenString);
		break;
	default: /* should never happen */
		fprintf(listing, "Unknown token: %d\n", token);
	}
}

/* Function newProgNode creates a new declaration
* node for syntax tree construction
*/
TreeNode * newProgNode(void)
{
	TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode));
	int i;
	if (t == NULL)
		fprintf(listing, "Out of memory error at line %d\n", lineno);
	else
	{
		for (i = 0; i < MAXCHILDREN; i++)
			t->child[i] = NULL;
		t->sibling = NULL;
		t->nodekind = ProgK;
		t->lineno = lineno;
	}
	return t;
}

/* Function newDeclNode creates a new declaration
* node for syntax tree construction
*/
TreeNode * newDeclNode(DeclKind kind)
{
	TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode));
	int i;
	if (t == NULL)
		fprintf(listing, "Out of memory error at line %d\n", lineno);
	else
	{
		for (i = 0; i < MAXCHILDREN; i++)
			t->child[i] = NULL;
		t->sibling = NULL;
		t->nodekind = DeclK;
		t->kind.decl = kind;
		t->lineno = lineno;
	}
	return t;
}

/* Function newStmtNode creates a new statement
 * node for syntax tree construction
 */
TreeNode * newStmtNode(StmtKind kind)
{
	TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode));
	int i;
	if (t == NULL)
		fprintf(listing, "Out of memory error at line %d\n", lineno);
	else
	{
		for (i = 0; i < MAXCHILDREN; i++)
			t->child[i] = NULL;
		t->sibling = NULL;
		t->nodekind = StmtK;
		t->kind.stmt = kind;
		t->lineno = lineno;
	}
	return t;
}

/* Function newExpNode creates a new expression
 * node for syntax tree construction
 */
TreeNode * newExpNode(ExpKind kind)
{
	TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode));
	int i;
	if (t == NULL)
		fprintf(listing, "Out of memory error at line %d\n", lineno);
	else
	{
		for (i = 0; i < MAXCHILDREN; i++)
			t->child[i] = NULL;
		t->sibling = NULL;
		t->nodekind = ExpK;
		t->kind.exp = kind;
		t->lineno = lineno;
		t->type = Void;
	}
	return t;
}

/* Function copyString allocates and makes a new
 * copy of an existing string
 */
char * copyString(char * s)
{
	int n;
	char * t;
	if (s == NULL)
		return NULL;
	n = strlen(s) + 1;
	t = malloc(n);
	if (t == NULL)
		fprintf(listing, "Out of memory error at line %d\n", lineno);
	else
		strcpy(t, s);
	return t;
}

/* Variable indentno is used by printTree to
 * store current number of spaces to indent
 */
static indentno = 0;

/* macros to increase/decrease indentation */
#define INDENT indentno+=2
#define UNINDENT indentno-=2

/* printSpaces indents by printing spaces */
static void printSpaces(void)
{
	int i;
	for (i = 0; i < indentno; i++)
		fprintf(listing, " ");
}

/* procedure printTree prints a syntax tree to the
 * listing file using indentation to indicate subtrees
 */
void printTree(TreeNode * tree)
{
	int i;
	INDENT;
	while (tree != NULL)
	{
		printSpaces();
		if (tree->nodekind == StmtK)
		{
			switch (tree->kind.stmt)
			{
			case IfK:
				fprintf(listing, "If\n");
				break;
			case RepeatK:
				fprintf(listing, "Repeat\n");
				break;
			case AssignK:
				fprintf(listing, "Assign to: %s\n", tree->attr.name);
				break;
			case ReadK:
				fprintf(listing, "Read: %s\n", tree->attr.name);
				break;
			case WriteK:
				fprintf(listing, "Write\n");
				break;
			default:
				fprintf(listing, "Unknown ExpNode kind\n");
				break;
			}
		}
		else if (tree->nodekind == ExpK)
		{
			switch (tree->kind.exp)
			{
			case OpK:
				fprintf(listing, "Op: ");
				printToken(tree->attr.op, "\0");
				break;
			case ConstK:
				fprintf(listing, "Const: %d\n", tree->attr.val);
				break;
			case IdK:
				fprintf(listing, "Id: %s\n", tree->attr.name);
				break;
			default:
				fprintf(listing, "Unknown ExpNode kind\n");
				break;
			}
		}
		else
			fprintf(listing, "Unknown node kind\n");
		for (i = 0; i < MAXCHILDREN; i++)
			printTree(tree->child[i]);
		tree = tree->sibling;
	}
	UNINDENT;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青娱乐精品在线视频| 久久国产精品99久久久久久老狼| 国产成人在线视频免费播放| 久久精品亚洲麻豆av一区二区 | 成人激情图片网| 成人欧美一区二区三区1314| 色婷婷综合久久久久中文 | 欧美日韩小视频| 蜜臀久久99精品久久久久宅男 | www.在线欧美| 亚洲美女一区二区三区| 欧美日韩另类国产亚洲欧美一级| 免费人成在线不卡| 国产清纯白嫩初高生在线观看91| av电影一区二区| 亚洲成国产人片在线观看| 日韩免费视频一区| 成人免费高清在线| 秋霞国产午夜精品免费视频| 中文字幕国产精品一区二区| 91国在线观看| 国产综合久久久久影院| 亚洲欧美另类图片小说| 91精品在线免费| 国产成人8x视频一区二区| 尤物av一区二区| 久久久久久久久久久久久久久99| 色先锋aa成人| 激情综合网av| 亚洲在线免费播放| 久久网站热最新地址| 欧美色倩网站大全免费| 国产白丝精品91爽爽久久| 波多野结衣精品在线| 日韩区在线观看| 久久精品国产澳门| 欧美一区欧美二区| 自拍偷拍国产亚洲| 成人免费视频caoporn| 欧美人动与zoxxxx乱| 亚洲欧洲日韩一区二区三区| 久久99精品久久久久久国产越南| 成熟亚洲日本毛茸茸凸凹| 久久免费国产精品| 国产精品一二三| 国产精品视频看| 666欧美在线视频| 91美女片黄在线| 成人免费av资源| 国产伦精品一区二区三区视频青涩 | 国产揄拍国内精品对白| 精品噜噜噜噜久久久久久久久试看| 国产一区久久久| 亚洲人成网站在线| 看电视剧不卡顿的网站| 亚洲丝袜制服诱惑| 91亚洲精品一区二区乱码| 免费观看日韩电影| 亚洲成人你懂的| 一区二区三区av电影| 亚洲国产精品国自产拍av| 欧美xxxxx牲另类人与| 欧美日韩www| 欧美色视频在线观看| 在线视频你懂得一区二区三区| 国产成人久久精品77777最新版本| 欧美a一区二区| 三级在线观看一区二区| 亚洲国产一区二区三区青草影视| 中文子幕无线码一区tr| 国产三级精品在线| 久久亚洲影视婷婷| 久久影院午夜论| 久久蜜桃一区二区| 久久综合狠狠综合久久激情| 26uuu亚洲婷婷狠狠天堂| 精品人在线二区三区| 日韩欧美三级在线| 精品国产91久久久久久久妲己| 欧美大黄免费观看| 久久色在线观看| 国产欧美一区视频| 一卡二卡欧美日韩| 国产亚洲精品福利| 亚洲精品日韩一| 国产日韩欧美在线一区| 欧美一区二区三区系列电影| 99r国产精品| 国产成人午夜视频| 狠狠狠色丁香婷婷综合久久五月| 亚洲日本青草视频在线怡红院| 欧美视频精品在线观看| 高清不卡一区二区在线| 国产91精品免费| 久久久精品国产免大香伊| 久久精品欧美一区二区三区不卡| 国产午夜亚洲精品理论片色戒 | 激情另类小说区图片区视频区| 久久精品国产99国产| 国产一区二区伦理片| 成人美女视频在线观看| 91精品1区2区| 欧美大片一区二区三区| 中文字幕成人av| 亚洲精品成人天堂一二三| 三级欧美韩日大片在线看| 精彩视频一区二区三区| 白白色 亚洲乱淫| 欧美日韩免费视频| www国产精品av| 亚洲欧美电影院| 麻豆传媒一区二区三区| 高清在线不卡av| 欧美在线你懂得| 精品入口麻豆88视频| 国产精品初高中害羞小美女文| 亚洲一区在线视频| 国产精品123| 欧美日韩国产成人在线91| 久久精品在线免费观看| 亚洲九九爱视频| 精品一区二区免费在线观看| 91在线视频免费观看| 91精品国产综合久久久蜜臀图片| 久久久久国产成人精品亚洲午夜| 亚洲综合免费观看高清完整版在线| 久久国产剧场电影| 91女神在线视频| 欧美精品一区男女天堂| 亚洲精品成人天堂一二三| 国产精品一区二区不卡| 欧美日韩中文另类| 国产精品不卡一区二区三区| 免费高清成人在线| 欧美视频完全免费看| 中文字幕二三区不卡| 日韩中文字幕亚洲一区二区va在线 | 中文字幕欧美激情一区| 日韩精品三区四区| 99re成人精品视频| 久久综合九色综合欧美就去吻| 91精品国产一区二区三区| 国产午夜精品久久| 国产一区二区不卡老阿姨| 欧美日韩在线播放三区| 亚洲欧美日韩系列| www.激情成人| 中文字幕一区二区三区在线不卡| 久久99这里只有精品| 欧美另类z0zxhd电影| 亚洲国产一区在线观看| 色欧美日韩亚洲| 成人丝袜18视频在线观看| 不卡一二三区首页| 日韩一区二区高清| 亚洲国产欧美另类丝袜| 97精品久久久午夜一区二区三区| 欧美精品一区二区三区一线天视频 | 国产精品国产三级国产普通话蜜臀 | 日本电影欧美片| 亚洲色图.com| av一区二区三区四区| 国产亚洲综合在线| 国产成人啪午夜精品网站男同| 欧美精品一区二区高清在线观看| 肉色丝袜一区二区| 51精品视频一区二区三区| 天堂一区二区在线| 欧美一区在线视频| 日韩精品一二三四| 欧美精品高清视频| 日本伊人色综合网| 欧美一级专区免费大片| 开心九九激情九九欧美日韩精美视频电影| 欧美日韩的一区二区| 日韩av在线播放中文字幕| 日韩三级av在线播放| 狠狠色丁香婷婷综合| 亚洲国产精品av| www.日韩大片| 亚洲激情综合网| 91麻豆精品国产自产在线| 看电视剧不卡顿的网站| 国产亚洲短视频| 91丨porny丨户外露出| 亚洲欧美国产高清| 欧美天堂一区二区三区| 日韩av高清在线观看| 久久嫩草精品久久久精品一| 成人三级伦理片| 洋洋成人永久网站入口| 在线不卡欧美精品一区二区三区| 亚洲aⅴ怡春院| 久久这里都是精品| 色综合色综合色综合色综合色综合| 亚洲愉拍自拍另类高清精品| 日韩精品一区二区三区视频| 国产成人精品综合在线观看| 亚洲资源中文字幕| 久久综合九色综合97婷婷|