📄 parse.c
字号:
/* A Bison parser, made from parse.y with Bison version GNU Bison version 1.22 */#define YYBISON 1 /* Identify Bison output. */#define IDENTIFIER 258#define TYPENAME 259#define SCSPEC 260#define TYPESPEC 261#define TYPE_QUAL 262#define CONSTANT 263#define STRING 264#define ELLIPSIS 265#define SIZEOF 266#define ENUM 267#define IF 268#define ELSE 269#define WHILE 270#define DO 271#define FOR 272#define SWITCH 273#define CASE 274#define DEFAULT 275#define BREAK 276#define CONTINUE 277#define RETURN 278#define GOTO 279#define ASM_KEYWORD 280#define GCC_ASM_KEYWORD 281#define TYPEOF 282#define ALIGNOF 283#define SIGOF 284#define ATTRIBUTE 285#define EXTENSION 286#define LABEL 287#define AGGR 288#define VISSPEC 289#define DELETE 290#define NEW 291#define OVERLOAD 292#define THIS 293#define OPERATOR 294#define CXX_TRUE 295#define CXX_FALSE 296#define NAMESPACE 297#define TYPENAME_KEYWORD 298#define USING 299#define LEFT_RIGHT 300#define TEMPLATE 301#define TYPEID 302#define DYNAMIC_CAST 303#define STATIC_CAST 304#define REINTERPRET_CAST 305#define CONST_CAST 306#define SCOPE 307#define EMPTY 308#define PTYPENAME 309#define NSNAME 310#define THROW 311#define ASSIGN 312#define OROR 313#define ANDAND 314#define MIN_MAX 315#define EQCOMPARE 316#define ARITHCOMPARE 317#define LSHIFT 318#define RSHIFT 319#define POINTSAT_STAR 320#define DOT_STAR 321#define UNARY 322#define PLUSPLUS 323#define MINUSMINUS 324#define HYPERUNARY 325#define PAREN_STAR_PAREN 326#define POINTSAT 327#define TRY 328#define CATCH 329#define TYPENAME_ELLIPSIS 330#define PRE_PARSED_FUNCTION_DECL 331#define EXTERN_LANG_STRING 332#define ALL 333#define PRE_PARSED_CLASS_DECL 334#define TYPENAME_DEFN 335#define IDENTIFIER_DEFN 336#define PTYPENAME_DEFN 337#define END_OF_LINE 338#define END_OF_SAVED_INPUT 339#line 29 "parse.y"/* Cause the `yydebug' variable to be defined. */#define YYDEBUG 1#include "config.h"#include <stdio.h>#include <errno.h>#include "tree.h"#include "input.h"#include "flags.h"#include "lex.h"#include "cp-tree.h"#include "output.h"/* Since parsers are distinct for each language, put the language string definition here. (fnf) */char *language_string = "GNU C++";extern tree void_list_node;extern struct obstack permanent_obstack;#ifndef errnoextern int errno;#endifextern int end_of_file;extern int current_class_depth;/* FSF LOCAL dje prefix attributes */extern tree strip_attrs PROTO((tree));/* END FSF LOCAL */void yyerror ();/* Like YYERROR but do call yyerror. */#define YYERROR1 { yyerror ("syntax error"); YYERROR; }#define OP0(NODE) (TREE_OPERAND (NODE, 0))#define OP1(NODE) (TREE_OPERAND (NODE, 1))/* Contains the statement keyword (if/while/do) to include in an error message if the user supplies an empty conditional expression. */static char *cond_stmt_keyword;/* Nonzero if we have an `extern "C"' acting as an extern specifier. */int have_extern_spec;int used_extern_spec;void yyhook ();/* Cons up an empty parameter list. */#ifdef __GNUC____inline#endifstatic treeempty_parms (){ tree parms; if (strict_prototype) parms = void_list_node; else parms = NULL_TREE; return parms;}#line 100 "parse.y"typedef union {long itype; tree ttype; char *strtype; enum tree_code code; } YYSTYPE;#line 278 "parse.y"/* List of types and structure classes of the current declaration. */static tree current_declspecs;/* List of prefix attributes in effect. Prefix attributes are parsed by the reserved_declspecs and declmods rules. They create a list that contains *both* declspecs and attrs. *//* ??? It is not clear yet that all cases where an attribute can now appear in a declspec list have been updated. */static tree prefix_attributes;/* When defining an aggregate, this is the most recent one being defined. */static tree current_aggr;/* Tell yyparse how to print a token's value, if yydebug is set. */#define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)extern void yyprint ();extern tree combine_strings PROTO((tree));#ifndef YYLTYPEtypedef struct yyltype { int timestamp; int first_line; int first_column; int last_line; int last_column; char *text; } yyltype;#define YYLTYPE yyltype#endif#include <stdio.h>#ifndef __cplusplus#ifndef __STDC__#define const#endif#endif#define YYFINAL 1399#define YYFLAG -32768#define YYNTBASE 109#define YYTRANSLATE(x) ((unsigned)(x) <= 339 ? yytranslate[x] : 364)static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 107, 2, 2, 2, 80, 68, 2, 91, 105, 78, 76, 57, 77, 90, 79, 2, 2, 2,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -