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

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

?? util.cpp

?? 編譯原理學習使用的代碼 內容有從詞法分析到中間代碼生成的代碼 并且含有注釋
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
		strcpy(t->name[i],"\0");
		t->table[i] = NULL;
	}

	
  }
  /* 函數返回程序頭類型語法樹節點指針t */
  return t;
}


/********************************************************/
/* 函數名 newDecANode									*/	
/* 功  能 創建聲明語法樹節點函數,沒有指明具體的節點聲明 */
/*        類型,在語法樹的第二層			                */
/* 說  明 該函數為語法樹創建一個新的結點      	     	*/
/*        并將語法樹節點成員初始化						*/
/********************************************************/
TreeNode * newDecANode(NodeKind kind)

{
  /* 在內存中動態申請分配單元,返回指向該單元的語法樹結點類型指針t */
  TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode));

  int i;
  
  /* 語法樹節點指針t為NULL,未能成功分配內存單元 *
   * 將出錯信息及行號lineno寫入列表文件listing  */
  if (t==NULL)
  {
	  fprintf(listing,"Out of memory error at line %d\n",lineno);
	  Error = TRUE;
  }
  /* 語法樹節點指針t不是NULL,成功分配內存單元 */
  else {

	/* 初始化新語法樹節點t各子節點child[i]為NULL */
    for (i=0;i<MAXCHILDREN;i++) t->child[i] = NULL;

	/* 初始化新語法樹節點t兄弟節點sibling為NULL */
	t->sibling = NULL;

	/* 指定新語法樹節點t成員:結點類型nodekind為參數kind */
	t->nodekind = kind;
	
	/* 指定新語法樹節點t成員:源代碼行號lineno為全局變量lineno */
	t->lineno = lineno;

	for(i=0;i<10;i++) 
	{
		strcpy(t->name[i],"\0");
		t->table[i] = NULL;
	}
  }
  /* 函數返回語法樹根節點指針t */
  return t;
}



//嘗試


/********************************************************/
/* 函數名 newTypeNode									*/
/* 功  能 類型標志語法樹節點創建函數					*/
/* 說  明 該函數為語法樹創建一個新的類型標志結點,      */
/*        表示在它之下的聲明都為類型聲明,        		*/
/*        并將語法樹節點的成員初始化					*/
/********************************************************/
TreeNode * newTypeNode()

{ 
  /* 內存中動態申請分配單元,返回指向該單元的語法樹節點類型指針t */
  TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode));
  
  int i;

  /* 語法樹節點指針t為NULL,未能成功分配內存單元		*
   * 將出錯信息及行號lineno寫入列表文件listing		*/
  if (t==NULL)
    fprintf(listing,"Out of memory error at line %d\n",lineno);

  /* 語法樹節點指針t不是NULL,內存單元已經成功分配 */
  else {

	/* 初始化新語法樹節點t各子節點child[i]為NULL */
    for (i=0;i<MAXCHILDREN;i++) t->child[i] = NULL;

	/* 初始化新語法樹節點t兄弟節點sibling為NULL(空) */
   	t->sibling = NULL;

	/* 指定新語法樹節點t成員: 結點類型nodekind為表達式類型ExpK */
	t->nodekind = TypeK;


	/* 指定新語法樹節點t成員: 源代碼行號lineno為全局變量lineno */
    t->lineno = lineno;
   
	t->idnum = 0;
	/*初始化符號表地址指針*/
	for (int i=0;i<10;i++)
	   t->table[i] = NULL;

  }

  /* 函數返回表達式類型語法樹結點指針t */
  return t;
}

/********************************************************/
/* 函數名 newVarNode									*/
/* 功  能 變量聲明標志語法樹節點創建函數				*/
/* 說  明 該函數為語法樹創建一個新的變量聲明標志結點,
/*         表示在它之下的聲明都為變量聲明,           	*/
/*        并將語法樹節點的成員初始化					*/
/********************************************************/
TreeNode * newVarNode()

{ 
  /* 內存中動態申請分配單元,返回指向該單元的語法樹節點類型指針t */
  TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode));
  
  int i;

  /* 語法樹節點指針t為NULL,未能成功分配內存單元		*
   * 將出錯信息及行號lineno寫入列表文件listing		*/
  if (t==NULL)
    fprintf(listing,"Out of memory error at line %d\n",lineno);

  /* 語法樹節點指針t不是NULL,內存單元已經成功分配 */
  else {

	/* 初始化新語法樹節點t各子節點child[i]為NULL */
    for (i=0;i<MAXCHILDREN;i++) t->child[i] = NULL;

	/* 初始化新語法樹節點t兄弟節點sibling為NULL(空) */
   	t->sibling = NULL;

	/* 指定新語法樹節點t成員: 結點類型nodekind為表達式類型ExpK */
	t->nodekind = VarK;

	/* 指定新語法樹節點t成員: 源代碼行號lineno為全局變量lineno */
    t->lineno = lineno;

    t->idnum = 0;
	/*初始化符號表地址指針*/
	for (int i=0;i<10;i++)
	   t->table[i] = NULL;
  }

  /* 函數返回表達式類型語法樹結點指針t */
  return t;
}

//試試,如果行的話,就把它們合成一個!!!!






/********************************************************/
/* 函數名 newDecNode									*/	
/* 功  能 創建聲明類型語法樹節點函數					*/
/* 說  明 該函數為語法樹創建一個新的聲明類型結點		*/
/*        并將語法樹節點成員初始化						*/
/********************************************************/
TreeNode * newDecNode(void)

{
  /* 在內存中動態申請分配單元,返回指向該單元的語法樹結點類型指針t */
  TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode));

  int i;
  
  /* 語法樹節點指針t為NULL,未能成功分配內存單元 *
   * 將出錯信息及行號lineno寫入列表文件listing  */
  if (t==NULL)
  {
	  fprintf(listing,"Out of memory error at line %d\n",lineno);
	  Error = TRUE;
  }

  /* 語法樹節點指針t不是NULL,成功分配內存單元 */
  else {

	/* 初始化新語法樹節點t各子節點child[i]為NULL */
    for (i=0;i<MAXCHILDREN;i++) t->child[i] = NULL;

	/* 初始化新語法樹節點t兄弟節點sibling為NULL */
	t->sibling = NULL;
    
	/* 指定新語法樹節點t成員:結點類型nodekind為語句類型DecK*/
	t->nodekind = DecK;
    
	/* 指定新語法樹節點t成員:源代碼行號lineno為全局變量lineno */
	t->lineno = lineno;
    
	t->idnum=0;

	for(i=0;i<10;i++) 
	{
		strcpy(t->name[i],"\0");
		t->table[i] = NULL;
	}

  }
  /* 函數返回聲明類型語法樹節點指針t */
  return t;
}


/********************************************************/
/* 函數名 newProcNode									*/	
/* 功  能 創建函數類型語法樹節點函數					*/
/* 說  明 該函數為語法樹創建一個新的函數類型結點		*/
/*        并將語法樹節點成員初始化						*/
/********************************************************/
TreeNode * newProcNode(void)

{
  /* 在內存中動態申請分配單元,返回指向該單元的語法樹結點類型指針t */
  TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode));

  int i;
  
  /* 語法樹節點指針t為NULL,未能成功分配內存單元 *
   * 將出錯信息及行號lineno寫入列表文件listing  */
  if (t==NULL)
  {
	  fprintf(listing,"Out of memory error at line %d\n",lineno);
      Error = TRUE;
  }
  /* 語法樹節點指針t不是NULL,成功分配內存單元 */
  else {

	/* 初始化新語法樹節點t各子節點child[i]為NULL */
    for (i=0;i<MAXCHILDREN;i++) t->child[i] = NULL;

	/* 初始化新語法樹節點t兄弟節點sibling為NULL */
	t->sibling = NULL;
    
	/* 指定新語法樹節點t成員:結點類型nodekind為語句類型ProcDecK */
	t->nodekind = ProcDecK;

    
	/* 指定新語法樹節點t成員:源代碼行號lineno為全局變量lineno */
	t->lineno = lineno;

    t->idnum = 0;

	for(i=0;i<10;i++) 
	{
		strcpy(t->name[i],"\0");
		t->table[i] = NULL;
	}

  }
  /* 函數返回語句類型語法樹節點指針t */
  return t;
}

/********************************************************/
/* 函數名 newStmlNode									*/	
/* 功  能 創建語句標志類型語法樹節點函數				*/
/* 說  明 該函數為語法樹創建一個新的語句標志類型結點	*/
/*        并將語法樹節點成員初始化						*/
/********************************************************/
TreeNode * newStmlNode(void)

{
  /* 在內存中動態申請分配單元,返回指向該單元的語法樹結點類型指針t */
  TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode));

  int i;
  
  /* 語法樹節點指針t為NULL,未能成功分配內存單元 *
   * 將出錯信息及行號lineno寫入列表文件listing  */
  if (t==NULL)
  {
	  fprintf(listing,"Out of memory error at line %d\n",lineno);
	  Error = TRUE;
  }
  /* 語法樹節點指針t不是NULL,成功分配內存單元 */
  else {

	/* 初始化新語法樹節點t各子節點child[i]為NULL */
    for (i=0;i<MAXCHILDREN;i++) t->child[i] = NULL;

	/* 初始化新語法樹節點t兄弟節點sibling為NULL */
	t->sibling = NULL;
    
	/* 指定新語法樹節點t成員:結點類型nodekind為語句類型StmLK */
	t->nodekind = StmLK;

    /* 指定新語法樹節點t成員:源代碼行號lineno為全局變量lineno */
	t->lineno = lineno;

    t->idnum = 0;

	for(i=0;i<10;i++) 
	{
		strcpy(t->name[i],"\0");
		t->table[i] = NULL;
	}

  }
   /*函數返回語句類型語法樹節點指針t*/ 
  return t;
}

/********************************************************/
/* 函數名 newStmtNode									*/	
/* 功  能 創建語句類型語法樹節點函數					*/
/* 說  明 該函數為語法樹創建一個新的語句類型結點		*/
/*        并將語法樹節點成員初始化						*/
/********************************************************/
TreeNode * newStmtNode(StmtKind kind)

{
  /* 在內存中動態申請分配單元,返回指向該單元的語法樹結點類型指針t */
  TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode));

  int i;
  
  /* 語法樹節點指針t為NULL,未能成功分配內存單元 *
   * 將出錯信息及行號lineno寫入列表文件listing  */
  if (t==NULL)
  {
	  fprintf(listing,"Out of memory error at line %d\n",lineno);
	  Error = TRUE;
  }
  /* 語法樹節點指針t不是NULL,成功分配內存單元 */
  else {

	/* 初始化新語法樹節點t各子節點child[i]為NULL */
    for (i=0;i<MAXCHILDREN;i++) t->child[i] = NULL;

	/* 初始化新語法樹節點t兄弟節點sibling為NULL */
	t->sibling = NULL;
    
	/* 指定新語法樹節點t成員:結點類型nodekind為語句類型StmtK */
	t->nodekind = StmtK;

	/* 指定新語法樹節點t成員:語句類型kind.stmt為函數給定參數kind */
    t->kind.stmt = kind;
    
	/* 指定新語法樹節點t成員:源代碼行號lineno為全局變量lineno */
	t->lineno = lineno;

	t->idnum = 0;

	for(i=0;i<10;i++) 
	{
		strcpy(t->name[i],"\0");
		t->table[i] = NULL;
	}
  }
  /* 函數返回語句類型語法樹節點指針t */
  return t;
}


/********************************************************/
/* 函數名 newExpNode									*/
/* 功  能 表達式類型語法樹節點創建函數					*/
/* 說  明 該函數為語法樹創建一個新的表達式類型結點		*/
/*        并將語法樹節點的成員初始化					*/
/********************************************************/
TreeNode * newExpNode(ExpKind kind)

{ 
  /* 內存中動態申請分配單元,返回指向該單元的語法樹節點類型指針t */
  TreeNode * t = (TreeNode *) malloc(sizeof(TreeNode));
  
  int i;

  /* 語法樹節點指針t為NULL,未能成功分配內存單元		*
   * 將出錯信息及行號lineno寫入列表文件listing		*/
  if (t==NULL)
  {
	  fprintf(listing,"Out of memory error at line %d\n",lineno);
	  Error = TRUE;
  }
  /* 語法樹節點指針t不是NULL,內存單元已經成功分配 */
  else {

	/* 初始化新語法樹節點t各子節點child[i]為NULL */
    for (i=0;i<MAXCHILDREN;i++) t->child[i] = NULL;

	/* 初始化新語法樹節點t兄弟節點sibling為NULL(空) */
   	t->sibling = NULL;

	/* 指定新語法樹節點t成員: 結點類型nodekind為表達式類型ExpK */
	t->nodekind = ExpK;

	/* 指定新語法樹節點t成員: 表達式類型kind.exp為函數給定參數kind */
  	t->kind.exp = kind;

	/* 指定新語法樹節點t成員: 源代碼行號lineno為全局變量lineno */
    t->lineno = lineno;

	/* 指定新語法樹節點t成員: 表達式為變量類型時的變量類型varkind *
	/* 為IdV.*/
	t->attr.ExpAttr.varkind = IdV;

	/* 指定新語法樹節點t成員: 類型檢查類型type為Void */
 	t->attr.ExpAttr.type = Void;

    for(i=0;i<10;i++) 
	{
		strcpy(t->name[i],"\0");
		t->table[i] = NULL;
	}
  }

  /* 函數返回表達式類型語法樹結點指針t */
  return t;
}


/* 靜態變量indentno在函數printTree中	*
 * 用于存儲當前子樹縮進格數,初始為0		*/
static indentno = 0;

/** 增量/減量縮進宏定義 **/
#define INDENT indentno+=4
#define UNINDENT indentno-=4


/********************************************************/
/* 函數名 printSpaces									*/
/* 功  能 空格打印函數									*/
/* 說  明 該函數打印指定數量空格,用于表示子樹縮進		*/
/********************************************************/
static void printSpaces(void)

{ int i;

  /* 按給定縮進量indentno打印空格進行縮進	*
   * 其中縮進量indentno總能保持非負			*/
  for (i=0;i<indentno;i++)	
      fprintf(listing," ");	

}

/******************************************************/
/* 函數名 printTree                                   */
/* 功  能 把語法樹輸出,顯示在listing文件中           */
/* 說  明 該函數運用了宏來定義增量減量的縮進          */
/******************************************************/
void  printTree(TreeNode  *tree)
{  int i;

  /* 增量縮進宏,每次進入語法樹節點都進行增量縮進 */
  INDENT;							

  /* 函數參數給定語法樹節點指針tree非NULL(空) */
  while (tree != NULL)
 {		
	/*打印行號*/
	if(tree->lineno==0)
		printTab(9);
	else
	    switch((int)(tree->lineno / 10))
		{
			case 0:
				fprintf(listing,"line:%d",tree->lineno);
				printTab(3);
				break;
			case 1:
			case 2:
			case 3:
			case 4:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区精品网| 国产高清成人在线| 天涯成人国产亚洲精品一区av| 爽好多水快深点欧美视频| 国产美女视频一区| 欧美激情一区二区三区全黄 | 综合久久综合久久| 亚洲一区精品在线| 懂色av噜噜一区二区三区av| 欧美一区二区在线不卡| 综合分类小说区另类春色亚洲小说欧美| 亚洲一区二区美女| 91精品国产色综合久久不卡电影| 国产精品久久久一本精品| 美女尤物国产一区| 国产欧美视频一区二区三区| 99久久伊人精品| 日韩精品免费专区| 欧美这里有精品| 免费观看30秒视频久久| 欧美日韩不卡在线| 韩国中文字幕2020精品| 自拍偷拍亚洲综合| 9191久久久久久久久久久| 精品亚洲国产成人av制服丝袜| 日本道在线观看一区二区| 麻豆传媒一区二区三区| 国产精品亲子乱子伦xxxx裸| 麻豆精品新av中文字幕| 欧美伦理视频网站| 国产一区二区按摩在线观看| 亚洲天天做日日做天天谢日日欢| 成人免费av网站| 日韩国产欧美视频| 欧美午夜精品久久久久久超碰| 亚洲色图一区二区三区| 日韩精品中文字幕一区二区三区| 天堂精品中文字幕在线| 在线免费亚洲电影| 国产成人精品影院| 视频一区在线视频| 亚洲人精品一区| 午夜久久电影网| 国产精品网站在线观看| caoporm超碰国产精品| 国产精品国产三级国产有无不卡| 成人国产在线观看| 久久不见久久见免费视频1| 亚洲人成电影网站色mp4| 久久夜色精品国产欧美乱极品| 天堂影院一区二区| 亚洲欧美日韩久久| 国产日韩欧美a| 日韩精品在线网站| 欧美日韩在线播| 亚洲国产婷婷综合在线精品| 国产精品久久久久一区二区三区| 国产suv精品一区二区883| 麻豆一区二区99久久久久| 午夜视频一区在线观看| 亚洲图片你懂的| 国产精品色哟哟| 国产视频一区二区在线| 成人av电影在线观看| 亚洲精品国产成人久久av盗摄| 日本道精品一区二区三区| 成a人片国产精品| 亚洲精品菠萝久久久久久久| 国产精品美女久久福利网站| 亚洲一区二区三区中文字幕在线| 欧美亚洲一区二区三区四区| 色婷婷综合激情| 婷婷丁香激情综合| 午夜视频在线观看一区| 亚洲超碰精品一区二区| 欧美一级国产精品| 欧美日韩国产色站一区二区三区| 裸体一区二区三区| 美女网站视频久久| 久久精品久久久精品美女| 日韩激情av在线| 久久精品噜噜噜成人av农村| 久久成人av少妇免费| 中文字幕中文字幕中文字幕亚洲无线| 色吧成人激情小说| 在线视频亚洲一区| 欧美麻豆精品久久久久久| 欧美日韩一级黄| 日韩一卡二卡三卡四卡| 欧美成人精品1314www| 欧美va亚洲va香蕉在线| 精品国产网站在线观看| 色老汉一区二区三区| 欧美午夜精品免费| 日韩欧美一区二区三区在线| 亚洲在线观看免费视频| 欧美成人精品3d动漫h| 精品乱人伦小说| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美制服丝袜第一页| 51午夜精品国产| 久久夜色精品一区| 亚洲色图制服丝袜| 免费看黄色91| 成人午夜免费视频| 色av成人天堂桃色av| 欧美一区二区三区播放老司机| 99久久精品99国产精品| 欧美乱熟臀69xxxxxx| 久久影院午夜论| 樱花草国产18久久久久| 热久久一区二区| 白白色 亚洲乱淫| 555夜色666亚洲国产免| 国产欧美视频在线观看| 一区二区三区加勒比av| 国产精品亲子伦对白| 欧美精品一区二区三区久久久 | 亚洲一区二区三区四区在线观看 | 一区二区三区**美女毛片| 天堂一区二区在线免费观看| 国产91精品露脸国语对白| 欧美羞羞免费网站| 国产亚洲综合在线| 亚洲一区中文在线| 国产精品亚洲第一区在线暖暖韩国| 久久国产精品区| 日本韩国精品一区二区在线观看| thepron国产精品| 日韩欧美中文字幕公布| 亚洲免费av观看| 国产成人亚洲综合a∨猫咪| 国产乱妇无码大片在线观看| 国产一区二区三区精品视频| 91猫先生在线| 欧美在线不卡一区| 中文字幕不卡在线观看| 丝袜亚洲另类丝袜在线| 免费成人在线影院| 在线免费精品视频| 国产精品视频在线看| 麻豆高清免费国产一区| 欧美日韩不卡一区二区| 91精品中文字幕一区二区三区 | 久久综合久久99| 日韩激情视频网站| 欧美私人免费视频| 一区二区中文视频| 国产麻豆视频一区二区| 成人精品一区二区三区四区 | 国产精品麻豆久久久| 国产一区二区三区视频在线播放| 国产suv精品一区二区883| 日韩欧美综合在线| 亚洲国产高清不卡| 国产一区不卡在线| 精品黑人一区二区三区久久| 日本网站在线观看一区二区三区| 激情综合五月天| 日韩精品一区二区三区swag| 午夜成人免费视频| 欧美日本国产一区| 亚洲成人福利片| 欧美剧在线免费观看网站| 一区二区三区四区激情| 色婷婷国产精品久久包臀| 中文字幕亚洲不卡| 99精品在线免费| 亚洲人成精品久久久久久| 91色乱码一区二区三区| 国产精品全国免费观看高清| 成人h动漫精品一区二区 | 91亚洲精品久久久蜜桃网站| 国产精品久久久久影院亚瑟| www.激情成人| 捆绑紧缚一区二区三区视频 | 国产精品视频九色porn| 国产成人精品一区二区三区四区 | 日韩一区二区在线看| 久久精品国产色蜜蜜麻豆| 精品国产乱码久久久久久浪潮| 亚洲美女淫视频| 欧美亚洲国产bt| 久久精品水蜜桃av综合天堂| 一区二区三区高清在线| 91老司机福利 在线| 一本大道久久精品懂色aⅴ| 亚洲一区二区三区在线| 欧美视频一二三区| 精品久久久久久最新网址| 亚洲精品国久久99热| 久久99国产精品麻豆| 精品免费一区二区三区| 国产一区二区三区国产| 国产精品久久久久久户外露出| 日韩国产在线一| 日韩一区二区高清| 成人精品免费视频| 亚洲精品乱码久久久久久黑人| 卡一卡二国产精品|