📄 ssl_expr_parse.c
字号:
#ifndef __cplusplus/* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */static void__ssl_expr_yy_memcpy (to, from, count) char *to; char *from; unsigned int count;{ register char *f = from; register char *t = to; register int i = count; while (i-- > 0) *t++ = *f++;}#else /* __cplusplus *//* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */static void__ssl_expr_yy_memcpy (char *to, char *from, unsigned int count){ register char *t = to; register char *f = from; register int i = count; while (i-- > 0) *t++ = *f++;}#endif#endif#line 217 "/usr/local/share/bison.simple"/* The user can define YYPARSE_PARAM as the name of an argument to be passed into ssl_expr_yyparse. The argument should have type void *. It should actually point to an object. Grammar actions can access the variable by casting it to the proper pointer type. */#ifdef YYPARSE_PARAM#ifdef __cplusplus#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM#define YYPARSE_PARAM_DECL#else /* not __cplusplus */#define YYPARSE_PARAM_ARG YYPARSE_PARAM#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;#endif /* not __cplusplus */#else /* not YYPARSE_PARAM */#define YYPARSE_PARAM_ARG#define YYPARSE_PARAM_DECL#endif /* not YYPARSE_PARAM *//* Prevent warning if -Wstrict-prototypes. */#ifdef __GNUC__#ifdef YYPARSE_PARAMint ssl_expr_yyparse (void *);#elseint ssl_expr_yyparse (void);#endif#endifintssl_expr_yyparse(YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL{ register int ssl_expr_yystate; register int ssl_expr_yyn; register short *ssl_expr_yyssp; register YYSTYPE *ssl_expr_yyvsp; int ssl_expr_yyerrstatus; /* number of tokens to shift before error messages enabled */ int ssl_expr_yychar1 = 0; /* lookahead token as an internal (translated) token number */ short ssl_expr_yyssa[YYINITDEPTH]; /* the state stack */ YYSTYPE ssl_expr_yyvsa[YYINITDEPTH]; /* the semantic value stack */ short *ssl_expr_yyss = ssl_expr_yyssa; /* refer to the stacks thru separate pointers */ YYSTYPE *ssl_expr_yyvs = ssl_expr_yyvsa; /* to allow ssl_expr_yyoverflow to reallocate them elsewhere */#ifdef YYLSP_NEEDED YYLTYPE ssl_expr_yylsa[YYINITDEPTH]; /* the location stack */ YYLTYPE *ssl_expr_yyls = ssl_expr_yylsa; YYLTYPE *ssl_expr_yylsp;#define YYPOPSTACK (ssl_expr_yyvsp--, ssl_expr_yyssp--, ssl_expr_yylsp--)#else#define YYPOPSTACK (ssl_expr_yyvsp--, ssl_expr_yyssp--)#endif int ssl_expr_yystacksize = YYINITDEPTH; int ssl_expr_yyfree_stacks = 0;#ifdef YYPURE int ssl_expr_yychar; YYSTYPE ssl_expr_yylval; int ssl_expr_yynerrs;#ifdef YYLSP_NEEDED YYLTYPE ssl_expr_yylloc;#endif#endif YYSTYPE ssl_expr_yyval; /* the variable used to return */ /* semantic values from the action */ /* routines */ int ssl_expr_yylen;#if YYDEBUG != 0 if (ssl_expr_yydebug) fprintf(stderr, "Starting parse\n");#endif ssl_expr_yystate = 0; ssl_expr_yyerrstatus = 0; ssl_expr_yynerrs = 0; ssl_expr_yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ ssl_expr_yyssp = ssl_expr_yyss - 1; ssl_expr_yyvsp = ssl_expr_yyvs;#ifdef YYLSP_NEEDED ssl_expr_yylsp = ssl_expr_yyls;#endif/* Push a new state, which is found in ssl_expr_yystate . *//* In all cases, when you get here, the value and location stacks have just been pushed. so pushing a state here evens the stacks. */ssl_expr_yynewstate: *++ssl_expr_yyssp = ssl_expr_yystate; if (ssl_expr_yyssp >= ssl_expr_yyss + ssl_expr_yystacksize - 1) { /* Give user a chance to reallocate the stack */ /* Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *ssl_expr_yyvs1 = ssl_expr_yyvs; short *ssl_expr_yyss1 = ssl_expr_yyss;#ifdef YYLSP_NEEDED YYLTYPE *ssl_expr_yyls1 = ssl_expr_yyls;#endif /* Get the current used size of the three stacks, in elements. */ int size = ssl_expr_yyssp - ssl_expr_yyss + 1;#ifdef ssl_expr_yyoverflow /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. */#ifdef YYLSP_NEEDED /* This used to be a conditional around just the two extra args, but that might be undefined if ssl_expr_yyoverflow is a macro. */ ssl_expr_yyoverflow("parser stack overflow", &ssl_expr_yyss1, size * sizeof (*ssl_expr_yyssp), &ssl_expr_yyvs1, size * sizeof (*ssl_expr_yyvsp), &ssl_expr_yyls1, size * sizeof (*ssl_expr_yylsp), &ssl_expr_yystacksize);#else ssl_expr_yyoverflow("parser stack overflow", &ssl_expr_yyss1, size * sizeof (*ssl_expr_yyssp), &ssl_expr_yyvs1, size * sizeof (*ssl_expr_yyvsp), &ssl_expr_yystacksize);#endif ssl_expr_yyss = ssl_expr_yyss1; ssl_expr_yyvs = ssl_expr_yyvs1;#ifdef YYLSP_NEEDED ssl_expr_yyls = ssl_expr_yyls1;#endif#else /* no ssl_expr_yyoverflow */ /* Extend the stack our own way. */ if (ssl_expr_yystacksize >= YYMAXDEPTH) { ssl_expr_yyerror("parser stack overflow"); if (ssl_expr_yyfree_stacks) { free (ssl_expr_yyss); free (ssl_expr_yyvs);#ifdef YYLSP_NEEDED free (ssl_expr_yyls);#endif } return 2; } ssl_expr_yystacksize *= 2; if (ssl_expr_yystacksize > YYMAXDEPTH) ssl_expr_yystacksize = YYMAXDEPTH;#ifndef YYSTACK_USE_ALLOCA ssl_expr_yyfree_stacks = 1;#endif ssl_expr_yyss = (short *) YYSTACK_ALLOC (ssl_expr_yystacksize * sizeof (*ssl_expr_yyssp)); __ssl_expr_yy_memcpy ((char *)ssl_expr_yyss, (char *)ssl_expr_yyss1, size * (unsigned int) sizeof (*ssl_expr_yyssp)); ssl_expr_yyvs = (YYSTYPE *) YYSTACK_ALLOC (ssl_expr_yystacksize * sizeof (*ssl_expr_yyvsp)); __ssl_expr_yy_memcpy ((char *)ssl_expr_yyvs, (char *)ssl_expr_yyvs1, size * (unsigned int) sizeof (*ssl_expr_yyvsp));#ifdef YYLSP_NEEDED ssl_expr_yyls = (YYLTYPE *) YYSTACK_ALLOC (ssl_expr_yystacksize * sizeof (*ssl_expr_yylsp)); __ssl_expr_yy_memcpy ((char *)ssl_expr_yyls, (char *)ssl_expr_yyls1, size * (unsigned int) sizeof (*ssl_expr_yylsp));#endif#endif /* no ssl_expr_yyoverflow */ ssl_expr_yyssp = ssl_expr_yyss + size - 1; ssl_expr_yyvsp = ssl_expr_yyvs + size - 1;#ifdef YYLSP_NEEDED ssl_expr_yylsp = ssl_expr_yyls + size - 1;#endif#if YYDEBUG != 0 if (ssl_expr_yydebug) fprintf(stderr, "Stack size increased to %d\n", ssl_expr_yystacksize);#endif if (ssl_expr_yyssp >= ssl_expr_yyss + ssl_expr_yystacksize - 1) YYABORT; }#if YYDEBUG != 0 if (ssl_expr_yydebug) fprintf(stderr, "Entering state %d\n", ssl_expr_yystate);#endif goto ssl_expr_yybackup; ssl_expr_yybackup:/* Do appropriate processing given the current state. *//* Read a lookahead token if we need one and don't already have one. *//* ssl_expr_yyresume: */ /* First try to decide what to do without reference to lookahead token. */ ssl_expr_yyn = ssl_expr_yypact[ssl_expr_yystate]; if (ssl_expr_yyn == YYFLAG) goto ssl_expr_yydefault; /* Not known => get a lookahead token if don't already have one. */ /* ssl_expr_yychar is either YYEMPTY or YYEOF or a valid token in external form. */ if (ssl_expr_yychar == YYEMPTY) {#if YYDEBUG != 0 if (ssl_expr_yydebug) fprintf(stderr, "Reading a token: ");#endif ssl_expr_yychar = YYLEX; } /* Convert token to internal form (in ssl_expr_yychar1) for indexing tables with */ if (ssl_expr_yychar <= 0) /* This means end of input. */ { ssl_expr_yychar1 = 0; ssl_expr_yychar = YYEOF; /* Don't call YYLEX any more */#if YYDEBUG != 0 if (ssl_expr_yydebug) fprintf(stderr, "Now at end of input.\n");#endif } else { ssl_expr_yychar1 = YYTRANSLATE(ssl_expr_yychar);#if YYDEBUG != 0 if (ssl_expr_yydebug) { fprintf (stderr, "Next token is %d (%s", ssl_expr_yychar, ssl_expr_yytname[ssl_expr_yychar1]); /* Give the individual parser a way to print the precise meaning of a token, for further debugging info. */#ifdef YYPRINT YYPRINT (stderr, ssl_expr_yychar, ssl_expr_yylval);#endif fprintf (stderr, ")\n"); }#endif } ssl_expr_yyn += ssl_expr_yychar1; if (ssl_expr_yyn < 0 || ssl_expr_yyn > YYLAST || ssl_expr_yycheck[ssl_expr_yyn] != ssl_expr_yychar1) goto ssl_expr_yydefault; ssl_expr_yyn = ssl_expr_yytable[ssl_expr_yyn]; /* ssl_expr_yyn is what to do for this token type in this state. Negative => reduce, -ssl_expr_yyn is rule number. Positive => shift, ssl_expr_yyn is new state. New state is final state => don't bother to shift, just return success. 0, or most negative number => error. */ if (ssl_expr_yyn < 0) { if (ssl_expr_yyn == YYFLAG) goto ssl_expr_yyerrlab; ssl_expr_yyn = -ssl_expr_yyn; goto ssl_expr_yyreduce; } else if (ssl_expr_yyn == 0) goto ssl_expr_yyerrlab; if (ssl_expr_yyn == YYFINAL) YYACCEPT; /* Shift the lookahead token. */#if YYDEBUG != 0 if (ssl_expr_yydebug) fprintf(stderr, "Shifting token %d (%s), ", ssl_expr_yychar, ssl_expr_yytname[ssl_expr_yychar1]);#endif /* Discard the token being shifted unless it is eof. */ if (ssl_expr_yychar != YYEOF) ssl_expr_yychar = YYEMPTY; *++ssl_expr_yyvsp = ssl_expr_yylval;#ifdef YYLSP_NEEDED *++ssl_expr_yylsp = ssl_expr_yylloc;#endif /* count tokens shifted since error; after three, turn off error status. */ if (ssl_expr_yyerrstatus) ssl_expr_yyerrstatus--; ssl_expr_yystate = ssl_expr_yyn; goto ssl_expr_yynewstate;/* Do the default action for the current state. */ssl_expr_yydefault: ssl_expr_yyn = ssl_expr_yydefact[ssl_expr_yystate]; if (ssl_expr_yyn == 0) goto ssl_expr_yyerrlab;/* Do a reduction. ssl_expr_yyn is the number of a rule to reduce with. */ssl_expr_yyreduce: ssl_expr_yylen = ssl_expr_yyr2[ssl_expr_yyn]; if (ssl_expr_yylen > 0) ssl_expr_yyval = ssl_expr_yyvsp[1-ssl_expr_yylen]; /* implement default value of the action */#if YYDEBUG != 0 if (ssl_expr_yydebug) { int i; fprintf (stderr, "Reducing via rule %d (line %d), ", ssl_expr_yyn, ssl_expr_yyrline[ssl_expr_yyn]); /* Print the symbols being reduced, and their result. */ for (i = ssl_expr_yyprhs[ssl_expr_yyn]; ssl_expr_yyrhs[i] > 0; i++) fprintf (stderr, "%s ", ssl_expr_yytname[ssl_expr_yyrhs[i]]); fprintf (stderr, " -> %s\n", ssl_expr_yytname[ssl_expr_yyr1[ssl_expr_yyn]]); }#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -