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

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

?? scanner.c

?? nVidia開發的圖形語言 Cg
?? C
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************\
Copyright (c) 2002, NVIDIA Corporation.

NVIDIA Corporation("NVIDIA") supplies this software to you in
consideration of your agreement to the following terms, and your use,
installation, modification or redistribution of this NVIDIA software
constitutes acceptance of these terms.  If you do not agree with these
terms, please do not use, install, modify or redistribute this NVIDIA
software.

In consideration of your agreement to abide by the following terms, and
subject to these terms, NVIDIA grants you a personal, non-exclusive
license, under NVIDIA's copyrights in this original NVIDIA software (the
"NVIDIA Software"), to use, reproduce, modify and redistribute the
NVIDIA Software, with or without modifications, in source and/or binary
forms; provided that if you redistribute the NVIDIA Software, you must
retain the copyright notice of NVIDIA, this notice and the following
text and disclaimers in all such redistributions of the NVIDIA Software.
Neither the name, trademarks, service marks nor logos of NVIDIA
Corporation may be used to endorse or promote products derived from the
NVIDIA Software without specific prior written permission from NVIDIA.
Except as expressly stated in this notice, no other rights or licenses
express or implied, are granted by NVIDIA herein, including but not
limited to any patent rights that may be infringed by your derivative
works or by other works in which the NVIDIA Software may be
incorporated. No hardware is licensed hereunder. 

THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED,
INCLUDING WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE,
NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
ITS USE AND OPERATION EITHER ALONE OR IN COMBINATION WITH OTHER
PRODUCTS.

IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT,
INCIDENTAL, EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, LOST PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY
OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE
NVIDIA SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT,
TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF
NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\****************************************************************************/
// scanner.c
//

#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#if 0
#include <ieeefp.h>
#else
#define isinff(x) (((*(long *)&(x) & 0x7f800000L)==0x7f800000L) && \
                   ((*(long *)&(x) & 0x007fffffL)==0000000000L))
#endif

#include "slglobals.h"

const char *Build_Date = __DATE__;
const char *Build_Time = __TIME__;

typedef struct FileInputSrc {
    InputSrc            base;
    FILE                *fd;
    char                save_cnt;
    char                save[3];
} FileInputSrc;

typedef struct StringInputSrc {
    InputSrc base;
    char *p;
} StringInputSrc;

static int eof_scan(InputSrc *is)
{
    return EOF;
} // eof_scan

static void noop(InputSrc *in, int ch) {}

static InputSrc eof_inputsrc = { 0, &eof_scan, &eof_scan, &noop };

static int byte_scan(InputSrc *);
static int nextchar(FileInputSrc *);
static void ungetchar(FileInputSrc *, int);

#define EOL_SY '\n'

#if defined(_WIN32)
#define DBG_BREAKPOINT() __asm int 3
#else
#define DBG_BREAKPOINT()
#endif

#if defined(_WIN32)
__int64 RDTSC ( void ) {

    __int64 v;

    __asm __emit 0x0f
    __asm __emit 0x31
    __asm mov dword ptr v, eax
    __asm mov dword ptr v+4, edx

    return v;
}
#endif

int InitScanner(CgStruct *Cg)
{
    // Add various atoms needed by the CPP line scanner:
    if (!InitCPP())
        return 0;

    Cg->mostRecentToken = 0;
    Cg->tokenLoc = &Cg->ltokenLoc;

    Cg->ltokenLoc.file = 0;
    Cg->ltokenLoc.line = 0;
    Cg->errorCount = 0;
    Cg->warningCount = 0;
    Cg->lineCount = 0;
    Cg->AllowSemanticParseErrors = 0;

    Cg->currentInput = &eof_inputsrc;

    return 1;
} // InitScanner

int SetInputFile(const char *fname)
{
    FileInputSrc *in = malloc(sizeof(FileInputSrc));
    memset(in, 0, sizeof(FileInputSrc));
    if (fname) {
        if (!Cg->options.Quiet)
            printf("%s\n", fname);
        in->base.name = LookUpAddString(atable, fname);
        in->fd = fopen(fname, "r");
        if (!in->fd) {
            printf(OPENSL_TAG ": cannot open input file \"%s\"\n", fname);
            free(in);
            return 0;
        }
    } else {
        in->fd = stdin;
        in->base.name = LookUpAddString(atable, "<stdin>");
    }
    in->base.line = 1;
    in->base.scan = byte_scan;
    in->base.getch = (int (*)(InputSrc *)) nextchar;
    in->base.ungetch = (void (*)(InputSrc *, int)) ungetchar;
    in->base.prev = Cg->currentInput;
    Cg->currentInput = &in->base;
#if 0 && !defined(_DEBUG)
    if (Cg->options.TraceScanner) {
        __int64 s,e;
        s = RDTSC();
        while (Cg->currentInput->scan(Cg->currentInput) > 0)
            /* empty statement */ ;
        e = RDTSC();
        printf("%d cycles\n", (int)(e-s));
        return 0;
    }
#endif
    return 1;
} // SetInputFile

static int str_getch(StringInputSrc *in)
{
    if (*in->p)
        return *in->p++;
    Cg->currentInput = in->base.prev;
    free(in);
    return ' ';
} // str_getch

static void str_ungetch(StringInputSrc *in, int ch) {
    if (in->p[-1] == ch) in->p--;
} // str_ungetch

int ScanFromString(char *s)
{
    StringInputSrc *in = malloc(sizeof(StringInputSrc));
    memset(in, 0, sizeof(StringInputSrc));
    in->p = s;
    in->base.line = 1;
    in->base.scan = byte_scan;
    in->base.getch = (int (*)(InputSrc *))str_getch;
    in->base.ungetch = (void (*)(InputSrc *, int))str_ungetch;
    in->base.prev = Cg->currentInput;
    Cg->currentInput = &in->base;
    return 1;
} // ScanFromString;

int FreeScanner(CgStruct *Cg)
{
    FinalCPP();
    if (Cg->warningCount || Cg->errorCount || !Cg->options.Quiet) {
        fprintf(Cg->options.listfd, "%d lines", Cg->lineCount);
        if (Cg->warningCount)
            fprintf(Cg->options.listfd, ", %d warnings", Cg->warningCount);
        fprintf(Cg->options.listfd, ", %d errors.\n", Cg->errorCount);
    }
    return Cg->errorCount;
} // FreeScanner

int GetErrorCount(void)
{
    return Cg->errorCount;
} // GetErrorCount

/*
 * bumpErrorCount() - Useful for setting breakpoints when debugging.
 *
 */

void bumpErrorCount(void)
{
    Cg->errorCount++;
    if (Cg->options.TrapOnError) {
        DBG_BREAKPOINT();
    }
} // bumbErrorCount

/*
 * bumpWarningCount() - Useful for setting breakpoints when debugging.
 *
 */

void bumpWarningCount(void)
{
    Cg->warningCount++;
    if (Cg->options.TrapOnError) {
        DBG_BREAKPOINT();
    }
} // bumpWarningCount

// Called by yyparse on an error:

void yyerror(const char *s)
{
    if (!Cg->options.ErrorMode) {
        if (Cg->ltokenLoc.file) {
            fprintf(Cg->options.listfd, "%s(%d) : error C0000: ",
                    GetAtomString(atable, Cg->ltokenLoc.file), Cg->ltokenLoc.line);
        } else {
            fprintf(Cg->options.listfd, "(%d) : error C0000: ", Cg->currentInput->line);
        }
        fprintf(Cg->options.listfd, "%s at token \"%s\"\n", s,
                GetAtomString(atable, Cg->mostRecentToken));
        Cg->AllowSemanticParseErrors = 1;
    }
    bumpErrorCount();
} // yyerror

/*
 * SemanticParseError() - Compiler generated semantic error inside an error rule.
 *
 */

void SemanticParseError(SourceLoc *loc, int num, const char *mess, ...)
{
    va_list args;

    if (Cg->AllowSemanticParseErrors) {
        if (!Cg->options.ErrorMode) {
            if (loc->file) {
                fprintf(Cg->options.listfd, "%s(%d) : error C%04d: ",
                        GetAtomString(atable, loc->file), loc->line, num);
            } else {
                fprintf(Cg->options.listfd, "(%d) : error C%04d: ", loc->line, num);
            }
            va_start(args, mess);
            vfprintf(Cg->options.listfd, mess, args);
            va_end(args);
            fprintf(Cg->options.listfd, "\n");
            bumpErrorCount();
        } else {
            MarkErrorPosHit(loc);
        }

        Cg->AllowSemanticParseErrors = 0;
    }
} // SemanticParseError

/*
 * SemanticError() - Compiler generated semantic error.
 *
 */

void SemanticError(SourceLoc *loc, int num, const char *mess, ...)
{
    va_list args;

    if (!Cg->options.ErrorMode) {
        if (loc->file) {
            fprintf(Cg->options.listfd, "%s(%d) : error C%04d: ",
                    GetAtomString(atable, loc->file), loc->line, num);
        } else {
            fprintf(Cg->options.listfd, "(%d) : error C%04d: ", loc->line, num);
        }
        va_start(args, mess);
        vfprintf(Cg->options.listfd, mess, args);
        va_end(args);
        fprintf(Cg->options.listfd, "\n");
        bumpErrorCount();
    } else {
        MarkErrorPosHit(loc);
    }
} // SemanticError

/*
 * InternalError() - Internal compiler error.
 *
 */

void InternalError(SourceLoc *loc, int num, const char *mess, ...)
{
    va_list args;

    if (loc->file) {
        fprintf(Cg->options.listfd, "%s(%d) : error C%04d: ",
                GetAtomString(atable, loc->file), loc->line, num);
    } else {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品免费看国产免费软件| 青青国产91久久久久久| 欧美一区二区三区视频在线观看| 在线视频中文字幕一区二区| 成人18精品视频| 99久久综合色| 91性感美女视频| 一本一道综合狠狠老| 欧美视频在线一区| 欧美巨大另类极品videosbest | 国产在线视频精品一区| 精品在线你懂的| 成人免费看的视频| 在线一区二区三区| 这里只有精品视频在线观看| 日韩欧美亚洲国产精品字幕久久久| 精品免费一区二区三区| 中文字幕不卡的av| 一区二区激情视频| 麻豆成人91精品二区三区| 国内精品视频666| 波多野结衣一区二区三区 | 成人激情小说网站| 欧美在线你懂的| 欧美一区二区三区在线观看| 亚洲精品一区二区三区精华液| 欧美高清在线一区| 亚洲第一激情av| 国产精品综合在线视频| 色狠狠一区二区三区香蕉| 欧美一级片免费看| 国产精品久久久久久久久动漫 | 欧美一区二区三区色| 久久精品人人爽人人爽| 一区二区三区高清| 激情六月婷婷综合| 欧洲色大大久久| 久久先锋影音av鲁色资源网| 亚洲人吸女人奶水| 韩日av一区二区| 91激情在线视频| 日本一区二区三区免费乱视频| 一级女性全黄久久生活片免费| 久久激情五月激情| 欧美亚洲一区二区在线| 久久久精品蜜桃| 日韩福利电影在线观看| 色综合天天综合网国产成人综合天 | 国产精品一区二区在线看| 在线看日本不卡| 中文字幕一区日韩精品欧美| 美女www一区二区| 欧美四级电影网| 亚洲人成电影网站色mp4| 久久97超碰色| 91精品国产入口| 亚洲福利一区二区三区| av在线一区二区| 欧美经典一区二区| 国产一区二区主播在线| 欧美日韩国产美女| 亚洲亚洲精品在线观看| 色狠狠一区二区三区香蕉| 成人免费在线播放视频| 国产成人在线色| 久久综合久久综合九色| 精一区二区三区| 欧美精品一区二区三区蜜臀| 日韩不卡手机在线v区| 欧美精品18+| 首页亚洲欧美制服丝腿| 欧美精品日韩精品| 日韩av在线播放中文字幕| 欧美亚洲丝袜传媒另类| 五月婷婷综合在线| 欧美精品一级二级| 无码av免费一区二区三区试看 | 人妖欧美一区二区| 7777精品伊人久久久大香线蕉完整版 | 麻豆成人91精品二区三区| 日韩手机在线导航| 免费观看一级特黄欧美大片| 欧美精品丝袜久久久中文字幕| 丝袜a∨在线一区二区三区不卡 | 精品一区二区免费| 久久久精品tv| 不卡高清视频专区| 亚洲欧美另类久久久精品| 在线观看中文字幕不卡| 日韩在线一二三区| www成人在线观看| 丁香网亚洲国际| 樱桃视频在线观看一区| 欧美一区二区成人| 国产精品一品二品| 亚洲精品日产精品乱码不卡| 777午夜精品视频在线播放| 激情欧美一区二区三区在线观看| 国产欧美一区二区三区在线看蜜臀| 成人免费高清视频| 视频一区二区不卡| 国产亚洲欧美一级| 欧美色图在线观看| 黄一区二区三区| 亚洲靠逼com| 精品日韩av一区二区| 高潮精品一区videoshd| 亚洲午夜免费视频| 久久婷婷国产综合国色天香| 91免费在线视频观看| 日本美女一区二区| 国产精品天天摸av网| 欧美日韩精品一区二区在线播放| 国产麻豆视频精品| 亚洲一区二区3| 国产视频在线观看一区二区三区| 在线观看日韩一区| 夫妻av一区二区| 三级亚洲高清视频| 亚洲精品中文字幕在线观看| 欧美sm极限捆绑bd| 欧美日韩视频专区在线播放| 成人精品小蝌蚪| 国内精品视频666| 亚洲午夜成aⅴ人片| 国产色产综合色产在线视频| 4hu四虎永久在线影院成人| jlzzjlzz亚洲日本少妇| 狠狠色丁香婷婷综合久久片| 亚洲aⅴ怡春院| 亚洲美女在线一区| 国产欧美日韩不卡免费| 久久综合丝袜日本网| 日韩视频一区二区三区在线播放| 色婷婷av一区二区三区大白胸 | 亚洲欧美怡红院| 久久嫩草精品久久久精品| 正在播放亚洲一区| 欧美群妇大交群的观看方式| 色婷婷av久久久久久久| 一本到不卡免费一区二区| 成人免费高清视频| 成人在线视频首页| 懂色av中文一区二区三区| 国产精品一区2区| 国产精品一区二区男女羞羞无遮挡| 美女视频第一区二区三区免费观看网站| 亚洲一区二区精品久久av| 一区二区三区日韩精品视频| 亚洲女与黑人做爰| 亚洲女性喷水在线观看一区| 一区二区三区在线观看国产| 亚洲欧美视频一区| 亚洲精品国产视频| 亚洲v精品v日韩v欧美v专区| 一区二区三区日韩欧美| 亚洲成人福利片| 蜜桃传媒麻豆第一区在线观看| 日韩电影在线观看电影| 久久精品国产色蜜蜜麻豆| 久久99久久精品欧美| 国产成人在线看| 成人激情免费视频| 欧美伊人久久大香线蕉综合69 | 色综合久久久久综合99| 91精品福利在线| 欧美一三区三区四区免费在线看| 欧美日韩dvd在线观看| 日韩精品专区在线影院观看| 久久久亚洲高清| 悠悠色在线精品| 婷婷综合另类小说色区| 久久99精品久久只有精品| 不卡一区中文字幕| 色欧美乱欧美15图片| 91精品国产色综合久久ai换脸 | 国产精品五月天| 亚洲色欲色欲www| 视频一区二区三区中文字幕| 国内国产精品久久| 99久久精品国产一区二区三区| 欧美又粗又大又爽| 精品国产伦理网| 国产精品白丝在线| 青椒成人免费视频| 成人高清免费观看| 欧美年轻男男videosbes| 久久久久久久综合色一本| 亚洲激情av在线| 国产一区二区女| 欧美在线观看一区| 国产欧美一区二区精品性色 | 久久成人羞羞网站| 94色蜜桃网一区二区三区| 欧美一区二区日韩一区二区| 亚洲国产成人在线| 日韩avvvv在线播放| 99久久综合色| 久久久久国产精品麻豆ai换脸| 亚洲一区电影777|