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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? lemon.c

?? Lemon 的源代碼 這是較新的版本
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/*** This file contains all sources (including headers) to the LEMON** LALR(1) parser generator.  The sources have been combined into a** single file to make it easy to include LEMON in the source tree** and Makefile of another program.**** The author of this program disclaims copyright.*/#include <stdio.h>#include <stdarg.h>#include <string.h>#include <ctype.h>#include <stdlib.h>#ifndef __WIN32__#   if defined(_WIN32) || defined(WIN32)#	define __WIN32__#   endif#endif/* #define PRIVATE static */#define PRIVATE#ifdef TEST#define MAXRHS 5       /* Set low to exercise exception code */#else#define MAXRHS 1000#endifchar *msort();extern void *malloc();/******** From the file "action.h" *************************************/struct action *Action_new();struct action *Action_sort();/********* From the file "assert.h" ************************************/void myassert();#ifndef NDEBUG#  define assert(X) if(!(X))myassert(__FILE__,__LINE__)#else#  define assert(X)#endif/********** From the file "build.h" ************************************/void FindRulePrecedences();void FindFirstSets();void FindStates();void FindLinks();void FindFollowSets();void FindActions();/********* From the file "configlist.h" *********************************/void Configlist_init(/* void */);struct config *Configlist_add(/* struct rule *, int */);struct config *Configlist_addbasis(/* struct rule *, int */);void Configlist_closure(/* void */);void Configlist_sort(/* void */);void Configlist_sortbasis(/* void */);struct config *Configlist_return(/* void */);struct config *Configlist_basis(/* void */);void Configlist_eat(/* struct config * */);void Configlist_reset(/* void */);/********* From the file "error.h" ***************************************/void ErrorMsg(const char *, int,const char *, ...);/****** From the file "option.h" ******************************************/struct s_options {  enum { OPT_FLAG=1,  OPT_INT,  OPT_DBL,  OPT_STR,         OPT_FFLAG, OPT_FINT, OPT_FDBL, OPT_FSTR} type;  char *label;  char *arg;  char *message;};int    OptInit(/* char**,struct s_options*,FILE* */);int    OptNArgs(/* void */);char  *OptArg(/* int */);void   OptErr(/* int */);void   OptPrint(/* void */);/******** From the file "parse.h" *****************************************/void Parse(/* struct lemon *lemp */);/********* From the file "plink.h" ***************************************/struct plink *Plink_new(/* void */);void Plink_add(/* struct plink **, struct config * */);void Plink_copy(/* struct plink **, struct plink * */);void Plink_delete(/* struct plink * */);/********** From the file "report.h" *************************************/void Reprint(/* struct lemon * */);void ReportOutput(/* struct lemon * */);void ReportTable(/* struct lemon * */);void ReportHeader(/* struct lemon * */);void CompressTables(/* struct lemon * */);void ResortStates(/* struct lemon * */);/********** From the file "set.h" ****************************************/void  SetSize(/* int N */);             /* All sets will be of size N */char *SetNew(/* void */);               /* A new set for element 0..N */void  SetFree(/* char* */);             /* Deallocate a set */int SetAdd(/* char*,int */);            /* Add element to a set */int SetUnion(/* char *A,char *B */);    /* A <- A U B, thru element N */#define SetFind(X,Y) (X[Y])       /* True if Y is in set X *//********** From the file "struct.h" *************************************//*** Principal data structures for the LEMON parser generator.*/typedef enum {B_FALSE=0, B_TRUE} Boolean;/* Symbols (terminals and nonterminals) of the grammar are stored** in the following: */struct symbol {  char *name;              /* Name of the symbol */  int index;               /* Index number for this symbol */  enum {    TERMINAL,    NONTERMINAL,    MULTITERMINAL  } type;                  /* Symbols are all either TERMINALS or NTs */  struct rule *rule;       /* Linked list of rules of this (if an NT) */  struct symbol *fallback; /* fallback token in case this token doesn't parse */  int prec;                /* Precedence if defined (-1 otherwise) */  enum e_assoc {    LEFT,    RIGHT,    NONE,    UNK  } assoc;                 /* Associativity if predecence is defined */  char *firstset;          /* First-set for all rules of this symbol */  Boolean lambda;          /* True if NT and can generate an empty string */  char *destructor;        /* Code which executes whenever this symbol is                           ** popped from the stack during error processing */  int destructorln;        /* Line number of destructor code */  char *datatype;          /* The data type of information held by this                           ** object. Only used if type==NONTERMINAL */  int dtnum;               /* The data type number.  In the parser, the value                           ** stack is a union.  The .yy%d element of this                           ** union is the correct data type for this object */  /* The following fields are used by MULTITERMINALs only */  int nsubsym;             /* Number of constituent symbols in the MULTI */  struct symbol **subsym;  /* Array of constituent symbols */};/* Each production rule in the grammar is stored in the following** structure.  */struct rule {  struct symbol *lhs;      /* Left-hand side of the rule */  char *lhsalias;          /* Alias for the LHS (NULL if none) */  int ruleline;            /* Line number for the rule */  int nrhs;                /* Number of RHS symbols */  struct symbol **rhs;     /* The RHS symbols */  char **rhsalias;         /* An alias for each RHS symbol (NULL if none) */  int line;                /* Line number at which code begins */  char *code;              /* The code executed when this rule is reduced */  struct symbol *precsym;  /* Precedence symbol for this rule */  int index;               /* An index number for this rule */  Boolean canReduce;       /* True if this rule is ever reduced */  struct rule *nextlhs;    /* Next rule with the same LHS */  struct rule *next;       /* Next rule in the global list */};/* A configuration is a production rule of the grammar together with** a mark (dot) showing how much of that rule has been processed so far.** Configurations also contain a follow-set which is a list of terminal** symbols which are allowed to immediately follow the end of the rule.** Every configuration is recorded as an instance of the following: */struct config {  struct rule *rp;         /* The rule upon which the configuration is based */  int dot;                 /* The parse point */  char *fws;               /* Follow-set for this configuration only */  struct plink *fplp;      /* Follow-set forward propagation links */  struct plink *bplp;      /* Follow-set backwards propagation links */  struct state *stp;       /* Pointer to state which contains this */  enum {    COMPLETE,              /* The status is used during followset and */    INCOMPLETE             /*    shift computations */  } status;  struct config *next;     /* Next configuration in the state */  struct config *bp;       /* The next basis configuration */};/* Every shift or reduce operation is stored as one of the following */struct action {  struct symbol *sp;       /* The look-ahead symbol */  enum e_action {    SHIFT,    ACCEPT,    REDUCE,    ERROR,    CONFLICT,                /* Was a reduce, but part of a conflict */    SH_RESOLVED,             /* Was a shift.  Precedence resolved conflict */    RD_RESOLVED,             /* Was reduce.  Precedence resolved conflict */    NOT_USED                 /* Deleted by compression */  } type;  union {    struct state *stp;     /* The new state, if a shift */    struct rule *rp;       /* The rule, if a reduce */  } x;  struct action *next;     /* Next action for this state */  struct action *collide;  /* Next action with the same hash */};/* Each state of the generated parser's finite state machine** is encoded as an instance of the following structure. */struct state {  struct config *bp;       /* The basis configurations for this state */  struct config *cfp;      /* All configurations in this set */  int statenum;            /* Sequencial number for this state */  struct action *ap;       /* Array of actions for this state */  int nTknAct, nNtAct;     /* Number of actions on terminals and nonterminals */  int iTknOfst, iNtOfst;   /* yy_action[] offset for terminals and nonterms */  int iDflt;               /* Default action */};#define NO_OFFSET (-2147483647)/* A followset propagation link indicates that the contents of one** configuration followset should be propagated to another whenever** the first changes. */struct plink {  struct config *cfp;      /* The configuration to which linked */  struct plink *next;      /* The next propagate link */};/* The state vector for the entire parser generator is recorded as** follows.  (LEMON uses no global variables and makes little use of** static variables.  Fields in the following structure can be thought** of as begin global variables in the program.) */struct lemon {  struct state **sorted;   /* Table of states sorted by state number */  struct rule *rule;       /* List of all rules */  int nstate;              /* Number of states */  int nrule;               /* Number of rules */  int nsymbol;             /* Number of terminal and nonterminal symbols */  int nterminal;           /* Number of terminal symbols */  struct symbol **symbols; /* Sorted array of pointers to symbols */  int errorcnt;            /* Number of errors */  struct symbol *errsym;   /* The error symbol */  struct symbol *wildcard; /* Token that matches anything */  char *name;              /* Name of the generated parser */  char *arg;               /* Declaration of the 3th argument to parser */  char *tokentype;         /* Type of terminal symbols in the parser stack */  char *vartype;           /* The default type of non-terminal symbols */  char *start;             /* Name of the start symbol for the grammar */  char *stacksize;         /* Size of the parser stack */  char *include;           /* Code to put at the start of the C file */  int  includeln;          /* Line number for start of include code */  char *error;             /* Code to execute when an error is seen */  int  errorln;            /* Line number for start of error code */  char *overflow;          /* Code to execute on a stack overflow */  int  overflowln;         /* Line number for start of overflow code */  char *failure;           /* Code to execute on parser failure */  int  failureln;          /* Line number for start of failure code */  char *accept;            /* Code to execute when the parser excepts */  int  acceptln;           /* Line number for the start of accept code */  char *extracode;         /* Code appended to the generated file */  int  extracodeln;        /* Line number for the start of the extra code */  char *tokendest;         /* Code to execute to destroy token data */  int  tokendestln;        /* Line number for token destroyer code */  char *vardest;           /* Code for the default non-terminal destructor */  int  vardestln;          /* Line number for default non-term destructor code*/  char *filename;          /* Name of the input file */  char *outname;           /* Name of the current output file */  char *tokenprefix;       /* A prefix added to token names in the .h file */  int nconflict;           /* Number of parsing conflicts */  int tablesize;           /* Size of the parse tables */  int basisflag;           /* Print only basis configurations */  int has_fallback;        /* True if any %fallback is seen in the grammer */  char *argv0;             /* Name of the program */};#define MemoryCheck(X) if((X)==0){ \  extern void memory_error(); \  memory_error(); \}/**************** From the file "table.h" *********************************//*** All code in this file has been automatically generated** from a specification in the file**              "table.q"** by the associative array code building program "aagen".** Do not edit this file!  Instead, edit the specification** file, then rerun aagen.*//*** Code for processing tables in the LEMON parser generator.*//* Routines for handling a strings */char *Strsafe();void Strsafe_init(/* void */);int Strsafe_insert(/* char * */);char *Strsafe_find(/* char * */);/* Routines for handling symbols of the grammar */struct symbol *Symbol_new();int Symbolcmpp(/* struct symbol **, struct symbol ** */);void Symbol_init(/* void */);int Symbol_insert(/* struct symbol *, char * */);struct symbol *Symbol_find(/* char * */);struct symbol *Symbol_Nth(/* int */);int Symbol_count(/*  */);struct symbol **Symbol_arrayof(/*  */);/* Routines to manage the state table */int Configcmp(/* struct config *, struct config * */);struct state *State_new();void State_init(/* void */);int State_insert(/* struct state *, struct config * */);struct state *State_find(/* struct config * */);struct state **State_arrayof(/*  */);/* Routines used for efficiency in Configlist_add */void Configtable_init(/* void */);int Configtable_insert(/* struct config * */);struct config *Configtable_find(/* struct config * */);void Configtable_clear(/* int(*)(struct config *) */);/****************** From the file "action.c" *******************************//*** Routines processing parser actions in the LEMON parser generator.*//* Allocate a new parser action */struct action *Action_new(){  static struct action *freelist = 0;  struct action *new;  if( freelist==0 ){    int i;    int amt = 100;    freelist = (struct action *)malloc( sizeof(struct action)*amt );    if( freelist==0 ){      fprintf(stderr,"Unable to allocate memory for a new parser action.");      exit(1);    }    for(i=0; i<amt-1; i++) freelist[i].next = &freelist[i+1];    freelist[amt-1].next = 0;  }  new = freelist;  freelist = freelist->next;  return new;}/* Compare two actions */static int actioncmp(ap1,ap2)struct action *ap1;struct action *ap2;{  int rc;  rc = ap1->sp->index - ap2->sp->index;  if( rc==0 ) rc = (int)ap1->type - (int)ap2->type;  if( rc==0 ){    rc = ap1->x.rp->index - ap2->x.rp->index;  }  return rc;}/* Sort parser actions */struct action *Action_sort(ap)struct action *ap;{  ap = (struct action *)msort((char *)ap,(char **)&ap->next,actioncmp);  return ap;}void Action_add(app,type,sp,arg)struct action **app;enum e_action type;struct symbol *sp;char *arg;{  struct action *new;  new = Action_new();  new->next = *app;  *app = new;  new->type = type;  new->sp = sp;  if( type==SHIFT ){    new->x.stp = (struct state *)arg;  }else{    new->x.rp = (struct rule *)arg;  }}/********************** New code to implement the "acttab" module ***********//*** This module implements routines use to construct the yy_action[] table.*//*** The state of the yy_action table under construction is an instance of** the following structure*/typedef struct acttab acttab;struct acttab {  int nAction;                 /* Number of used slots in aAction[] */  int nActionAlloc;            /* Slots allocated for aAction[] */  struct {    int lookahead;             /* Value of the lookahead token */    int action;                /* Action to take on the given lookahead */  } *aAction,                  /* The yy_action[] table under construction */    *aLookahead;               /* A single new transaction set */  int mnLookahead;             /* Minimum aLookahead[].lookahead */  int mnAction;                /* Action associated with mnLookahead */  int mxLookahead;             /* Maximum aLookahead[].lookahead */  int nLookahead;              /* Used slots in aLookahead[] */  int nLookaheadAlloc;         /* Slots allocated in aLookahead[] */};/* Return the number of entries in the yy_action table */#define acttab_size(X) ((X)->nAction)/* The value for the N-th entry in yy_action */#define acttab_yyaction(X,N)  ((X)->aAction[N].action)/* The value for the N-th entry in yy_lookahead */#define acttab_yylookahead(X,N)  ((X)->aAction[N].lookahead)/* Free all memory associated with the given acttab */void acttab_free(acttab *p){

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久精k8| 五月激情六月综合| 欧美精品在线视频| 国产精品一区二区三区99| 一区二区三区加勒比av| 国产亚洲女人久久久久毛片| 欧美精品在线观看一区二区| 99久久精品情趣| 国产老肥熟一区二区三区| 五月激情综合网| 亚洲精品久久久蜜桃| 国产亚洲欧美日韩俺去了| 日韩精品自拍偷拍| 欧美日韩国产在线播放网站| 91视视频在线直接观看在线看网页在线看| 理论片日本一区| 日韩电影在线一区二区| 亚洲一区二区三区中文字幕| 亚洲欧美怡红院| 中文字幕不卡在线| 久久男人中文字幕资源站| 欧美电影免费观看高清完整版在线观看| 色综合久久久网| 不卡区在线中文字幕| 国产激情视频一区二区三区欧美| 美女免费视频一区二区| 亚洲成年人网站在线观看| 一区二区三区四区在线播放 | 1区2区3区国产精品| 久久久久久久久99精品| 精品国产99国产精品| 欧美电影免费观看高清完整版在线 | 亚洲欧洲另类国产综合| 国产精品丝袜91| 国产精品久久久久久亚洲伦| 国产女人18水真多18精品一级做| 欧美精品一区二区精品网| 欧美xxx久久| 精品久久五月天| 久久在线观看免费| 久久综合九色欧美综合狠狠| 精品国产乱码久久久久久夜甘婷婷| 日韩女优av电影| 精品福利一区二区三区免费视频| 日韩精品一区二区三区四区 | 91精品国产色综合久久| 欧美电影在哪看比较好| 91精品国产综合久久久久久漫画 | 欧美性受极品xxxx喷水| 欧美日韩一区精品| 9191国产精品| 亚洲精品一区在线观看| 国产清纯在线一区二区www| 中文字幕亚洲在| 怡红院av一区二区三区| 天堂蜜桃一区二区三区| 九一九一国产精品| 高清不卡一区二区| 91国偷自产一区二区使用方法| 在线观看成人小视频| 欧美一级国产精品| 国产免费成人在线视频| 亚洲男人的天堂网| 日韩精品一卡二卡三卡四卡无卡| 日韩电影在线一区二区| 国产精品88av| 欧美中文字幕久久 | 国产精品福利一区二区三区| 亚洲一区二区3| 久久电影网电视剧免费观看| 成人激情综合网站| 欧美军同video69gay| 久久亚洲精精品中文字幕早川悠里| 国产精品欧美一区喷水| 五月天久久比比资源色| 国产高清在线精品| 在线看一区二区| 精品国产乱码久久久久久老虎 | 欧美日韩视频在线观看一区二区三区| 91精品国产综合久久久久久漫画 | 国产色产综合色产在线视频| 中文字幕一区在线| 欧美aaaaa成人免费观看视频| 国产精品一级片| 欧美体内she精高潮| 久久久久久一二三区| 亚洲五月六月丁香激情| 福利一区福利二区| 欧美高清www午色夜在线视频| 欧美国产日产图区| 日韩成人免费电影| aa级大片欧美| 久久日韩粉嫩一区二区三区| 亚洲精品ww久久久久久p站| 激情六月婷婷综合| 欧美人妇做爰xxxⅹ性高电影| 国产日本一区二区| 日产国产欧美视频一区精品| 91丨porny丨最新| 久久一日本道色综合| 午夜精品国产更新| 97久久精品人人做人人爽50路| 日韩欧美国产一二三区| 亚洲成在线观看| 97久久久精品综合88久久| 久久久久久久久97黄色工厂| 日本不卡一区二区三区高清视频| 色呦呦网站一区| 国产丝袜美腿一区二区三区| 捆绑调教一区二区三区| 欧美久久高跟鞋激| 亚洲一区av在线| 91同城在线观看| 国产色综合久久| 国产一区二区伦理| 精品免费日韩av| 香蕉乱码成人久久天堂爱免费| 91在线视频观看| 国产精品久久久久精k8| 国产v日产∨综合v精品视频| www亚洲一区| 久久99久久99精品免视看婷婷 | 欧美日韩国产综合视频在线观看| 亚洲美女在线一区| 91色婷婷久久久久合中文| 国产丝袜美腿一区二区三区| 国产一区二区三区蝌蚪| 日韩视频在线一区二区| 日韩av在线播放中文字幕| 在线成人小视频| 五月激情六月综合| 7878成人国产在线观看| 婷婷国产在线综合| 欧美精品久久一区二区三区| 亚洲成人精品在线观看| 欧美日韩一区中文字幕| 天天操天天干天天综合网| 欧美精品亚洲一区二区在线播放| 性欧美疯狂xxxxbbbb| 91精品国产一区二区三区蜜臀| 日日摸夜夜添夜夜添国产精品| 6080午夜不卡| 久久成人18免费观看| 久久久久99精品国产片| 成人午夜私人影院| 亚洲天堂av一区| 色婷婷亚洲综合| 亚洲午夜精品久久久久久久久| 欧美精品自拍偷拍动漫精品| 免费av网站大全久久| 精品国产免费一区二区三区香蕉| 国产麻豆一精品一av一免费| 国产午夜精品一区二区| 91无套直看片红桃| 午夜久久久久久久久| 日韩欧美色电影| 国产精品99久久久久久久女警| 国产精品久线在线观看| 91成人免费网站| 男女视频一区二区| 久久久影院官网| 91麻豆国产在线观看| 天使萌一区二区三区免费观看| 日韩欧美国产午夜精品| 成人永久免费视频| 亚洲综合色噜噜狠狠| 26uuu精品一区二区在线观看| 成人黄色777网| 五月婷婷激情综合网| 国产亲近乱来精品视频| 欧美三片在线视频观看| 精品一区二区在线看| 亚洲视频一区二区在线观看| 欧美片在线播放| 国产99一区视频免费| 亚洲日本va在线观看| 日韩一区二区在线看片| www.日韩大片| 天天色 色综合| 中文字幕中文字幕中文字幕亚洲无线| 欧美日韩电影一区| 成人动漫一区二区| 日本中文在线一区| 亚洲乱码国产乱码精品精的特点| 欧美一级日韩免费不卡| 99在线精品免费| 久久精品国产亚洲高清剧情介绍| 中文字幕一区二区三区色视频| 欧美精品丝袜久久久中文字幕| 国产999精品久久久久久绿帽| 三级欧美韩日大片在线看| 国产精品午夜久久| 欧美一区二区三区视频在线| 99国产一区二区三精品乱码| 美洲天堂一区二卡三卡四卡视频| 综合激情成人伊人| 久久久久久免费网| 日韩三级免费观看| 在线日韩国产精品| 成人一道本在线|