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

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

?? preexpr.c

?? 微軟的基于HMM的人臉識別原代碼, 非常經典的說
?? C
字號:
/* preexpr.c
 *
 *	(C) Copyright Feb  2 1996, Edmond J. Breen.
 *		   ALL RIGHTS RESERVED.
 * This code may be copied for personal, non-profit use only.
 *
 */

#ifndef _STANDALONE

#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <limits.h>
#include "xalloc.h"
#include "preproc.h"

#endif


/*ppint expr(int k);*/

/* typedef unsigned long ppint;   the preprocessor integer */

typedef struct {
    union {
	long s;           /* signed value */
	unsigned long u;  /* unsigned value */
    }v;
    int type;
}ppint;
/* methods */
#define sval(x)  ((x).v.s)
#define uval(x)  ((x).v.u)
#define tval(x)  ((x).type)

#define USIGN  1
#define SIGN   2

static ppint do_binary(int tk, ppint left, ppint right);
static int getTok(int k);
static ppint EiC_expr_unary(void);
static ppint get_number(void);
static ppint EiC_ifexpr(int k);


enum { LOR = 1, LAND, BOR,  XOR,   AND,    EQ,  NEQ,  LT, LEQ,
        GT, GEQ, LSHFT, RSHFT,PLUS, MINUS, TIMES, DIV, MOD};

static char *S;
static int TK =0;

#define _StrSz_ 100

static void replaceDefines(char *S)
{
    char str[50];
    int cmode = 0;
    char *p;
    p = S;
    while(*S != '\0') {
        if(!cmode && (isalpha(*S) || *S == '_')) {
            if(S[0] == 'd' && S[1] == 'e' &&
               S[2] == 'f' && S[3] == 'i' &&
               S[4] == 'n' && S[5] == 'e' &&
               S[6] == 'd' && !isalpha(S[7]) &&
               S[7] != '_') {
                int br = 0;
                int i;
                S+=7;
                skipfws(S);
                if(*S=='(') {
                    S++;
                    br = 1;
                    skipfws(S);
                }
                i = 0;
                while(i < 50 && (isalpha(*S) || *S == '_' || isdigit(*S)))
                    str[i++] = *S++;
                str[i] = '\0';
                if(br) {
                    skipfws(S);
                    if(*S != ')') 
                        EiC_pre_error("Missing ')'");
                    else
                        S++;
                }
                if(str[0] != '\0') {
                    if(EiC_ismacroid(str) > -1)
                        *p = '1';
                    else
                        *p = '0';
                    ++p;
                } else
                    EiC_pre_error("Missing identifier");
                continue;
            } 
            do 
                *p++ = *S++;
            while(isalpha(*S) || *S == '_' );
	    continue;
        } if(*S == '\'')
            cmode = !cmode;
        *p++ = *S++;
    }
    *p = '\0';
}

static void replaceIdentifiers(char *S)
{
    int i;
    char str[50];
    char *p;
    int cmode = 0;

    p = S;    
    
    while(1) {
	while(isspace(*S))
	    *p++ = *S++;
	if(!*S)
	    return;
	if(!isalpha(*S) && *S != '_') {
	    if(isdigit(*S) || *S == '\'') { /* skip throu numbers or literals*/
		while(*S && !isspace(*S))
		    *p++ = *S++;
	    } else 
		while(*S && !isspace(*S) && *S != '_' && ispunct(*S))
		    *p++ =  *S++;
	    continue;
	}
	if(!cmode) {
	    i = 0;
	    while(i < 50 && (isalpha(*S) || *S == '_' || isdigit(*S)) )
		str[i++] = *S++;
	    str[i] = '\0';
	    if(strcmp(str,"sizeof") == 0)
		EiC_pre_error("Illegal sizeof operator");
	    else
		*p++ = '0';
	} else
	    *p++ = *S++;
    }
}


int EiC_cpp_parse(char *s)
{

    ppint res;
    S = s;
    replaceDefines(S);

#ifdef DEBUG
    printf("return [%s]\n",S);
#endif

    S = s  = EiC_process2(S,0,0);

    replaceIdentifiers(S);

#ifdef DEBUG
    printf("return [%s]\n",S);
#endif

    res = EiC_ifexpr(0);

    if(s)
        xfree(s);

    if(tval(res) == SIGN)
	return sval(res);
    else
	return uval(res);
}

static ppint EiC_ifexpr(int k)
{
    ppint res;
    int k1, tk;
    res = EiC_expr_unary();
    for(k1 = 10; k1 >= k; k1--)
	while((tk = getTok(k1))) 
	    res = do_binary(tk, res,EiC_ifexpr(k1>8?k1:k1+1));
    return res;
}

#define eval(a,l,r,op)\
{\
     if(tval(l) == SIGN)\
	 sval(a) = sval(l) op sval(r);\
     else\
	 uval(a) = uval(l) op uval(r);\
}
		 

static ppint do_binary(int tk, ppint left, ppint right)
{
    ppint r;

    if(tval(left) == USIGN || tval(right) == USIGN)
	tval(r) = tval(left) = tval(right) = USIGN;
    else
	tval(r) = tval(left) = tval(right) = SIGN;
    

	
    switch(tk) {
      case BOR: eval(r,left,right, | ); break;
      case XOR: eval(r,left,right, ^ ); break;
      case AND: eval(r,left,right, & ); break;
      case LT:  eval(r,left,right, < ); break;
      case LEQ: eval(r,left,right, <= ); break;
      case EQ:  eval(r,left,right,  == ); break;
      case NEQ: eval(r,left,right,  != ); break;
      case GT:  eval(r,left,right, > ); break;
      case GEQ: eval(r,left,right, >= ); break;
      case LOR: eval(r,left,right, || ); break;
      case LAND: eval(r,left,right, && ); break;
      case LSHFT: eval(r,left,right, << ); break;
      case RSHFT: eval(r,left,right, >> ); break; 	
      case PLUS: eval(r,left,right, + ); break;
      case MINUS: eval(r,left,right, - ); break;
      case TIMES: eval(r,left,right, * ); break;
      case DIV: eval(r,left,right, / ); break;
      case MOD: eval(r,left,right, % ); break;
    }
    return r;
}

static int getTok(int k)
{
    TK = 0;
    
    while(isspace(*S))
	S++;
	
    switch(k) {
      case 1: /* LOR */
	if(*S == '|' && *(S+1) == '|') {S+=2; TK = LOR;}
	break;
      case 2: /* LAND */
	if(*S == '&' && *(S+1) == '&') {S+=2; TK = LAND;}
      case 3: /* BOR */
	if(*S == '|' && *(S+1) != '|') {S++; TK = BOR;}
	break;
      case 4: /* XOR */
	if(*S == '^') {S++; TK = GEQ;}
	break;
      case 5: /* AND */
	if(*S == '&' && *(S+1) != '&') {S++; TK = GEQ;}
	break;
      case 6: /* EQ, NEQ */
	if(*S == '=' && *(S+1) == '=') {S+=2; TK = EQ;}
	else if(*S == '!' && *(S+1) == '=') {S+=2; TK = NEQ;}
	break;
      case 7: /* LT, LEQ, GT, GEQ */
	if(*S == '<') {
	    S++;
	    if(*S == '='){S++;TK = LEQ;}
	    else TK = LT;
	} else if(*S == '>') {
	    S++;
	    if(*S == '='){S++; TK = GEQ;}
	    else TK = GT;
	}
	break;
      case 8:  /* LSHFT, RSHFT */
	if(*S == '<' && *(S+1) == '<') {S+=2; TK = LSHFT;}
	else if(*S == '>' && *(S+1) == '>') {S+=2; TK = RSHFT;}
	break;
      case 9: /* PLUS, MINUS */
	if(*S == '-') {S++;TK = MINUS;}
	else if(*S == '+') {S++; TK = PLUS;}
	break;
      case 10: /* TIMES, DIV, MOD */
	if(*S == '*') {S++;TK = TIMES;}
	else if(*S == '/') {S++; TK = DIV;}
	else if(*S == '%') {S++; TK = MOD;}
	break;
    }
    return TK;
}

static int get_oct(int x)
{
    return x>='0'&&x<='7'? x-'0':-1;
}

static int get_hex(int x)
{
    
    if (x >= '0' && x <= '9')
	x -= '0';
    else if (x >= 'a' && x <= 'f')
	 x = x - 'a' + 10;
    else if (x >= 'A' && x <= 'F')
	x = x - 'A' + 10;
    else
	x = -1;
    return x;
}

static int get_dec(int x)
{
    return x >= '0' && x <= '9' ? x-'0':-1;
}


static ppint get_number()   /* collect hex, octal and decimal integers */
{
    int (*f)(int x);
    int radix,val;
    ppint res = {{0},SIGN};

    if(*S == '0') {
	S++;
	if(*S == 'x' || *S == 'X') { /* get hex number */
	    S++;
	    radix = 16;
	    f = get_hex;
	} else { /* get octal number */
	    radix = 8;
	    f = get_oct;
	}
    } else { /* get decimal number */
	radix = 10;
	f = get_dec;
    }
    while((val = (*f)(*S++)) >= 0)
	uval(res) = uval(res) * radix + val;
    S--;

    if(uval(res) > LONG_MAX)
	tval(res) = USIGN;
    
    /* check for prefix */    
    if(*S=='u' || *S=='U') {
	S++;
	tval(res) = USIGN;
    } if(*S=='l' || *S=='L')
	S++;
    return res;
}
	

static int get_charConst()
{
    
    int c;
    switch (*S) {
      case 'n': c = '\n'; break; /* newline */
      case 't': c = '\t'; break; /* tabspace */
      case 'v': c = '\v'; break; /* vertical tab */
      case 'b': c = '\b'; break; /* backspace */
      case 'r': c = '\r'; break; /* carriage return */
      case 'f': c = '\f'; break; /* formfeed */
      case 'a': c = '\a'; break; /* bell */
      case '\\': c = '\\'; break; /* backslash */
      case '\'': c = '\''; break; /* single quote */
      case '"': c = '\"'; break; /* double quote */
      case 'x':			/* string of hex characters */
      case 'X':{
	  int i, val = 0;
	  S++;
	  while ((i = get_hex(*S)) > -1) {
	      S++;
	      val = val * 16 + i;
	  }
	  if (val > 255)
	      EiC_pre_error("Illegal character hex value");
	  c = val;
      }
	break;
      default:
	if (isdigit(*S)) {	/* treat as octal characters */
	    int i, val = 0;
	    while ((i = get_oct(*S)) > -1) {
		val = val * 8 + i;
		S++;
	    }
	    if (val > 255)
		EiC_pre_error("Illegal character octal value");
	    c = val;
	} else {
	    EiC_pre_error("Illegal character escape sequence `\\%c'", *S);
	    c = *S++;
	}
	break;
    }
    return c;
}

static ppint EiC_expr_unary()
{
    ppint res;
    
    while(isspace(*S))
	S++;
    if(isdigit(*S)) {
	res = get_number();
    } else if( *S == '(') {
	S++;
	res = EiC_ifexpr(0);
	if(*S != ')')
	    EiC_pre_error("Unbalanced parenthesis");
	S++;
    } else if(*S == '!') {
	S++;
	res = EiC_expr_unary();
	uval(res) = !uval(res);
    } else if(*S == '-') {
	S++;
	if(*S == '-')
	    EiC_pre_error("-- not allowed in operand of #if");
	res = EiC_expr_unary();	
	tval(res) = SIGN;
	sval(res) = -uval(res);
    } else if(*S == '+') {
	S++;
	if(*S == '+')
	    EiC_pre_error("++ not allowed in operand of #if");
	res = EiC_expr_unary();
    } else if(*S == '~') {
	S++;
	res = EiC_expr_unary();
	uval(res) = ~uval(res);
    } else if(*S == '\'') { /* char constants */
	S++;
	if(*S == '\\') {
	    S++;
	    uval(res) = get_charConst();
	} else
	    uval(res) = *S++;
	if(*S != '\'')
	    EiC_pre_error("Missing closing single quote '");
	else
	    S++;
	tval(res) = SIGN;
    } else
	EiC_pre_error("Illegal constant expression");
    return res;
}








?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品免费视频| 国产精品白丝jk白祙喷水网站| 成人黄色一级视频| 天堂蜜桃91精品| 国产欧美日韩不卡免费| 丝袜美腿亚洲色图| 国产suv精品一区二区883| 日韩av网站免费在线| 午夜精品免费在线| 日本欧美加勒比视频| 91丨国产丨九色丨pron| av在线不卡电影| 色综合亚洲欧洲| 91在线免费播放| 在线欧美日韩精品| 在线精品视频免费播放| 久久精品亚洲国产奇米99| 337p日本欧洲亚洲大胆精品| 精品捆绑美女sm三区| 精品久久久久久最新网址| 亚洲一卡二卡三卡四卡无卡久久| 亚洲综合一区二区精品导航| 丁香亚洲综合激情啪啪综合| 自拍偷拍亚洲欧美日韩| 国产农村妇女毛片精品久久麻豆 | 国产精品护士白丝一区av| 国产亚洲视频系列| 精品在线播放免费| 国产麻豆成人精品| 91香蕉视频mp4| 国产精品蜜臀av| 亚洲第一主播视频| 精品一区中文字幕| 欧美巨大另类极品videosbest| 精品伦理精品一区| 久久精品国产99国产精品| av不卡免费在线观看| 中文字幕av在线一区二区三区| 亚洲午夜羞羞片| 狠狠色丁香久久婷婷综合_中| bt7086福利一区国产| 亚洲欧洲av色图| 久久精品噜噜噜成人88aⅴ| 日韩午夜激情视频| 亚洲欧美一区二区三区国产精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产成人精品免费网站| 正在播放亚洲一区| 国产精品高潮久久久久无| 成人丝袜18视频在线观看| 欧美一二三区在线观看| 久久99国产精品尤物| 26uuu另类欧美| 国产91丝袜在线播放| 亚洲日本欧美天堂| 7777精品伊人久久久大香线蕉的| 日本中文字幕一区二区视频| 亚洲精品在线电影| 日韩精品欧美精品| 国产夜色精品一区二区av| 不卡视频免费播放| 国产一区二区三区视频在线播放| 日本一区二区视频在线观看| 91国产免费观看| 欧美国产日韩一二三区| 色婷婷一区二区| 欧美高清在线精品一区| 99精品久久99久久久久| 亚洲成a人v欧美综合天堂| 精品国产91亚洲一区二区三区婷婷 | 久久网这里都是精品| 99国产精品久| 美腿丝袜亚洲三区| 中文字幕一区二区三区在线观看 | 91丨九色丨蝌蚪丨老版| 午夜在线成人av| 久久久美女毛片| 日本不卡一二三区黄网| 欧美性色黄大片手机版| 亚洲欧美日本在线| 欧美一区国产二区| 麻豆视频一区二区| 中文字幕视频一区二区三区久| 欧美另类久久久品| 不卡的av网站| 韩国视频一区二区| 午夜精品久久久久| 中文字幕一区在线| 日韩亚洲欧美在线观看| 91同城在线观看| 国产一区二三区| 日韩成人av影视| 一区二区三区日本| 这里只有精品视频在线观看| av亚洲精华国产精华精华| 麻豆成人av在线| 亚洲一区二区三区在线播放| 久久精品欧美日韩| 精品三级av在线| 欧美日韩精品电影| 久久精品国产精品亚洲综合| 一区二区三区四区五区视频在线观看 | 国产日韩欧美综合一区| 日韩一区二区三区在线观看| 色噜噜久久综合| 99精品久久久久久| av在线不卡电影| voyeur盗摄精品| 国产福利一区二区三区视频| 韩国一区二区视频| 91福利精品视频| 丁香啪啪综合成人亚洲小说 | 亚洲一区视频在线观看视频| 国产精品久久久久一区二区三区共| 久久蜜桃一区二区| 久久精品人人爽人人爽| 久久美女艺术照精彩视频福利播放| 欧美tickling挠脚心丨vk| 欧美一区二区三区在线看| 欧美精品高清视频| 欧美一区二区三区四区在线观看| 欧美日韩午夜影院| 激情综合网av| 国产又黄又大久久| 成人一区二区三区| 99视频在线精品| 91久久精品一区二区二区| 欧洲国内综合视频| 91精品国产综合久久香蕉的特点| 在线看不卡av| 欧美一区在线视频| 久久综合中文字幕| 欧美国产丝袜视频| 亚洲精品国产无套在线观| 同产精品九九九| 国产乱色国产精品免费视频| 国产成人亚洲综合a∨猫咪| 成人av资源在线观看| 91理论电影在线观看| 欧美性videosxxxxx| 日韩欧美视频一区| 欧美三级视频在线| 欧美一区中文字幕| 国产欧美一区视频| 伊人婷婷欧美激情| 久草热8精品视频在线观看| 国产成人综合自拍| 欧美三级中文字| 久久综合一区二区| 一区二区在线观看免费| 麻豆精品精品国产自在97香蕉 | bt欧美亚洲午夜电影天堂| 欧美军同video69gay| 欧美精品一区男女天堂| 亚洲欧美另类久久久精品2019| 日韩中文字幕91| 成人黄色免费短视频| 884aa四虎影成人精品一区| 青青草原综合久久大伊人精品| 国产一区亚洲一区| 在线观看成人小视频| 久久久久久99久久久精品网站| 亚洲精品免费一二三区| 国产乱人伦偷精品视频免下载 | 风间由美一区二区三区在线观看 | 国产成人在线视频网址| 欧美亚洲日本一区| 国产日产亚洲精品系列| 天堂av在线一区| 99re热视频精品| 久久综合中文字幕| 日韩和欧美一区二区三区| www.亚洲激情.com| 欧美电影免费观看高清完整版| 亚洲综合免费观看高清完整版| 国产一区二区免费视频| 欧美区在线观看| 国产精品久久久一区麻豆最新章节| 日本亚洲一区二区| 欧美亚洲图片小说| 亚洲男女毛片无遮挡| 丰满岳乱妇一区二区三区| 精品国产免费久久 | 亚洲精品中文字幕乱码三区| 国内久久婷婷综合| 日韩一级免费观看| 亚洲va国产va欧美va观看| 91在线观看一区二区| 国产亚洲精品福利| 国内久久婷婷综合| 精品国产免费人成电影在线观看四季| 无码av中文一区二区三区桃花岛| 91丨九色丨国产丨porny| 中文字幕中文字幕一区二区| 国产成人aaa| 中文一区二区在线观看| 高清不卡一区二区| 国产精品久久久久影院色老大| 成人app在线观看| 国产精品伦一区|