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

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

?? 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:
      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一区二区三区免费野_久草精品视频
国产亚洲欧美日韩在线一区| 中文字幕av一区二区三区高 | 图片区小说区区亚洲影院| 亚洲国产另类av| 洋洋成人永久网站入口| 日韩精品91亚洲二区在线观看 | av电影在线观看一区| 国产一区二区三区在线观看免费视频| 91亚洲精华国产精华精华液| 国产一区二区看久久| 国产在线观看一区二区| 成熟亚洲日本毛茸茸凸凹| 99vv1com这只有精品| 在线看日本不卡| 欧美xxxxxxxx| 国产精品久久看| 亚洲综合男人的天堂| 日韩精品1区2区3区| 国产激情一区二区三区四区 | 欧美一区二区精品在线| 久久美女艺术照精彩视频福利播放| 国产日韩av一区| 一级精品视频在线观看宜春院 | 日韩精品中文字幕在线一区| 久久久久久9999| 亚洲国产精品国自产拍av| 亚洲成人av福利| 国产传媒欧美日韩成人| 欧美自拍偷拍午夜视频| 欧美一区二区大片| 国产精品二三区| 亚洲国产精品一区二区尤物区| 国产一区二区伦理| 综合久久久久久| 国产午夜精品一区二区三区四区| 国产精品三级在线观看| 午夜久久久久久久久久一区二区| 蜜臀av性久久久久蜜臀aⅴ| 国产精品久久久久aaaa樱花 | 97精品国产97久久久久久久久久久久| 成人一二三区视频| 精品美女在线播放| 天天av天天翘天天综合网 | 亚洲成人中文在线| 99久久99久久精品免费观看| 日韩三级电影网址| 另类人妖一区二区av| 欧美日韩免费在线视频| 亚洲免费观看高清完整版在线观看| 久久爱www久久做| 欧美精品第1页| 天使萌一区二区三区免费观看| 日本道精品一区二区三区| 亚洲色图欧洲色图婷婷| 99视频超级精品| 最近中文字幕一区二区三区| 色综合久久66| 亚洲一区二区三区在线播放| 欧美视频精品在线| 天堂一区二区在线免费观看| 91精品在线免费| 免费精品视频在线| 久久久欧美精品sm网站| av一区二区三区黑人| 日韩一区有码在线| 欧美亚洲动漫制服丝袜| 日韩电影免费在线看| 久久亚洲综合av| www.日韩大片| 亚洲国产精品影院| 精品蜜桃在线看| 不卡视频在线观看| 亚洲一区二区三区四区不卡| 欧美一区二视频| 国产成人免费视频| 亚洲欧美偷拍卡通变态| 欧美日韩大陆在线| 韩国一区二区在线观看| 1000部国产精品成人观看| 91九色最新地址| 青椒成人免费视频| 久久女同精品一区二区| 99免费精品在线观看| 日韩专区中文字幕一区二区| 久久综合视频网| 91女人视频在线观看| 日韩激情视频网站| 国产欧美日韩综合| 欧美少妇xxx| 国产精品综合av一区二区国产馆| 亚洲天堂久久久久久久| 正在播放亚洲一区| 北条麻妃一区二区三区| 午夜精品久久久久久久| 欧美激情在线免费观看| 欧美日本精品一区二区三区| 国产凹凸在线观看一区二区| 亚洲一区二区在线视频| 久久久精品欧美丰满| 欧美午夜精品久久久| 国产一区二区久久| 亚洲福利视频导航| 国产精品欧美一级免费| 欧美日韩一区二区三区在线 | 亚洲最大的成人av| 久久综合九色综合97_久久久| 91久久香蕉国产日韩欧美9色| 国产尤物一区二区| 亚洲一区二区在线视频| 亚洲国产电影在线观看| 欧美一区二区三区不卡| 成人黄色软件下载| 美女精品一区二区| 一区二区三区四区不卡视频| 久久网站热最新地址| 欧美精品123区| 91香蕉视频在线| 国产麻豆精品95视频| 日韩精品久久久久久| 一区二区三区四区不卡视频| 久久精品人人做人人爽人人| 欧美老年两性高潮| 色综合久久久久久久久| 国产福利一区二区三区视频在线| 偷拍一区二区三区| 亚洲精品午夜久久久| 欧美国产成人在线| 精品粉嫩aⅴ一区二区三区四区| 欧美午夜影院一区| 91蝌蚪国产九色| 国产精品1024久久| 国产中文字幕一区| 秋霞午夜av一区二区三区| 亚洲风情在线资源站| 亚洲狼人国产精品| 国产精品少妇自拍| 国产亚洲精品精华液| 日韩欧美二区三区| 555www色欧美视频| 欧美日韩一区三区四区| 在线免费视频一区二区| 91美女福利视频| 成人黄色网址在线观看| 成人午夜短视频| 国产精品99久久久久久久女警 | 国产一区在线视频| 久久精品国产在热久久| 日本aⅴ亚洲精品中文乱码| 亚洲一区成人在线| 一区二区高清视频在线观看| 综合在线观看色| 亚洲天堂av一区| 国产精品午夜在线观看| 中文字幕二三区不卡| 亚洲国产精品av| 欧美高清在线一区| 久久九九国产精品| 26uuu色噜噜精品一区二区| 日韩欧美黄色影院| 精品国产一区二区三区av性色| 日韩午夜激情视频| 精品国产电影一区二区| 精品免费国产一区二区三区四区| 精品三级av在线| 2022国产精品视频| 国产视频一区二区在线| 日本一区二区三区免费乱视频| 中文字幕国产一区| 综合分类小说区另类春色亚洲小说欧美| 国产精品电影一区二区| 亚洲天堂a在线| 亚洲国产欧美在线| 日韩高清在线不卡| 九九热在线视频观看这里只有精品| 精品一区二区精品| 国产盗摄精品一区二区三区在线| 成人av网站免费| 在线中文字幕一区| 欧美日韩国产高清一区二区三区 | 久久影院午夜片一区| 国产亚洲一区二区在线观看| 欧美激情一区二区| 亚洲欧美国产三级| 五月天激情综合| 久久99国产乱子伦精品免费| 国产精品1区2区| 色婷婷av一区二区三区大白胸| 欧美日韩成人激情| 久久精品夜色噜噜亚洲a∨| 亚洲欧洲日韩在线| 亚洲国产综合人成综合网站| 蜜臀久久99精品久久久画质超高清| 国产一区亚洲一区| 色婷婷精品久久二区二区蜜臂av| 欧美精品三级日韩久久| 精品乱人伦小说| 亚洲欧洲精品天堂一级| 午夜电影一区二区| 国模无码大尺度一区二区三区| www.性欧美|