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

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

?? ccx.c

?? 編譯器的辭法分析器工具
?? C
字號:
/*   parser suite - and / or / nothing / something  parsers   parser = [token] -> ([token],status)       implemented as sideeffecting on [token], returns status.*/# include "ccx.h"static PARAM a0[MAXARGS], *a=a0;        /* holds parameters */STATUS p_errparse0 ()/* I'm just here to help detect errors */{    fprintf(stderr,"An unspecified parser has been called. Aborting.\n");    p_exit(100);        /* this is never called */    return FAILURE;}VOID callerror(m)/* aux: for diagnosing errors in the CALL macro */int m;{    printf("error: too many (%d) args in CALL\n",m-1);    p_exit(100);}STATUS p_andparse0n (PARSER *p, ...)/*Serial composition of parsers. Doesfirst p then q. Put p's instructions on thetop of the program stack, then layer q's aboveit.This version has full rewind of the input stream onfailure, but this can be altered to single tokenlookahead by deleting the line of code marked.*/{    static PARSER *q=p_errparse0;    va_list ap;    static int m;    static status  tok;    MARK;    va_start(ap,p);    m=va_arg(ap,int);    a=(PARAM*)ap; /* very NON-PORTABLE, but it's fast */    ap=(va_list)&a[m];    m++;    switch(m-1) {    case 0: tok=(*p)();break;    case 1: tok=(*p)(a[0]);break;    case 2: tok=(*p)(a[0],a[1]);break;    case 3: tok=(*p)(a[0],a[1],a[2]);break;    case 4: tok=(*p)(a[0],a[1],a[2],a[3]);break;    case 5: tok=(*p)(a[0],a[1],a[2],a[3],a[4]);break;    case 6: tok=(*p)(a[0],a[1],a[2],a[3],a[4],a[5]);break;    case 7: tok=(*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6]);break;    case 8: tok=(*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);break;    case 9: tok=(*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);break;    case 10: tok=(*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);break;    case 11: tok=(*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10]);break;    case 12: tok=(*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11]);             break;    case 13: tok=(*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],             a[12]);break;    case 14: tok=(*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],             a[12],a[13]);break;    case 15: tok=(*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],             a[12],a[13],a[14]);break;    case 16: tok=(*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11],             a[12],a[13],a[14],a[15]);break;    default: callerror(m);    }    if (BADSTATUS (tok)) {        va_end(ap);        RELEASE;        return tok;    }    q = va_arg(ap,PARSER*);     CALL(tok=(*q),m,a);    va_end(ap);    if (BADSTATUS (tok))    /* error */    {        REWIND;        /* remove this line for 1-token LA parsing */        return tok;    /* fail */    }    pushDECR;    RELEASE;    return tok;        /* succeed */}STATUS p_starparse0n (VALUE *x,PARSER *p, ...)/*Monadic composition of parsers. Doesfirst p then q, where q can use x, which is the address of p's result.Assume that q knows that x is an address!Put p's instructions on thetop of the program stack, then layer q's above it.This version has full rewind of the input stream onfailure, but this can be altered to single tokenlookahead by deleting the line of code marked.*/{    static PARSER *q=p_errparse0;    va_list ap;    static int m;    static PARAM *a;    static status  tok;    MARK;    va_start(ap,p);    CALL(tok=(*p),m,a);        if (BADSTATUS(tok)) {        va_end(ap);        RELEASE;        return tok;    }    /* I intend that x be local so that if we later fail, this     * value will disappear */    *x = (VALUE)INSTATUS(tok);    q = va_arg(ap,PARSER*);        CALL(tok=(*q),m,a);        va_end(ap);        if (BADSTATUS (tok))    /* error */        {            REWIND;        /* remove this line for 1-token LA parsing */            return tok;    /* fail */        }            pushDECR;        RELEASE;        return tok;        /* succeed */}STATUS   p_until0n(PARSER *p, ...)/* skip until p succeeds. This should be the same as    foo = p | ? foo . */{    va_list ap;    static STATUS tok;     static int m;    while (*pstr) {        va_start(ap,p);        CALL(tok=(*p),m,a);        va_end(ap);        if GOODSTATUS (tok)            return tok;        MOVEON;    }    return FAILURE;}STATUS p_orparse0n (PARSER *p, ...)/*alternate composition of parsers. Tries p first,and if it doesnt work, tries q. Code correspondingto the successful parse is placed on the program stack.If both fail, the routine relies on p and q's auto-rewindmechanisms to do the rewind for it.*/{    va_list ap;    static PARSER *q=p_errparse0;    static int m;    static status  tok;    va_start(ap,p);        CALL(tok=(*p),m,a);    if (BADSTATUS (tok))    /* error */    {        q = va_arg(ap,PARSER*);            CALL(tok=(*q),m,a);    }    va_end(ap);    return tok;        /* succeed */}STATUS  p_hidden0n (PARSER *p, ...)/*parser which tries p, but doesnt moveon, just reports the resultof p.*/{    static va_list ap;    static int m;    static status tok;    MARK;    va_start(ap,p);    CALL(tok=(*p),m,a);    va_end(ap);            REWIND;    if (GOODSTATUS(tok)) {       pushVALUE(p_hidden0n);    }    return tok;}STATUS  p_option0n (PARSER *p, ...)/*parser which tries p, but doesnt worry if p fails,just rewinds and considers itself happy with nothing at all.*/{    static va_list ap;    static int m;    static status tok;    va_start(ap,p);    CALL(tok=(*p),m,a);    va_end(ap);    if (GOODSTATUS(tok))        return tok;    pushINCR;    return(SUCCESS);}STATUS  p_many0n (PARSER *p, ...){    static    va_list(ap);    static status tok;    int repeat=0;    static int m;/* to use this from a function which has parameters foo,m,a1,...,am   use va_start(ap,foo) and call us */loop:    va_start(ap,p);    CALL(tok=(*p),m,a);    va_end(ap);    if (GOODSTATUS(tok)) {        repeat++;        goto loop;    }# ifdef STACKMANIPS    switch(repeat)    {        case 0: pushINCR; break;        case 1: break;        default:pushMANIP(repeat-1);    }# endif    return SUCCESS;}STATUS p_uerror0n (PARSER *p, ...){    static va_list(ap);    static int m;        va_start(ap,p);        m=va_arg(ap,int);        a=(PARAM*)ap;        ap=(va_list)&a[m];        /*m++; ?*/        p_entry = p;  /* set the btck_error reentry pt */        p_enargs= m;        memcpy(p_eargv, a, m * sizeof(PARAM));        va_end(ap);        pushEXIT;        pc=0;        pc=p_evaluate ();        pc=0;   /* we have to write the next program in the right place */        if (yytchar!=EOF && 0==*pstr) /* then we can ask */            /* if (getatoken(buffer,lvbuff)==0) */            if (get1token() != EOF)            {                /* now we restart */                realignbuffer();            }        passcount++;        return SUCCESS;}STATUS  p_iter0n (int repeat, PARSER *p, ...){    static va_list(ap);    static int m;    static status tok;    static int k;    MARK;    k = repeat;    while(k-->0){        va_start(ap,p);        CALL(tok=(*p),m,a);        va_end(ap);        if (BADSTATUS(tok)) {            REWIND;            return FAILURE;        }    }# ifdef STACKMANIPS    switch(repeat)    {        case 0: pushINCR; break;        case 1: break;        default:pushMANIP(repeat-1);    }# endif    RELEASE;    return SUCCESS;}STATUS p_prepend0n (ACTION *f, ...){    static PARSER *p;    static status tok;    static int m;    va_list(ap);    MARK;    va_start(ap,f);        m=va_arg(ap,int);        a=(PARAM*)ap;        ap=(va_list)&a[m];        m++;    while(--m>0)           pushPARAM(a[m-1]);    pushACTION(f);    p = va_arg(ap,PARSER *);    CALL(tok=(*p),m,a);    va_end(ap);    if (GOODSTATUS(tok)){        RELEASE;        return tok;    }    REWIND;    return tok;}STATUS  p_some0n (PARSER *p, ...)/*At least one repetition of parser p*/{    static va_list(ap);    int m;    status  tok;    va_start(ap,p);    /* this should really be a call of p_many0v(p,ap) */    CALL(tok=(*p),m,a);    va_end(ap);                if (GOODSTATUS(tok)) {        switch(m-1){        case 0: tok = p_many0n (p,0); break;        case 1: tok = p_many0n (p,1,a[0]); break;        case 2: tok = p_many0n (p,2,a[0],a[1]); break;        case 3: tok = p_many0n (p,3,a[0],a[1],a[2]); break;        case 4: tok = p_many0n (p,4,a[0],a[1],a[2],a[3]); break;        case 5: tok = p_many0n (p,5,a[0],a[1],a[2],a[3],a[4]); break;        case 6: tok = p_many0n (p,6,a[0],a[1],a[2],a[3],a[4],a[5]); break;        case 7: tok = p_many0n (p,7,a[0],a[1],a[2],a[3],a[4],a[5],a[6]); break;        case 8: tok = p_many0n (p,8,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);                break;        case 9: tok = p_many0n (p,9,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],                a[8]); break;        case 10:tok = p_many0n (p,10,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],                a[8],a[9]); break;        case 11:tok = p_many0n (p,11,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],                a[8],a[9],a[10]); break;        case 12:tok = p_many0n (p,12,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],                a[8],a[9],a[10],a[11]); break;        case 13:tok = p_many0n (p,13,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],                a[8],a[9],a[10],a[11],a[12]); break;        case 14:tok = p_many0n (p,14,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],                a[8],a[9],a[10],a[11],a[12],a[13]); break;        case 15:tok = p_many0n (p,15,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],                a[8],a[9],a[10],a[11],a[12],a[13],a[14]); break;        case 16:tok = p_many0n (p,16,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],                a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]); break;        default:printf("error: too many (%d) args in CALL\n",m-1);\                p_exit(100); break;        }        pushDECR;    }    return tok;}STATUS  p_test0 (x)/* succeed if x is 1, fail if x is 0 */int x;{    if (x){        pushVALUE((VALUE)x);        return OK(x);    }    return FAILURE;}STATUS p_attach0n (PARSER *p, ...)/*attach an action to a parse.*/{    va_list(ap);    status tok;    static int m;    static ACTION *f;    va_start(ap,p);        CALL(tok=(*p),m,a);    f=va_arg(ap,ACTION*);    m=va_arg(ap,int);    a=(PARAM*)ap;    ap=(va_list)&a[m];    m++;    va_end(ap);    if (GOODSTATUS(tok)){        while(--m>0){            pushPARAM(a[m-1]);        }        pushACTION(f);    }    return tok;}STATUS p_range0n (PREDICATE *p, ...){    static va_list(ap);    boolean tok;    /* could make this static, but range is always a leaf */    static int m;        /* so it's hardly worth the bother. */        TOKEN c; VALUE v;    va_start(ap,p);    m=va_arg(ap,int);    a=(PARAM*)ap;    ap=(va_list)&a[m];    m++;    va_end(ap);            c = *pstr;    v = lvbuff[(int)(pstr-buffer)];    switch(m-1) {    case 0: tok = (*p)(c); break;    case 1: tok = (*p)(a[0],c); break;    case 2: tok = (*p)(a[0],a[1],c); break;    case 3: tok = (*p)(a[0],a[1],a[2],c); break;    case 4: tok = (*p)(a[0],a[1],a[2],a[3],c); break;    case 5: tok = (*p)(a[0],a[1],a[2],a[3],a[4],c); break;    case 6: tok = (*p)(a[0],a[1],a[2],a[3],a[4],a[5],c); break;    case 7: tok = (*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],c); break;    case 8: tok = (*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);            break;    case 9: tok = (*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],            a[8]); break;    case 10:tok = (*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],            a[8],a[9]); break;    case 11:tok = (*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],            a[8],a[9],a[10]); break;    case 12:tok = (*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],            a[8],a[9],a[10],a[11]); break;    case 13:tok = (*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],            a[8],a[9],a[10],a[11],a[12]); break;    case 14:tok = (*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],            a[8],a[9],a[10],a[11],a[12],a[13]); break;    case 15:tok = (*p)(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],            a[8],a[9],a[10],a[11],a[12],a[13],a[14]); break;    default: printf("error: too many (%d) args in predicate\n",m-1);             p_exit(100);    }    if (GOODSTATUS(tok))    {        MOVEON;        pushVALUE(v);        return OK(v);    }    return FAILURE;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜美腿高跟呻吟高潮一区| 欧美草草影院在线视频| 青青国产91久久久久久| 国产精品狼人久久影院观看方式| 日韩一区二区免费电影| 欧美三区免费完整视频在线观看| 成人综合激情网| 国产精品一区二区在线看| 日本vs亚洲vs韩国一区三区二区| 亚洲国产精品一区二区尤物区| 1000精品久久久久久久久| 国产精品三级视频| 国产精品国产三级国产a| 国产精品亲子乱子伦xxxx裸| 久久久不卡网国产精品一区| 337p日本欧洲亚洲大胆精品| 日韩欧美高清一区| 精品精品国产高清a毛片牛牛| 欧美精品 日韩| 欧美日韩国产在线观看| 91精品国产综合久久婷婷香蕉| 欧美日韩视频不卡| 日韩欧美www| 国产日韩欧美精品在线| 国产女主播视频一区二区| 日本一区二区成人在线| 亚洲欧美日韩电影| 午夜免费欧美电影| 久久99精品国产麻豆婷婷| 国产一区二区三区视频在线播放| 国产成人在线视频网址| 99精品视频在线播放观看| 一本高清dvd不卡在线观看| 欧美午夜精品久久久| 欧美电影在哪看比较好| 2017欧美狠狠色| 国产精品成人一区二区三区夜夜夜| 中文字幕在线一区免费| 亚洲图片欧美色图| 久久国产乱子精品免费女| 国产成人免费av在线| 色婷婷av一区二区三区软件| 在线播放视频一区| 国产欧美一区二区三区鸳鸯浴 | 欧美伊人久久大香线蕉综合69| 99久久亚洲一区二区三区青草| 色综合天天综合色综合av| 欧美videofree性高清杂交| 欧美精品一区二区三区蜜桃视频| 国产精品剧情在线亚洲| 香蕉成人啪国产精品视频综合网| 激情五月婷婷综合网| 色综合中文字幕国产| 国产精品视频麻豆| 精品一区二区三区久久| 91免费视频网| 久久久噜噜噜久噜久久综合| 亚洲专区一二三| 成人激情午夜影院| 日韩视频中午一区| 亚洲精品国产精华液| 国模套图日韩精品一区二区 | 国产网站一区二区| 偷偷要91色婷婷| va亚洲va日韩不卡在线观看| 91精品国产综合久久精品图片| 中文字幕永久在线不卡| 极品尤物av久久免费看| 欧美日韩激情一区二区三区| 中文在线免费一区三区高中清不卡| 丝瓜av网站精品一区二区| 99久久er热在这里只有精品66| 欧美tickling挠脚心丨vk| 亚洲高清一区二区三区| 91视频在线观看| 国产精品网曝门| 国产一区二区三区美女| 91精品国产福利| 亚洲午夜免费电影| 一道本成人在线| 综合电影一区二区三区 | 精品国产一区二区在线观看| 一区二区三区成人在线视频| 不卡一区二区中文字幕| 国产三级三级三级精品8ⅰ区| 老鸭窝一区二区久久精品| 欧美日韩国产片| 亚洲一区二区三区四区在线观看 | 日韩精品视频网站| 欧美日韩一区三区四区| 一区二区三区产品免费精品久久75| 国产黄色精品视频| 国产女主播在线一区二区| 国产麻豆精品一区二区| 欧美精品一区二| 国产一区二区三区四| 精品国产凹凸成av人导航| 久久国产成人午夜av影院| 欧美电影免费观看高清完整版| 日韩和欧美一区二区三区| 日韩网站在线看片你懂的| 久久精品av麻豆的观看方式| 精品对白一区国产伦| 国产精品综合视频| 国产视频在线观看一区二区三区 | 成人手机电影网| 亚洲老妇xxxxxx| 欧美区一区二区三区| 美女脱光内衣内裤视频久久影院| 精品欧美乱码久久久久久1区2区| 韩国av一区二区三区四区| 中文字幕精品一区二区三区精品| 成人高清免费观看| 亚洲综合免费观看高清完整版| 欧美日韩电影一区| 精品一二三四区| 亚洲欧美在线aaa| 91福利国产精品| 免费观看成人av| 国产欧美一区二区精品久导航 | 99久久伊人精品| 亚洲一线二线三线视频| 日韩一区二区视频在线观看| 国产精品影视网| 亚洲精品乱码久久久久久久久 | 亚洲第一二三四区| 久久伊99综合婷婷久久伊| 99久久99久久久精品齐齐| 天堂久久一区二区三区| 国产天堂亚洲国产碰碰| 欧美性大战久久久久久久蜜臀| 麻豆一区二区三区| 亚洲男人的天堂在线观看| 欧美一区二区三区婷婷月色| 成人一区在线观看| 视频一区二区三区中文字幕| 久久你懂得1024| 欧美日韩一级黄| 国产成人高清视频| 热久久国产精品| 一区二区三区美女| 国产香蕉久久精品综合网| 欧美午夜理伦三级在线观看| 国产大片一区二区| 免费成人美女在线观看.| 亚洲欧美激情在线| 国产日产欧美一区二区视频| 欧美日韩aaaaa| av色综合久久天堂av综合| 视频一区视频二区中文| 中文av一区二区| 欧美一区二区三区视频免费播放| 91免费国产在线| 春色校园综合激情亚洲| 久久99国内精品| 日本怡春院一区二区| 亚洲在线观看免费| 亚洲天堂网中文字| 欧美激情资源网| 久久毛片高清国产| 精品国产电影一区二区| 欧美高清性hdvideosex| 欧美系列亚洲系列| 91成人国产精品| 色一区在线观看| 91老师片黄在线观看| 成人国产精品免费观看视频| 国产一区二区精品久久| 久久国产精品免费| 久久9热精品视频| 蜜臀va亚洲va欧美va天堂| 午夜精品福利一区二区三区av| 一区二区在线观看视频在线观看| 国产精品免费av| 国产精品久久久久久久久免费樱桃 | 爽好久久久欧美精品| 亚洲国产精品自拍| 亚洲小少妇裸体bbw| 一区二区高清视频在线观看| 亚洲精品菠萝久久久久久久| 亚洲欧美日韩在线不卡| 一区二区三区欧美日韩| 亚洲一区二区在线播放相泽| 亚洲高清视频的网址| 午夜精品国产更新| 日本不卡一区二区三区高清视频| 日本不卡一二三区黄网| 久久99在线观看| 丁香婷婷综合色啪| 91丨九色porny丨蝌蚪| 在线一区二区三区| 欧美一区二区女人| 久久综合九色欧美综合狠狠| 久久久777精品电影网影网| 国产精品午夜久久| 夜夜操天天操亚洲| 日韩电影一区二区三区四区| 久久99精品国产麻豆不卡| 国产成人综合视频| 色综合色综合色综合色综合色综合|