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

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

?? util.c

?? 編譯原理的課程設計作業
?? 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 TRUE1:
    case FALSE1:
    case OR1:
    case AND1:
    case NOT1:
	case INT1:
    case BOOL1:
    case STRING1:
    case WHILE1:
    case DO1:
	case IF:
    case THEN:
    case ELSE:
    case END:
    case REPEAT:
    case UNTIL:
    case READ:
    case WRITE:
      fprintf(listing,
         "(KEY, %s)",tokenString);
      break;
    case ASSIGN: fprintf(listing,"(SYM, :=)"); break;
    case LT: fprintf(listing,"(SYM, <)"); break;
	case LE: fprintf(listing,"(SYM, <=)"); break;
	case GT: fprintf(listing,"(SYM, >)"); break;
	case GE: fprintf(listing,"(SYM, >=)"); break;
    case EQ: fprintf(listing,"(SYM, =)"); break;
    case LPAREN: fprintf(listing,"(SYM, ()"); break;
    case RPAREN: fprintf(listing,"(SYM, ))"); break;
    case SEMI: fprintf(listing,"(SYM, ;)"); break;
    case COMMA: fprintf(listing,"(SYM, ,)"); break;
    case PLUS: fprintf(listing,"(SYM, +)"); break;
    case MINUS: fprintf(listing,"(SYM, -)"); break;
    case TIMES: fprintf(listing,"(SYM, *)"); break;
    case OVER: fprintf(listing,"(SYM, /)"); break;
    case ENDFILE: fprintf(listing,"EOF"); break;
	case COMMENT: fprintf(listing,"It is a comment!"); break;
	case ERRORMESSAGE: fprintf(listing,"Lexical errors:losing the right delimiter!\n"); break;
	case ERRORMESSAGE2: fprintf(listing,"Lexical errors:losing the right bracket of a STRING!\n"); break;
    case NUM:
      fprintf(listing,
          "(NUM, %s)",tokenString);
      break;
    case ID:
      fprintf(listing,
          "(ID, %s)",tokenString);
      break;
	case STR:
	  fprintf(listing,
          "(STR, %s)",tokenString);
      break;
    case ERROR:
      fprintf(listing,
          "\nLexical errors: %s is an illegal character!",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一区二区三区电影| 国产精品色婷婷久久58| 91精品国产福利| 91福利小视频| av日韩在线网站| 国内精品伊人久久久久影院对白| 亚洲一区二区五区| 1区2区3区精品视频| 久久综合精品国产一区二区三区| 欧美精品国产精品| 欧美四级电影在线观看| 成人精品国产一区二区4080| 激情成人午夜视频| 成人一级片网址| 美女任你摸久久| 午夜免费久久看| 亚洲一区二区在线播放相泽| 中文字幕视频一区| 亚洲国产高清在线观看视频| 26uuu色噜噜精品一区二区| 欧美一区二区精美| 欧美精品在线一区二区| 91电影在线观看| 色老综合老女人久久久| 色天天综合色天天久久| 91香蕉视频mp4| 91免费看视频| 色94色欧美sute亚洲线路一久 | 男女性色大片免费观看一区二区| 亚洲一区在线看| 亚洲国产日韩a在线播放性色| 亚洲免费看黄网站| 亚洲精品乱码久久久久| 亚洲自拍偷拍图区| 午夜伊人狠狠久久| 亚洲香肠在线观看| 日韩中文字幕1| 日本成人在线网站| 久久精品国产第一区二区三区| 久久精品噜噜噜成人av农村| 久久精品国产澳门| 国产成人在线色| a亚洲天堂av| 91美女片黄在线观看| 在线视频你懂得一区二区三区| 欧美四级电影网| 91精品国产一区二区三区香蕉| 欧美一区二区三区思思人| 欧美成人国产一区二区| 精品成人私密视频| 亚洲国产精品精华液ab| 1024亚洲合集| 成人免费小视频| 午夜日韩在线观看| 国产在线不卡视频| 99视频国产精品| 欧美日韩一卡二卡三卡| 日韩午夜激情av| 欧美国产日韩a欧美在线观看| 最新日韩av在线| 亚洲va天堂va国产va久| 韩日欧美一区二区三区| 99天天综合性| 91精品国产综合久久久久久漫画| 精品国产91亚洲一区二区三区婷婷| 国产亚洲精品资源在线26u| 亚洲日本在线观看| 奇米色一区二区三区四区| 国产精品一区专区| 在线国产亚洲欧美| 精品久久人人做人人爰| 日韩理论片在线| 免费观看成人av| 99精品久久只有精品| 91精品久久久久久蜜臀| 亚洲国产成人自拍| 丝袜a∨在线一区二区三区不卡| 久久国产三级精品| 色婷婷av一区二区三区软件 | 美女网站色91| 成人不卡免费av| 欧美精品粉嫩高潮一区二区| 欧美激情一区二区三区不卡| 亚洲chinese男男1069| 福利电影一区二区| 欧美一区二区在线观看| 国产精品福利一区| 久久精品国产一区二区| 91官网在线观看| 国产亚洲精品久| 日本在线不卡视频一二三区| av高清久久久| 久久男人中文字幕资源站| 一区二区三区四区高清精品免费观看| 狠狠色丁香婷婷综合| 欧美午夜精品一区二区蜜桃| 国产农村妇女毛片精品久久麻豆| 天堂影院一区二区| 色成年激情久久综合| 日本一区二区不卡视频| 久久av资源网| 欧美精品乱码久久久久久| 亚洲美腿欧美偷拍| 成人综合日日夜夜| 欧美精品一区二区不卡| 日韩在线一二三区| 色噜噜久久综合| 亚洲欧洲日本在线| 国产精品综合av一区二区国产馆| 欧美不卡123| 色域天天综合网| 国产亚洲午夜高清国产拍精品| 天堂午夜影视日韩欧美一区二区| 91在线你懂得| 国产精品久久久久久久久久久免费看 | 欧美激情一区二区| 老司机精品视频导航| 91精品国产综合久久精品| 亚洲资源中文字幕| 91久久人澡人人添人人爽欧美| 中文字幕一区二区三区在线播放| 国产98色在线|日韩| 精品国产免费一区二区三区香蕉| 免费观看一级欧美片| 91精品国产91久久久久久最新毛片| 亚洲国产人成综合网站| 欧洲精品一区二区三区在线观看| 国产欧美综合在线观看第十页 | caoporn国产一区二区| 国产精品久久久久一区| 国产99精品国产| 国产精品美女久久久久久| 国产成人精品www牛牛影视| 久久久久国产精品麻豆| 狠狠色狠狠色综合系列| 国产亚洲欧美色| 成人爱爱电影网址| 综合久久一区二区三区| 色婷婷久久久亚洲一区二区三区 | 精品一区二区三区日韩| 亚洲欧美在线另类| 一本久久精品一区二区 | 久久国产剧场电影| 精品动漫一区二区三区在线观看| 麻豆免费看一区二区三区| 欧美一二三区在线| 国产精品66部| 亚洲欧美经典视频| 欧美日韩高清一区二区三区| 奇米一区二区三区| 国产亚洲一二三区| 色国产精品一区在线观看| 午夜精品久久久久久| 精品免费国产一区二区三区四区| 国精产品一区一区三区mba视频| 国产欧美一区二区精品秋霞影院| 97aⅴ精品视频一二三区| 亚洲尤物视频在线| 精品国产免费视频| 成人国产精品视频| 亚洲第一搞黄网站| 久久青草欧美一区二区三区| 99久久精品国产麻豆演员表| 五月综合激情婷婷六月色窝| 337p粉嫩大胆色噜噜噜噜亚洲| av爱爱亚洲一区| 天堂影院一区二区| 亚洲国产激情av| 欧美精品一二三区| 国产 欧美在线| 午夜精品成人在线视频| 国产丝袜美腿一区二区三区| 91福利在线导航| 国产乱妇无码大片在线观看| 亚洲免费av在线| 久久综合九色综合欧美就去吻| 色菇凉天天综合网| 国内精品久久久久影院色| 玉足女爽爽91| 久久久国产精华| 777精品伊人久久久久大香线蕉| 国产精品一区三区| 午夜精品视频一区| 国产精品久久久久影院亚瑟| 日韩欧美色电影| 在线视频中文字幕一区二区| 91精品国产色综合久久不卡蜜臀 | 国产精品毛片大码女人| 91精品在线免费| caoporm超碰国产精品| 九九视频精品免费| 亚洲一二三四区| 欧美国产综合一区二区| 欧美大白屁股肥臀xxxxxx| 色av成人天堂桃色av| 成人网页在线观看| 激情五月婷婷综合| 视频一区在线视频|