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

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

?? symtab.c

?? C_MINUS 編譯器 源代碼 《便宜原理及實踐》附錄B
?? C
字號:
/****************************************************/
/* File: symtab.c                                   */
/* Symbol table implementation for the TINY compiler*/
/* (allows only one symbol table)                   */
/* Symbol table is implemented as a chained         */
/* hash table                                       */
/* Compiler Construction: Principles and Practice   */
/* Kenneth C. Louden                                */
/****************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "symtab.h"

/* SIZE is the size of the hash table */
#define SIZE 211

/* SHIFT is the power of two used as multiplier
   in hash function  */
#define SHIFT 4

/* the hash function */
static int hash ( char * key )
{ int temp = 0;
  int i = 0;
  while (key[i] != '\0')
  { temp = ((temp << SHIFT) + key[i]) % SIZE;
    ++i;
  }
  return temp;
}

/* the list of line numbers of the source 
 * code in which a variable is referenced
 */
typedef struct LineListRec
   { int lineno;
     struct LineListRec * next;
   } * LineList;

/* The record in the bucket lists for
 * each variable, including name, 
 * assigned memory location, and
 * the list of line numbers in which
 * it appears in the source code
 */
typedef struct BucketListRec
   { char * name;
     LineList lines;
     int memloc ; /* memory location for variable */
     struct BucketListRec * next;
   } * BucketList;

/* the hash table */
static BucketList hashTable[SIZE];

/* Procedure st_insert inserts line numbers and
 * memory locations into the symbol table
 * loc = memory location is inserted only the
 * first time, otherwise ignored
 */
void st_insert( char * name, int lineno, int loc )
{ int h = hash(name);
  BucketList l =  hashTable[h];
  while ((l != NULL) && (strcmp(name,l->name) != 0))
    l = l->next;
  if (l == NULL) /* variable not yet in table */
  { l = (BucketList) malloc(sizeof(struct BucketListRec));
    l->name = name;
    l->lines = (LineList) malloc(sizeof(struct LineListRec));
    l->lines->lineno = lineno;
    l->memloc = loc;
    l->lines->next = NULL;
    l->next = hashTable[h];
    hashTable[h] = l; }
  else /* found in table, so just add line number */
  { LineList t = l->lines;
    while (t->next != NULL) t = t->next;
    t->next = (LineList) malloc(sizeof(struct LineListRec));
    t->next->lineno = lineno;
    t->next->next = NULL;
  }
} /* st_insert */

/* Function st_lookup returns the memory 
 * location of a variable or -1 if not found
 */
int st_lookup ( char * name )
{ int h = hash(name);
  BucketList l =  hashTable[h];
  while ((l != NULL) && (strcmp(name,l->name) != 0))
    l = l->next;
  if (l == NULL) return -1;
  else return l->memloc;
}

/* Procedure printSymTab prints a formatted 
 * listing of the symbol table contents 
 * to the listing file
 */
void printSymTab(FILE * listing)
{ int i;
  fprintf(listing,"Variable Name  Location   Line Numbers\n");
  fprintf(listing,"-------------  --------   ------------\n");
  for (i=0;i<SIZE;++i)
  { if (hashTable[i] != NULL)
    { BucketList l = hashTable[i];
      while (l != NULL)
      { LineList t = l->lines;
        fprintf(listing,"%-14s ",l->name);
        fprintf(listing,"%-8d  ",l->memloc);
        while (t != NULL)
        { fprintf(listing,"%4d ",t->lineno);
          t = t->next;
        }
        fprintf(listing,"\n");
        l = l->next;
      }
    }
  }
} /* printSymTab */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线云播放| 亚洲日本在线a| 精品一区二区三区在线观看| 欧美一区日本一区韩国一区| 久久国产尿小便嘘嘘| 久久亚洲精精品中文字幕早川悠里| 日韩av不卡一区二区| 精品久久久久一区| 成人毛片视频在线观看| 亚洲精品欧美激情| 欧美一区二区福利视频| 国产精品一色哟哟哟| 亚洲视频在线一区| 欧美一级xxx| 国产成人8x视频一区二区| 自拍偷拍欧美激情| 欧美一区二区私人影院日本| 国产福利电影一区二区三区| 亚洲免费在线看| 欧美一区二区三区影视| 国产成人精品一区二区三区四区| 国产精品不卡在线| 91麻豆精品国产91久久久| 国产综合久久久久久鬼色| 日韩毛片精品高清免费| 日韩精品最新网址| 懂色av一区二区夜夜嗨| 亚洲成人免费电影| 国产视频一区二区在线| 欧美三级电影在线看| 国产在线视频一区二区三区| 一区二区激情视频| 国产蜜臀97一区二区三区| 欧美老女人在线| 成人久久18免费网站麻豆 | 国产ts人妖一区二区| 亚洲另类在线一区| 久久夜色精品国产噜噜av | 欧美日韩精品福利| 国产成人亚洲综合a∨猫咪| 午夜精品影院在线观看| 国产精品视频一二三区| 日韩丝袜美女视频| 欧美午夜影院一区| 99久久精品国产麻豆演员表| 老司机精品视频一区二区三区| 亚洲三级免费电影| 国产欧美久久久精品影院| 这里只有精品电影| 在线免费观看视频一区| 成人爽a毛片一区二区免费| 久久国产夜色精品鲁鲁99| 亚洲午夜精品在线| 亚洲激情成人在线| 日韩美女精品在线| 亚洲国产高清在线| 久久午夜羞羞影院免费观看| 日韩一区二区在线观看视频 | 欧美精品18+| 99re8在线精品视频免费播放| 国产精品自产自拍| 老司机免费视频一区二区三区| 亚洲高清免费一级二级三级| 亚洲日本在线天堂| 亚洲欧美一区二区久久| 国产精品人成在线观看免费| 久久综合九色综合97婷婷女人 | 亚洲精品在线观看视频| 欧美丰满少妇xxxxx高潮对白 | 久久99精品久久久久| 日韩精品免费专区| 亚洲成人综合在线| 日韩伦理电影网| 亚洲欧美另类久久久精品2019| 国产精品亲子乱子伦xxxx裸| 国产欧美综合色| 国产精品久久一卡二卡| 综合精品久久久| 亚洲精品视频观看| 亚洲韩国精品一区| 日日夜夜免费精品| 美日韩黄色大片| 国产又粗又猛又爽又黄91精品| 黄色精品一二区| 丰满亚洲少妇av| 91在线国内视频| 欧美午夜在线一二页| 7777精品伊人久久久大香线蕉的 | 亚洲私人黄色宅男| 玉足女爽爽91| 丝袜脚交一区二区| 精品无人码麻豆乱码1区2区 | 亚洲综合999| 香蕉久久一区二区不卡无毒影院 | 成人激情图片网| 色婷婷国产精品久久包臀| 91官网在线免费观看| 7777精品伊人久久久大香线蕉完整版 | 午夜一区二区三区视频| 舔着乳尖日韩一区| 国内外成人在线| www.成人在线| 精品视频一区二区三区免费| 欧美日本一区二区三区| 欧美精品一区二区三区高清aⅴ | 欧美日韩午夜精品| 精品毛片乱码1区2区3区| 日本一区二区综合亚洲| 亚洲精品中文字幕在线观看| 亚洲国产乱码最新视频| 国产制服丝袜一区| 色播五月激情综合网| 欧美大片在线观看一区| 日本一区二区三区在线不卡| 国产成人免费av在线| 欧美日韩精品一区二区| 丁香婷婷综合五月| 色域天天综合网| 精品欧美久久久| 综合电影一区二区三区 | 欧美一区二区私人影院日本| 中文字幕精品在线不卡| 午夜精品aaa| 99久免费精品视频在线观看| 欧美一区二区三区四区久久| 国产精品久久久久久福利一牛影视| 偷拍一区二区三区| av成人老司机| 精品国产乱码久久久久久老虎 | 国产色综合一区| 日韩精品91亚洲二区在线观看| 国产成人福利片| 精品少妇一区二区三区视频免付费| 亚洲男同性视频| 成人性生交大片免费看中文 | 亚洲国产精品av| 麻豆91免费看| 欧美日韩mp4| 一区av在线播放| 成人app在线| 久久久久99精品国产片| 日韩精品成人一区二区三区| 在线亚洲高清视频| 中文字幕一区免费在线观看 | 亚洲欧美在线aaa| 国产麻豆午夜三级精品| 制服丝袜av成人在线看| 亚洲国产综合人成综合网站| 91美女在线看| 欧美激情中文字幕一区二区| 国内精品伊人久久久久av影院| 91精品一区二区三区久久久久久 | 波多野结衣视频一区| 国产喂奶挤奶一区二区三区| 国精产品一区一区三区mba桃花| 欧美一区二区二区| 日韩电影网1区2区| 欧美一区二区日韩| 一区二区激情小说| 欧美午夜一区二区| 亚洲午夜一二三区视频| 欧美日韩一区不卡| 亚洲五码中文字幕| 欧美伊人久久大香线蕉综合69| 中文字幕综合网| 在线观看一区日韩| 亚洲小说春色综合另类电影| 在线这里只有精品| 亚洲成人先锋电影| 欧美一区二区女人| 日本欧美久久久久免费播放网| 欧美日韩国产高清一区二区三区 | 国产精品国产三级国产| 高清av一区二区| 国产欧美精品一区二区三区四区| 久久超级碰视频| 日韩情涩欧美日韩视频| 看电视剧不卡顿的网站| 欧美变态口味重另类| 久久精品国产999大香线蕉| 久久综合狠狠综合| 成人精品一区二区三区中文字幕| 自拍偷拍欧美激情| 在线中文字幕不卡| 日本欧美韩国一区三区| 欧美大白屁股肥臀xxxxxx| 日本亚洲最大的色成网站www| 欧美一区二区高清| 国产成人三级在线观看| 国产精品国产三级国产| 欧美日韩激情一区| 免费在线观看一区二区三区| 久久久久久电影| 成人av午夜电影| 亚洲综合激情另类小说区| 日韩精品中文字幕在线一区| 国产精品一卡二卡在线观看| 中文字幕欧美一| 9191成人精品久久| 成人手机在线视频|