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

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

?? analyze.c

?? C語言高級實例解析的源代碼
?? C
字號:
/****************************************************/
/* 文件: analyze.c                                  */
/* 語義分析代碼實現					                 */
/****************************************************/

#include "globals.h"
#include "symtab.h"
#include "analyze.h"

/* 變量內存位置計數器counter for variable memory locations */
static int location = 0;

/* 函數traverse是一個通用的遞歸訪問語法樹函數
 * 他通過調用preProc函數來實現前序遍歷;
 * 調用函數postProc實現后序遍歷 
 */
static void traverse( TreeNode * t,
               void (* preProc) (TreeNode *),
               void (* postProc) (TreeNode *) )
{ if (t != NULL)
  { preProc(t);
    { int i;
      for (i=0; i < MAXCHILDREN; i++)
        traverse(t->child[i],preProc,postProc);
    }
    postProc(t);
    traverse(t->sibling,preProc,postProc);
  }
}

/* 函數nullProc是一個什么都不做的函數,
 * 目的是產生單前敘或者單后序遍歷的遍歷過程
 */
static void nullProc(TreeNode * t)
{ if (t==NULL) return;
  else return;
}

/* 函數insertNode把在t(語法樹)中存儲的節點插入符號表
 */
static void insertNode( TreeNode * t)
{ switch (t->nodekind)
  { case StmtK:
      switch (t->kind.stmt)
      { case AssignK:
        case ReadK:
          if (st_lookup(t->attr.name) == -1)
          /* 沒有在符號表中找到,把這個表標識符按照的新的定義處理 */
            st_insert(t->attr.name,t->lineno,location++);
          else
          /* 已經在符號表中找到,所以忽略位置信息,插入使用這個變量的行號 */ 
            st_insert(t->attr.name,t->lineno,0);
          break;
        default:
          break;
      }
      break;
    case ExpK:
      switch (t->kind.exp)
      { case IdK:
          if (st_lookup(t->attr.name) == -1)
           /* 沒有在符號表中找到,把這個表標識符按照的新的定義處理 */
            st_insert(t->attr.name,t->lineno,location++);
          else
          /* 已經在符號表中找到,所以忽略位置信息,插入使用這個變量的行號 */ 
			st_insert(t->attr.name,t->lineno,0);
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }
}

/* 函數buildSymtab通過前敘遍歷語法樹構建符號表
 */
void buildSymtab(TreeNode * syntaxTree)
{ traverse(syntaxTree,insertNode,nullProc);
  if (TraceAnalyze)
  { fprintf(listing,"\nSymbol table:\n\n");
    printSymTab(listing);
  }
}
/* 打印錯誤信息 */
static void typeError(TreeNode * t, char * message)
{ fprintf(listing,"Type error at line %d: %s\n",t->lineno,message);
  Error = TRUE;
}

/* 函數checkNode在語法樹的一個節點執行類型檢查
 */
static void checkNode(TreeNode * t)
{ switch (t->nodekind)
  { 
  /* 表達式 */
	case ExpK:
      switch (t->kind.exp)
      { 
	  /* 數值運算,要求操作數都是整數 */
		case OpK:
          if ((t->child[0]->type != Integer) ||
              (t->child[1]->type != Integer))
            typeError(t,"Op applied to non-integer");
		  /* 數值比較運算,結果是布爾型 */
          if ((t->attr.op == EQ) || (t->attr.op == LT))
            t->type = Boolean;
		  /* 其他數值運算,結果是整數 */
          else
            t->type = Integer;
          break;
		  /* 常數和變量,類型為整數 */
        case ConstK:
        case IdK:
          t->type = Integer;
          break;
        default:
          break;
      }
      break;
	/* 語句 */
    case StmtK:
      switch (t->kind.stmt)
      { 
		/* IF語句,類型是布爾型 */
	    case IfK:
          if (t->child[0]->type == Integer)
            typeError(t->child[0],"if test is not Boolean");
          break;
		/* 賦值語句語句,類型是整型 */
        case AssignK:
          if (t->child[0]->type != Integer)
            typeError(t->child[0],"assignment of non-integer value");
          break;
		/* 輸出語句,類型是整型 */
        case WriteK:
          if (t->child[0]->type != Integer)
            typeError(t->child[0],"write of non-integer value");
          break;
		/* 循環語句,測試類型是布爾型 */
        case RepeatK:
          if (t->child[1]->type == Integer)
            typeError(t->child[1],"repeat test is not Boolean");
          break;
        default:
          break;
      }
      break;
    default:
      break;

  }
}

/* 函數typeCheck通過后序遍歷語法樹來執行類型檢查
 */
void typeCheck(TreeNode * syntaxTree)
{ traverse(syntaxTree,nullProc,checkNode);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产精品99精品国产| 一区二区三区在线视频免费观看 | 免费精品99久久国产综合精品| 国产精品美女久久久久av爽李琼 | 国产色综合久久| 欧美精品一区二区三区很污很色的 | 国产精品18久久久久久久久久久久 | 中文字幕中文字幕一区二区| 国产精品无人区| 中文字幕综合网| 亚洲另类色综合网站| 亚洲午夜免费电影| 视频在线观看一区| 裸体歌舞表演一区二区| 久久超碰97中文字幕| 国产资源精品在线观看| 成人免费精品视频| 日本高清成人免费播放| 欧美精品v日韩精品v韩国精品v| 欧美一级午夜免费电影| 久久在线免费观看| 综合久久久久久久| 婷婷开心激情综合| 丁香另类激情小说| 欧美亚洲动漫另类| 欧美精品一区二区三| 国产精品福利电影一区二区三区四区| 亚洲精品精品亚洲| 久久精品国产久精国产| 91在线视频在线| 9191成人精品久久| 久久久一区二区| 亚洲高清久久久| 国产高清精品网站| 欧美日韩aaa| 中文字幕电影一区| 日韩高清在线一区| 99久久综合狠狠综合久久| 日韩一区二区三区在线观看| 国产精品拍天天在线| 免费看欧美女人艹b| 99re这里只有精品首页| 精品国产网站在线观看| 亚洲午夜久久久久中文字幕久| 国产大陆a不卡| 欧美电影影音先锋| 亚洲精品高清在线| 国产91精品入口| 日韩欧美国产午夜精品| 一区二区三区欧美激情| 成人午夜视频网站| 精品久久久久久久久久久院品网 | 国产精品萝li| 免费在线看一区| 91黄色免费网站| 国产精品久久午夜夜伦鲁鲁| 精品一区中文字幕| 欧美高清视频在线高清观看mv色露露十八| 日本一区二区成人| 精品一区二区三区久久久| 欧美精品乱码久久久久久| 日韩美女视频一区| 99久久99久久久精品齐齐| 国产亚洲一二三区| 国产一区二区三区四| 日韩精品资源二区在线| 性做久久久久久久免费看| 一本大道av伊人久久综合| 国产精品美日韩| 成人丝袜视频网| 欧美国产一区二区| av电影在线不卡| 亚洲欧美在线视频| 91在线高清观看| 亚洲欧美成人一区二区三区| 99在线精品视频| 最新高清无码专区| 色婷婷亚洲综合| 一区二区三区不卡视频| 在线观看视频一区二区| 亚洲成人福利片| 欧美另类久久久品| 蜜臀国产一区二区三区在线播放| 欧美日韩国产精品自在自线| 婷婷夜色潮精品综合在线| 欧美日韩一区在线观看| 日韩黄色免费网站| 日韩欧美三级在线| 国产乱码精品一区二区三区五月婷| 精品美女一区二区| 丰满岳乱妇一区二区三区| 国产精品高潮呻吟久久| 91精品福利视频| 日韩福利视频网| 久久天天做天天爱综合色| 国产成a人无v码亚洲福利| 国产精品国产三级国产a| 一本大道久久a久久综合| 亚洲成av人**亚洲成av**| 欧美mv日韩mv亚洲| 丁香天五香天堂综合| 亚洲综合成人在线视频| 日韩一区二区三区免费看| 丁香婷婷综合网| 亚洲va在线va天堂| 久久久久国色av免费看影院| 色婷婷久久久久swag精品| 人禽交欧美网站| 国产精品久久三区| 777奇米四色成人影色区| 国产成人精品免费一区二区| 亚洲另类在线制服丝袜| 欧美精品一区二区三区久久久| 成人性视频免费网站| 午夜精品久久久久| 国产精品毛片高清在线完整版| 欧美日韩一二区| 国产mv日韩mv欧美| 人禽交欧美网站| 亚洲美女免费视频| www久久精品| 欧美理论在线播放| 91在线视频在线| 丁香一区二区三区| 黄页网站大全一区二区| 亚洲成a人片综合在线| 中文字幕一区在线观看| 久久久91精品国产一区二区三区| 91国在线观看| 成人av网在线| 国产一区二区三区四区五区入口 | 成人a区在线观看| 国产主播一区二区三区| 五月激情综合网| 一区二区成人在线视频| 国产欧美一区二区在线观看| 日韩免费性生活视频播放| 欧美三级欧美一级| 色综合网站在线| av中文字幕一区| 成人在线视频一区二区| 国产一区二区三区免费| 美女一区二区在线观看| 日本欧美一区二区在线观看| 亚洲一区二区美女| 一区二区在线看| 亚洲乱码国产乱码精品精的特点 | 久久影音资源网| 欧美岛国在线观看| 日韩精品在线一区| 日韩一区二区视频| 精品国产第一区二区三区观看体验| 777亚洲妇女| 日韩欧美国产系列| 精品成人佐山爱一区二区| 欧美成人一级视频| 精品久久久久久久久久久久久久久 | 日韩一区国产二区欧美三区| 91精品国产欧美一区二区成人 | 另类小说一区二区三区| 日本不卡视频在线观看| 免费在线看成人av| 久久99热99| 国产成人丝袜美腿| 99久久综合色| 欧美日韩免费一区二区三区视频| 欧美日韩在线播放一区| 911精品产国品一二三产区| 日韩限制级电影在线观看| 欧美精品一区二区三区蜜臀| 久久免费看少妇高潮| 国产欧美日产一区| 亚洲三级视频在线观看| 一个色综合av| 久久不见久久见免费视频1| 国产乱一区二区| 色综合久久精品| 欧美精品777| 欧美激情中文字幕| 一区二区三区不卡在线观看| 美国欧美日韩国产在线播放| 国产成a人无v码亚洲福利| 在线观看视频一区二区| 欧美成人一区二区三区片免费 | 日韩精品免费专区| 国产精品小仙女| 欧美性猛片aaaaaaa做受| 欧美一区二区美女| 国产精品五月天| 日韩一区精品视频| www.综合网.com| 欧美一区二区三区在线电影| 欧美激情资源网| 亚洲第一av色| av一本久道久久综合久久鬼色| 欧美一区日本一区韩国一区| 亚洲欧洲一区二区在线播放| 日韩二区三区四区| 一本色道久久综合亚洲91| 欧美一级电影网站|