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

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

?? syntax.cc

?? 功能較全面的反匯編器:反匯編器ht-2.0.15.tar.gz
?? CC
?? 第 1 頁 / 共 2 頁
字號:
/*  *	HT Editor *	syntax.cc * *	Copyright (C) 1999-2002 Stefan Weyergraf * *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License version 2 as *	published by the Free Software Foundation. * *	This program is distributed in the hope that it will be useful, *	but WITHOUT ANY WARRANTY; without even the implied warranty of *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *	GNU General Public License for more details. * *	You should have received a copy of the GNU General Public License *	along with this program; if not, write to the Free Software *	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include <ctype.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include "except.h"extern "C" {#include "regex.h"}#include "syntax.h"#include "htpal.h"bool regmatch(char *str, regex_t *preg, int *len){// FIXME: use REG_STARTEND ? non-POSIX but could be pretty useful.	regmatch_t m;	int r=regexec(preg, str, 1, &m, 0);	if ((r==0) && (m.rm_so==0)) {		if (len) *len=m.rm_eo-m.rm_so;		return true;	}	return false;}bool match_sorted_stringtable(char *s, uint slen, const char **strings, uint strings_count){	int a=0, b=strings_count-1;	int m;	while (a <= b) {		m = (a+b) >> 1;		uint x = strlen(strings[m]);		if (slen > x) x = slen;		int d = ht_strncmp(s, strings[m], x);		if (d < 0) {			b = m-1; 		} else if (d > 0) {			a = m+1; 		} else {			return true;		}	}	return false;}/* *	CLASS ht_syntax_lexer */void ht_syntax_lexer::config_changed(){}/* *	CLASS ht_lang_syntax_lexer */#define LSTSET(state) (1<<(state))#define SL_RULE_ANYCHAR(needstates, token)\	{ needstates,\	  false, LRST_ANYCHAR, NULL, 0, token }#define SL_RULE_LINEEND(needstates, state)\	{ needstates,\	  false, LRST_REGEX, "$", state, 0 }void ht_lang_syntax_lexer::init(syntax_lexer_rule *lr){	ht_syntax_lexer::init();	set_lexer_rules(lr);}void ht_lang_syntax_lexer::done(){	free_lexer_rules();	ht_syntax_lexer::done();}void ht_lang_syntax_lexer::free_lexer_rules(){	for (int i=0; i<lexer_rules_count; i++) {		if (lexer_rules[i].string_type==LRST_REGEX) {			regfree((regex_t*)lexer_rules_precompiled[i]);			free(lexer_rules_precompiled[i]);		} else {		}	}	free(lexer_rules_precompiled);}lexer_token ht_lang_syntax_lexer::gettoken(void *b, uint buflen, text_pos p, bool start_of_line, lexer_state *ret_state, uint *ret_len){	syntax_lexer_rule *lr=lexer_rules;	char *buf = (char*)b;	int i=0;	while (lr->needstate) {		if ((lr->needstate & LSTSET(*ret_state)) &&		(!lr->need_line_start || start_of_line)) {			int l=0;			bool matched=false;			bool preserve_state=false;			switch (lr->string_type) {				case LRST_ANYCHAR: {					if (buflen>0) l=1;					break;				}				case LRST_WHITESPACE: {//					if ((buflen>0) && ((byte)*buf<=32)) l=1;					if ((buflen>0) && ((*buf==32) || (*buf=='\t'))) l=1;					break;				}				case LRST_STRING: {					uint sl = strlen(lr->string);					if ((buflen >= sl) && (memcmp(buf, lr->string, sl)==0)) {						l = sl;					}					break;				}				case LRST_STRING_EXPECT: {/*                    	char *q = strstr(buf, lr->string);					if (q) {						l=q-buf+strlen(lr->string);					} else {						l = strlen(buf);						preserve_state=true;					}*/					break;				}				case LRST_REGEX: {#if 0					if /*(*/(strcmp(lr->string, "$")==0)/* && (buflen>0))*/ {						matched=true;					} else if (regmatch(buf, (regex_t*)lexer_rules_precompiled[i], &l)) {					}#else					if (strcmp(lr->string, "$") == 0) {						matched = (buflen == 0);					} else if (regmatch(buf, (regex_t*)lexer_rules_precompiled[i], &l)) {					}#endif					break;				}				case LRST_CHARSET: {					if (buflen) {						if (*buf && (strchr(lr->string, *buf))) l=1;					}					break;				}				case LRST_IDENTIFIER: {					if (isalpha(*buf) || *buf == '_') {						char *b = buf+1;						while (isalnum(*b) || *b == '_') b++;						l = b-buf;					}					break;				}				case LRST_DQSTRING: {					if (*buf == '"') {						char *b = buf+1;						while (*b && (*b != '"')) b++;						if (*b == '"') l = b+1-buf;					}					break;				}				case LRST_QSTRING: {					if (*buf == '\'') {						char *b = buf+1;						while (*b && (*b != '\'')) b++;						if (*b == '\'') l = b+1-buf;					}					break;				}				case LRST_EMPTY:					break;			}			if (matched || l) {				if (lr->state && !preserve_state) *ret_state=lr->state;				*ret_len=l;				return lr->token;			}		}		lr++;		i++;	}/* error, no rule matched... */	if (buflen) {		*ret_len=1;		return geterrortoken();	}	*ret_len=0;	return 0;}void ht_lang_syntax_lexer::set_lexer_rules(syntax_lexer_rule *lr){	lexer_rules=lr;		lexer_rules_count=0;	while (lexer_rules[lexer_rules_count].needstate) {		lexer_rules_count++;	}	lexer_rules_precompiled = ht_malloc(sizeof (void**) * lexer_rules_count);	for (int i=0; i < lexer_rules_count; i++) {		if (lexer_rules[i].string_type==LRST_REGEX) {			regex_t *preg = ht_malloc(sizeof (regex_t));			/* add an anchor in front of regex */			int rl = strlen(lexer_rules[i].string)+1;			char *regex = ht_malloc(1+rl);			*regex='^';			memcpy(regex+1, lexer_rules[i].string, rl);						if (regcomp(preg, regex, REG_EXTENDED))				throw Exception();							free(regex);						lexer_rules_precompiled[i]=preg;		} else {			lexer_rules_precompiled[i]=NULL;		}	}}/* *	CLASS ht_c_syntax_lexer *//* C lexer states */#define LEX_CST_NORMAL			1#define LEX_CST_STRING			2#define LEX_CST_PREPROCESS		3#define LEX_CST_COMMENT			4#define LEX_CST_COMMENT_EOL        5/* C lexer tokens */#define LEX_CTOK_ERROR			1#define LEX_CTOK_WHITESPACE		2#define LEX_CTOK_COMMENT			3#define LEX_CTOK_PREPROCESS		4#define LEX_CTOK_IDENTIFIER		5#define LEX_CTOK_RIDENTIFIER		6#define LEX_CTOK_NUMBER			7#define LEX_CTOK_FNUMBER			8#define LEX_CTOK_STRING			9#define LEX_CTOK_CHAR			10#define LEX_CTOK_SYMBOL			11syntax_lexer_rule c_syntax_lexer_rules[]={/* preprocessor directives */	{ LSTSET(LEX_CST_NORMAL),	  true, LRST_REGEX, " *#", LEX_CST_PREPROCESS, LEX_CTOK_PREPROCESS },	SL_RULE_LINEEND(LSTSET(LEX_CST_PREPROCESS), LEX_CST_NORMAL),	SL_RULE_ANYCHAR(LSTSET(LEX_CST_PREPROCESS), LEX_CTOK_PREPROCESS),/* whitespaces */	{ LSTSET(LEX_CST_NORMAL),	  false, LRST_WHITESPACE, NULL, 0, LEX_CTOK_WHITESPACE },/* '/ *' - '* /' multiline comments */	{ LSTSET(LEX_CST_NORMAL) | LSTSET(LEX_CST_PREPROCESS),	  false, LRST_STRING, "/*", LEX_CST_COMMENT, LEX_CTOK_COMMENT },	{ LSTSET(LEX_CST_COMMENT),	  false, LRST_STRING, "*/", LEX_CST_NORMAL, LEX_CTOK_COMMENT },	SL_RULE_ANYCHAR(LSTSET(LEX_CST_COMMENT), LEX_CTOK_COMMENT),/* "..." (multiline) strings */	{ LSTSET(LEX_CST_NORMAL),	  false, LRST_STRING, "\"", LEX_CST_STRING, LEX_CTOK_STRING },	{ LSTSET(LEX_CST_STRING),	  false, LRST_STRING, "\\\"", LEX_CST_STRING, LEX_CTOK_STRING },	{ LSTSET(LEX_CST_STRING),	  false, LRST_STRING, "\"", LEX_CST_NORMAL, LEX_CTOK_STRING },	SL_RULE_ANYCHAR(LSTSET(LEX_CST_STRING), LEX_CTOK_STRING),/* '//' one line comments */	{ LSTSET(LEX_CST_NORMAL) | LSTSET(LEX_CST_PREPROCESS),	  false, LRST_STRING, "//", LEX_CST_COMMENT_EOL, LEX_CTOK_COMMENT },	SL_RULE_LINEEND(LSTSET(LEX_CST_COMMENT_EOL), LEX_CST_NORMAL),	SL_RULE_ANYCHAR(LSTSET(LEX_CST_COMMENT_EOL), LEX_CTOK_COMMENT),/* symbols */	{ LSTSET(LEX_CST_NORMAL),	  false, LRST_CHARSET, "(){};,.[]!~%+-/*=<>|&^?:", 0, LEX_CTOK_SYMBOL },/* identifiers */	{ LSTSET(LEX_CST_NORMAL),	  false, LRST_IDENTIFIER, NULL, 0, LEX_CTOK_IDENTIFIER },/* floats */	{ LSTSET(LEX_CST_NORMAL),	  false, LRST_REGEX, "[0-9]+\\.[0-9]+(e[+-]?[0-9]+)?", 0, LEX_CTOK_FNUMBER },/* numbers */	{ LSTSET(LEX_CST_NORMAL),	  false, LRST_REGEX, "0[xX][0-9a-fA-F]+", 0, LEX_CTOK_NUMBER },	{ LSTSET(LEX_CST_NORMAL),	  false, LRST_REGEX, "[0-9]+", 0, LEX_CTOK_NUMBER },/* chars */	{ LSTSET(LEX_CST_NORMAL),	  false, LRST_REGEX, "'[^'\\]'", 0, LEX_CTOK_CHAR },	{ LSTSET(LEX_CST_NORMAL),	  false, LRST_REGEX, "'\\\\.{1,3}'", 0, LEX_CTOK_CHAR },/**/	{ 0, 0, LRST_EMPTY, false, false, 0 }};const char *c_reserved[]={/* types */	"bool", "char", "void", "int", "short", "long",	"unsigned", "signed", "float", "double",/* consts */	"true", "false",/* statements */	"return", "if", "else", "while", "do", "goto", "asm",	"switch", "case", "default", "break", "continue", "for",/* object */	"new", "delete", "this",/* declarations */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91福利资源站| 亚洲第一福利一区| 亚洲综合一区在线| 国产美女一区二区三区| 在线观看免费成人| 国产精品久久久久影院色老大| 日本中文字幕不卡| 欧美怡红院视频| 国产精品久久久久久久午夜片| 美女视频黄频大全不卡视频在线播放| 欧美唯美清纯偷拍| 国产精品妹子av| 激情成人午夜视频| 日韩欧美亚洲另类制服综合在线 | 亚洲另类在线视频| 懂色av中文一区二区三区| 精品国产一区久久| 日韩精品一级中文字幕精品视频免费观看 | 精品视频全国免费看| 1区2区3区国产精品| 大胆亚洲人体视频| 中文在线资源观看网站视频免费不卡 | 国产精品一区二区男女羞羞无遮挡| 在线播放国产精品二区一二区四区| 亚洲人精品午夜| 本田岬高潮一区二区三区| 亚洲国产精品高清| 99久久久无码国产精品| 国产精品另类一区| 成人手机在线视频| 亚洲国产精品av| 99国产精品久久| 亚洲制服丝袜在线| 精品污污网站免费看| 婷婷久久综合九色综合绿巨人| 欧美日韩一级片在线观看| 午夜久久久影院| 欧美一区二区视频免费观看| 免费看日韩精品| 久久久久久久久伊人| 成人免费看的视频| 亚洲美女淫视频| 欧美三级日韩三级国产三级| 亚洲成人免费影院| 日韩视频一区二区在线观看| 久久精品999| 欧美国产一区二区在线观看| 99久久久久久| 亚洲国产成人tv| 日韩欧美国产一区二区三区| 国产精品自拍毛片| 亚洲精品成人悠悠色影视| 337p亚洲精品色噜噜| 经典三级一区二区| 国产精品美女久久久久久久久久久| 99久久婷婷国产综合精品电影| 亚洲一区二区在线免费观看视频| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲一区二区三区精品在线| 3atv一区二区三区| 国产成人精品免费一区二区| 一区二区三区在线播放| 911国产精品| 成人在线视频一区二区| 亚洲一二三四区不卡| 精品理论电影在线观看 | 亚洲激情第一区| 精品国产电影一区二区| 91色综合久久久久婷婷| 蜜桃视频一区二区三区在线观看 | 日韩欧美成人激情| 91热门视频在线观看| 捆绑调教一区二区三区| 一区二区在线观看不卡| 久久―日本道色综合久久| 欧美在线视频不卡| 国产成人在线观看| 亚洲动漫第一页| 中文字幕成人网| 日韩欧美三级在线| 欧美三区在线观看| 国产白丝精品91爽爽久久| 日本免费新一区视频| 亚洲人精品午夜| 国产欧美日韩综合| 欧美xxx久久| 在线播放91灌醉迷j高跟美女| 99久久综合精品| 国产一区二区福利| 欧美aⅴ一区二区三区视频| 一区二区三区在线播放| 国产精品妹子av| 国产亚洲制服色| 精品国产露脸精彩对白| 欧美麻豆精品久久久久久| 97精品视频在线观看自产线路二| 国产成人精品免费视频网站| 激情综合色播五月| 麻豆精品一区二区三区| 日韩和欧美的一区| 亚洲成在人线免费| 一区2区3区在线看| 最新中文字幕一区二区三区| 欧美国产欧美综合| 国产午夜精品久久久久久免费视| 日韩精品一区二区三区四区视频| 91精品国产综合久久福利| 欧美性猛交xxxxxx富婆| 色成年激情久久综合| 91麻豆免费看片| 91丝袜美腿高跟国产极品老师 | 国产精品中文字幕日韩精品| 日本在线不卡一区| 日本成人在线视频网站| 蜜臀a∨国产成人精品| 久久成人免费电影| 精品一区二区三区视频在线观看| 蜜臀精品一区二区三区在线观看| 奇米精品一区二区三区在线观看| 免费观看91视频大全| 久久激情五月激情| 国产成人亚洲综合色影视| 成人国产在线观看| 色综合中文字幕国产 | 精品视频一区三区九区| 欧美高清性hdvideosex| 日韩你懂的在线播放| 国产亚洲综合在线| 亚洲欧美色一区| 五月激情六月综合| 精品一二线国产| 成人性生交大片免费看在线播放| 不卡视频免费播放| 欧美性三三影院| 久久久久久日产精品| 国产亚洲一区字幕| 亚洲视频免费在线| 视频在线观看91| 国产精品一区二区三区网站| 99免费精品视频| 91精品午夜视频| 国产精品国产馆在线真实露脸| 亚洲综合视频在线| 国产一区二区三区国产| 91麻豆精品一区二区三区| 欧美精品 日韩| 国产精品色一区二区三区| 亚洲第一久久影院| 国产成a人亚洲| 欧美猛男超大videosgay| 精品国产sm最大网站免费看| 亚洲欧美综合网| 蜜桃av一区二区| 色噜噜狠狠色综合中国| 久久这里只精品最新地址| 亚洲伦理在线精品| 国产盗摄视频一区二区三区| 欧美日韩精品一区视频| 欧美国产激情一区二区三区蜜月| 午夜免费久久看| 91在线无精精品入口| 精品国产乱码久久久久久浪潮 | 欧美色综合影院| 国产女同性恋一区二区| 婷婷开心久久网| 一本一道波多野结衣一区二区| 久久综合一区二区| 日韩不卡一区二区三区| 色综合久久99| 亚洲国产精品激情在线观看 | 久久亚洲综合色一区二区三区| 亚洲乱码日产精品bd| 岛国精品在线观看| 欧美成人激情免费网| 婷婷中文字幕一区三区| 色一情一乱一乱一91av| 中文字幕一区二区三区四区不卡 | 成人av综合一区| 欧美精品一区二区三区高清aⅴ| 亚洲成人免费看| 在线观看亚洲精品| 亚洲精品中文在线影院| 成人黄色网址在线观看| 2021国产精品久久精品| 美女网站在线免费欧美精品| 91.麻豆视频| 日日欢夜夜爽一区| 欧美女孩性生活视频| 亚洲国产精品久久人人爱蜜臀 | 五月婷婷另类国产| 欧美日韩亚洲丝袜制服| 亚洲一区精品在线| 欧美午夜精品久久久久久超碰| 亚洲免费在线视频一区 二区| av电影在线不卡| 亚洲精品美腿丝袜| 欧美中文字幕久久| 亚洲成人激情av| 91精品国产一区二区| 久久99精品视频|