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

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

?? util.c

?? C_MINUS 編譯器 源代碼 《便宜原理及實踐》附錄B
?? 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:
      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;
    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 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;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合另类小说| 中文字幕+乱码+中文字幕一区| 99久久精品免费精品国产| 国产精品性做久久久久久| 韩国av一区二区| 久久99国产精品久久| 强制捆绑调教一区二区| 免费精品视频在线| 久久se精品一区二区| 亚洲日本va午夜在线影院| 美女免费视频一区二区| 成人av片在线观看| 国产福利电影一区二区三区| 国产v综合v亚洲欧| av午夜一区麻豆| 色综合天天狠狠| 日本韩国欧美三级| 欧美日韩国产一级| 日韩女优视频免费观看| 精品对白一区国产伦| 久久精品人人做人人爽97| 国产精品国产三级国产aⅴ入口 | 在线观看91精品国产麻豆| 欧美喷潮久久久xxxxx| 日韩区在线观看| 国产人成一区二区三区影院| 亚洲欧美另类久久久精品 | 99re成人在线| 色欧美片视频在线观看在线视频| 欧美性极品少妇| 欧美一二三区在线观看| 久久在线免费观看| 亚洲欧美日韩精品久久久久| 五月婷婷综合网| 国产一区二区在线看| hitomi一区二区三区精品| 欧美在线不卡视频| 欧美成人aa大片| 国产精品国产三级国产普通话蜜臀| 亚洲香肠在线观看| 国内不卡的二区三区中文字幕| av亚洲精华国产精华精| 欧美精品xxxxbbbb| 国产欧美一区二区精品性| 亚洲一级片在线观看| 韩国女主播一区| 色婷婷综合激情| 日韩免费一区二区| 亚洲精品亚洲人成人网| 久久av资源网| 91无套直看片红桃| 精品国产凹凸成av人导航| 亚洲欧美日韩成人高清在线一区| 美脚の诱脚舐め脚责91| 91香蕉国产在线观看软件| 欧美成人高清电影在线| 亚洲女同ⅹxx女同tv| 国产一区二三区好的| 在线观看欧美黄色| 久久蜜臀精品av| 天天色 色综合| 99国产精品久| 日韩欧美综合在线| 亚洲综合一区二区精品导航| 国产精品资源网| 欧美日韩国产乱码电影| 国产精品乱子久久久久| 老司机精品视频在线| 欧美中文字幕一区二区三区| 中文字幕不卡的av| 久久国产乱子精品免费女| 色999日韩国产欧美一区二区| 久久久久国产精品厨房| 青娱乐精品在线视频| 91高清视频在线| 国产精品国模大尺度视频| 精品制服美女久久| 欧美精品日日鲁夜夜添| 亚洲免费视频中文字幕| 成人动漫精品一区二区| 久久精品视频一区二区| 久久精品999| 91精品国模一区二区三区| 一区二区三区四区激情| av在线一区二区三区| 国产视频一区二区三区在线观看| 蜜臀久久久久久久| 777亚洲妇女| 亚洲高清免费观看| 在线观看日产精品| 亚洲精品国产无套在线观| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产69精品久久久久毛片| 日韩精品一区二| 青青草原综合久久大伊人精品| 欧美图区在线视频| 一区二区高清免费观看影视大全| 91视视频在线观看入口直接观看www| 国产女人水真多18毛片18精品视频| 国产一区二区成人久久免费影院| 日韩精品一区二区三区中文不卡| 日本欧美久久久久免费播放网| 欧美高清性hdvideosex| 亚洲国产成人av| 制服丝袜国产精品| 日韩国产一二三区| 777久久久精品| 蜜臀av一区二区三区| 日韩三级精品电影久久久| 美女久久久精品| 欧美xxxxxxxxx| 国产精品影视天天线| 国产偷国产偷精品高清尤物| 国产成人精品三级麻豆| 中文字幕免费一区| 99热精品一区二区| 有码一区二区三区| 欧美色欧美亚洲另类二区| 日本亚洲最大的色成网站www| 日韩精品影音先锋| 国产电影一区在线| 中文字幕va一区二区三区| 91免费在线视频观看| 亚洲一区在线电影| 91精品国产综合久久久久久漫画 | 一区二区三区日韩欧美| 欧美午夜精品一区二区三区| 日韩精品亚洲专区| 久久人人超碰精品| 成人激情午夜影院| 悠悠色在线精品| 日韩欧美一区二区三区在线| 国产+成+人+亚洲欧洲自线| 亚洲人123区| 制服丝袜在线91| 国产一区二区免费在线| 中文字幕佐山爱一区二区免费| 欧美日韩电影一区| 国产精品一区二区三区99| 亚洲男人的天堂在线aⅴ视频| 69久久99精品久久久久婷婷| 国产 欧美在线| 香蕉加勒比综合久久| 精品国产91久久久久久久妲己| 99国产精品久久| 美女高潮久久久| 国产精品剧情在线亚洲| 欧美裸体bbwbbwbbw| 丰满白嫩尤物一区二区| 亚洲狠狠爱一区二区三区| 26uuu精品一区二区三区四区在线| 色综合久久久久久久| 久久99深爱久久99精品| 亚洲三级电影网站| 精品处破学生在线二十三| 色综合久久精品| 激情av综合网| 亚洲一二三专区| 国产精品丝袜一区| 日韩一区二区三区电影在线观看| 北条麻妃一区二区三区| 久久er99热精品一区二区| 一区二区三区欧美日韩| 国产色综合一区| 欧美一区三区四区| 91久久线看在观草草青青 | 日韩一区二区三| 91同城在线观看| 激情综合网最新| 视频在线在亚洲| 欧美日韩一级片在线观看| 欧美喷水一区二区| 国产suv一区二区三区88区| 一区二区三国产精华液| 欧美经典一区二区三区| 日韩一区二区三区观看| 欧洲一区二区三区在线| 高清国产午夜精品久久久久久| 日韩电影在线观看一区| 亚洲蜜臀av乱码久久精品| 久久精品亚洲精品国产欧美| 日韩一级大片在线观看| 欧美色手机在线观看| 99久久婷婷国产综合精品| 国产一区二区三区日韩| 蜜臀av国产精品久久久久| 亚洲bdsm女犯bdsm网站| 一个色妞综合视频在线观看| 国产精品狼人久久影院观看方式| 国产三级一区二区三区| 欧美v日韩v国产v| 日韩欧美的一区| 欧美一区二区视频在线观看2020| 欧美色男人天堂| 欧美午夜片在线观看| 欧洲在线/亚洲| 欧美自拍丝袜亚洲| 91福利国产成人精品照片| 色婷婷综合五月| 97se亚洲国产综合自在线观|