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

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

?? sym.c

?? 編譯原理(Flex):生成詞法和語法分析程序的源代碼的程序。
?? C
字號:
/* sym - symbol table routines */

/*-
 * Copyright (c) 1990 The Regents of the University of California.
 * All rights reserved.
 *
 * This code is derived from software contributed to Berkeley by
 * Vern Paxson.
 * 
 * The United States Government has rights in this work pursuant
 * to contract no. DE-AC03-76SF00098 between the United States
 * Department of Energy and the University of California.
 *
 * Redistribution and use in source and binary forms are permitted provided
 * that: (1) source distributions retain this entire copyright notice and
 * comment, and (2) distributions including binaries display the following
 * acknowledgement:  ``This product includes software developed by the
 * University of California, Berkeley and its contributors'' in the
 * documentation or other materials provided with the distribution and in
 * all advertising materials mentioning features or use of this software.
 * Neither the name of the University nor the names of its contributors may
 * be used to endorse or promote products derived from this software without
 * specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

/* $Header: /home/daffy/u0/vern/flex/RCS/sym.c,v 2.19 95/03/04 16:11:04 vern Exp $ */

#include "flexdef.h"


/* declare functions that have forward references */

int hashfunct PROTO((register char[], int));


struct hash_entry *ndtbl[NAME_TABLE_HASH_SIZE];
struct hash_entry *sctbl[START_COND_HASH_SIZE];
struct hash_entry *ccltab[CCL_HASH_SIZE];

struct hash_entry *findsym();


/* addsym - add symbol and definitions to symbol table
 *
 * -1 is returned if the symbol already exists, and the change not made.
 */

int addsym( sym, str_def, int_def, table, table_size )
register char sym[];
char *str_def;
int int_def;
hash_table table;
int table_size;
	{
	int hash_val = hashfunct( sym, table_size );
	register struct hash_entry *sym_entry = table[hash_val];
	register struct hash_entry *new_entry;
	register struct hash_entry *successor;

	while ( sym_entry )
		{
		if ( ! strcmp( sym, sym_entry->name ) )
			{ /* entry already exists */
			return -1;
			}

		sym_entry = sym_entry->next;
		}

	/* create new entry */
	new_entry = (struct hash_entry *)
		flex_alloc( sizeof( struct hash_entry ) );

	if ( new_entry == NULL )
		flexfatal( _( "symbol table memory allocation failed" ) );

	if ( (successor = table[hash_val]) != 0 )
		{
		new_entry->next = successor;
		successor->prev = new_entry;
		}
	else
		new_entry->next = NULL;

	new_entry->prev = NULL;
	new_entry->name = sym;
	new_entry->str_val = str_def;
	new_entry->int_val = int_def;

	table[hash_val] = new_entry;

	return 0;
	}


/* cclinstal - save the text of a character class */

void cclinstal( ccltxt, cclnum )
Char ccltxt[];
int cclnum;
	{
	/* We don't bother checking the return status because we are not
	 * called unless the symbol is new.
	 */
	Char *copy_unsigned_string();

	(void) addsym( (char *) copy_unsigned_string( ccltxt ),
			(char *) 0, cclnum,
			ccltab, CCL_HASH_SIZE );
	}


/* ccllookup - lookup the number associated with character class text
 *
 * Returns 0 if there's no CCL associated with the text.
 */

int ccllookup( ccltxt )
Char ccltxt[];
	{
	return findsym( (char *) ccltxt, ccltab, CCL_HASH_SIZE )->int_val;
	}


/* findsym - find symbol in symbol table */

struct hash_entry *findsym( sym, table, table_size )
register char sym[];
hash_table table;
int table_size;
	{
	static struct hash_entry empty_entry =
		{
		(struct hash_entry *) 0, (struct hash_entry *) 0,
		(char *) 0, (char *) 0, 0,
		} ;
	register struct hash_entry *sym_entry =
		table[hashfunct( sym, table_size )];

	while ( sym_entry )
		{
		if ( ! strcmp( sym, sym_entry->name ) )
			return sym_entry;
		sym_entry = sym_entry->next;
		}

	return &empty_entry;
	}


/* hashfunct - compute the hash value for "str" and hash size "hash_size" */

int hashfunct( str, hash_size )
register char str[];
int hash_size;
	{
	register int hashval;
	register int locstr;

	hashval = 0;
	locstr = 0;

	while ( str[locstr] )
		{
		hashval = (hashval << 1) + (unsigned char) str[locstr++];
		hashval %= hash_size;
		}

	return hashval;
	}


/* ndinstal - install a name definition */

void ndinstal( name, definition )
char name[];
Char definition[];
	{
	char *copy_string();
	Char *copy_unsigned_string();

	if ( addsym( copy_string( name ),
			(char *) copy_unsigned_string( definition ), 0,
			ndtbl, NAME_TABLE_HASH_SIZE ) )
		synerr( _( "name defined twice" ) );
	}


/* ndlookup - lookup a name definition
 *
 * Returns a nil pointer if the name definition does not exist.
 */

Char *ndlookup( nd )
char nd[];
	{
	return (Char *) findsym( nd, ndtbl, NAME_TABLE_HASH_SIZE )->str_val;
	}


/* scextend - increase the maximum number of start conditions */

void scextend()
	{
	current_max_scs += MAX_SCS_INCREMENT;

	++num_reallocs;

	scset = reallocate_integer_array( scset, current_max_scs );
	scbol = reallocate_integer_array( scbol, current_max_scs );
	scxclu = reallocate_integer_array( scxclu, current_max_scs );
	sceof = reallocate_integer_array( sceof, current_max_scs );
	scname = reallocate_char_ptr_array( scname, current_max_scs );
	}


/* scinstal - make a start condition
 *
 * NOTE
 *    The start condition is "exclusive" if xcluflg is true.
 */

void scinstal( str, xcluflg )
char str[];
int xcluflg;
	{
	char *copy_string();

	/* Generate start condition definition, for use in BEGIN et al. */
	action_define( str, lastsc );

	if ( ++lastsc >= current_max_scs )
		scextend();

	scname[lastsc] = copy_string( str );

	if ( addsym( scname[lastsc], (char *) 0, lastsc,
			sctbl, START_COND_HASH_SIZE ) )
		format_pinpoint_message(
				_( "start condition %s declared twice" ),
					str );

	scset[lastsc] = mkstate( SYM_EPSILON );
	scbol[lastsc] = mkstate( SYM_EPSILON );
	scxclu[lastsc] = xcluflg;
	sceof[lastsc] = false;
	}


/* sclookup - lookup the number associated with a start condition
 *
 * Returns 0 if no such start condition.
 */

int sclookup( str )
char str[];
	{
	return findsym( str, sctbl, START_COND_HASH_SIZE )->int_val;
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久国产精华| 福利电影一区二区三区| 国产成人午夜精品5599| 色婷婷亚洲综合| 久久久亚洲综合| 日韩成人精品视频| 91尤物视频在线观看| 欧美成人aa大片| 亚洲一区二区欧美| 99综合影院在线| 久久久国产精品不卡| 日韩电影在线一区二区三区| 91行情网站电视在线观看高清版| 国产精品午夜在线观看| 精品一区二区三区视频| 欧美日韩一级视频| 亚洲一区二区成人在线观看| caoporm超碰国产精品| 国产日产欧产精品推荐色| 国内精品视频一区二区三区八戒| 欧美日本一道本| 亚洲午夜久久久久久久久电影院| 99久久精品免费看国产| 中文一区二区完整视频在线观看| 国产麻豆精品久久一二三| 日韩欧美精品三级| 激情文学综合插| 精品成人一区二区| 国产在线精品一区在线观看麻豆| 日韩欧美国产一区二区在线播放 | 久88久久88久久久| 欧美精品三级日韩久久| 日本欧美韩国一区三区| 91精品国产综合久久小美女| 欧美aⅴ一区二区三区视频| 欧美日韩国产高清一区二区三区 | 欧美精品一卡二卡| 石原莉奈在线亚洲二区| 91精选在线观看| 日日夜夜精品视频天天综合网| 欧美久久婷婷综合色| 亚洲成av人片一区二区三区 | 在线观看国产91| 亚洲一线二线三线久久久| 欧美性受极品xxxx喷水| 婷婷成人综合网| 精品日韩成人av| 成人激情文学综合网| 亚洲自拍偷拍麻豆| 欧美丰满嫩嫩电影| 蜜臀av性久久久久蜜臀aⅴ四虎 | 综合av第一页| 欧美色偷偷大香| 九九视频精品免费| 中文字幕第一区二区| 91在线观看免费视频| 午夜成人在线视频| 精品卡一卡二卡三卡四在线| 国内精品久久久久影院薰衣草 | 日韩精品一区二区三区视频播放| 九九**精品视频免费播放| 国产精品免费人成网站| 欧美亚洲愉拍一区二区| 老司机一区二区| 亚洲视频一区在线观看| 欧美精品免费视频| 成人免费电影视频| 三级久久三级久久| 欧美激情一区二区三区全黄| 欧美亚洲动漫精品| 国产成人在线观看| 亚洲精品国产无天堂网2021| 欧美电影免费观看高清完整版在线观看 | 欧美大片免费久久精品三p| 懂色av中文一区二区三区| 亚洲成av人片一区二区| 国产三级精品在线| 555www色欧美视频| 99久久精品国产网站| 久久不见久久见中文字幕免费| 国产精品久久久久婷婷二区次| 欧美一区二区精品久久911| zzijzzij亚洲日本少妇熟睡| 免费久久99精品国产| 国产精品国产精品国产专区不蜜| 日韩欧美一区二区在线视频| 在线观看视频一区二区欧美日韩| 国产精品91一区二区| 日本亚洲一区二区| 亚洲男女毛片无遮挡| 国产欧美精品一区二区色综合| 欧美丰满嫩嫩电影| 欧美综合一区二区三区| 波多野结衣精品在线| 国产一区不卡在线| 毛片一区二区三区| 视频在线观看91| 亚洲黄一区二区三区| 国产精品丝袜一区| 国产午夜精品美女毛片视频| 欧美一区日本一区韩国一区| 欧美视频在线观看一区二区| 99热在这里有精品免费| 国产99久久久久久免费看农村| 激情综合五月天| 毛片一区二区三区| 美女性感视频久久| 麻豆国产一区二区| 久久精品国产999大香线蕉| 日韩av一级片| 日本va欧美va精品发布| 日本伊人色综合网| 日韩二区三区在线观看| 蜜臀av国产精品久久久久| 亚洲第一久久影院| 亚洲成av人片一区二区三区| 性做久久久久久免费观看| 性久久久久久久| 日本不卡视频在线| 韩国一区二区视频| 国产精品一区一区| 波波电影院一区二区三区| av不卡在线观看| 91免费版在线| 欧美在线小视频| 欧美一区二区三区在线| 日韩视频在线你懂得| 2023国产一二三区日本精品2022| 久久综合国产精品| 国产精品久久久久久久浪潮网站| 国产精品传媒在线| 亚洲自拍偷拍av| 美女任你摸久久| 大陆成人av片| 在线看一区二区| 91精品国产品国语在线不卡| 欧美精品一区二区不卡| 国产精品麻豆一区二区| 亚洲成人777| 国内成人免费视频| 色乱码一区二区三区88| 欧美精品久久久久久久多人混战 | 亚洲男人的天堂在线aⅴ视频| 亚洲一区二区三区影院| 青青青伊人色综合久久| 国产精品资源在线看| 91污在线观看| 欧美一区二区视频在线观看2020 | 99riav一区二区三区| 欧美亚洲综合在线| 久久久久久97三级| 一区二区三区色| 精品中文字幕一区二区| 91麻豆精品一区二区三区| 91麻豆精品国产91久久久资源速度 | 国产成人日日夜夜| 欧美日韩在线观看一区二区 | 日韩一级免费一区| ㊣最新国产の精品bt伙计久久| 丝袜脚交一区二区| 99久久久久免费精品国产 | 国产精品久久久久久久久免费相片| 亚洲一区二区在线播放相泽| 国产精品影视天天线| 欧美日韩中文字幕精品| 中文字幕电影一区| 美女网站在线免费欧美精品| 91福利在线看| 国产精品三级久久久久三级| 毛片基地黄久久久久久天堂| 在线一区二区三区四区五区| 国产日韩欧美高清| 奇米影视一区二区三区| 一本大道av伊人久久综合| 久久九九99视频| 奇米影视一区二区三区小说| 在线免费观看视频一区| 亚洲欧洲中文日韩久久av乱码| 国产精品一区在线观看乱码| 91精品国产综合久久久久久漫画| 夜夜爽夜夜爽精品视频| 99久久99久久精品国产片果冻| 欧美大片日本大片免费观看| 日韩国产精品久久| 欧美美女bb生活片| 一个色在线综合| 日本高清不卡aⅴ免费网站| 欧美激情在线一区二区三区| 国产精品538一区二区在线| 一区二区三区不卡视频在线观看| 国产精品 欧美精品| 精品毛片乱码1区2区3区| 日韩电影网1区2区| 91精品国产高清一区二区三区| 亚洲自拍偷拍综合| 欧美日韩国产首页在线观看| 亚洲一区二区美女| 欧美精品第1页| 婷婷国产在线综合| 91精品国产欧美一区二区18|