📄 parse.c
字号:
/* A Bison parser, made from parse.y by Bison version A2.5 (Andrew Consortium) */#define YYBISON 1 /* Identify Bison output. */#define IDENTIFIER 258#define TYPENAME 259#define SELFNAME 260#define PFUNCNAME 261#define SCSPEC 262#define TYPESPEC 263#define CV_QUALIFIER 264#define CONSTANT 265#define STRING 266#define ELLIPSIS 267#define SIZEOF 268#define ENUM 269#define IF 270#define ELSE 271#define WHILE 272#define DO 273#define FOR 274#define SWITCH 275#define CASE 276#define DEFAULT 277#define BREAK 278#define CONTINUE 279#define RETURN 280#define GOTO 281#define ASM_KEYWORD 282#define GCC_ASM_KEYWORD 283#define TYPEOF 284#define ALIGNOF 285#define SIGOF 286#define ATTRIBUTE 287#define EXTENSION 288#define LABEL 289#define REALPART 290#define IMAGPART 291#define AGGR 292#define VISSPEC 293#define DELETE 294#define NEW 295#define THIS 296#define OPERATOR 297#define CXX_TRUE 298#define CXX_FALSE 299#define NAMESPACE 300#define TYPENAME_KEYWORD 301#define USING 302#define LEFT_RIGHT 303#define TEMPLATE 304#define TYPEID 305#define DYNAMIC_CAST 306#define STATIC_CAST 307#define REINTERPRET_CAST 308#define CONST_CAST 309#define SCOPE 310#define EMPTY 311#define PTYPENAME 312#define NSNAME 313#define THROW 314#define ASSIGN 315#define OROR 316#define ANDAND 317#define MIN_MAX 318#define EQCOMPARE 319#define ARITHCOMPARE 320#define LSHIFT 321#define RSHIFT 322#define POINTSAT_STAR 323#define DOT_STAR 324#define UNARY 325#define PLUSPLUS 326#define MINUSMINUS 327#define HYPERUNARY 328#define PAREN_STAR_PAREN 329#define POINTSAT 330#define TRY 331#define CATCH 332#define TYPENAME_ELLIPSIS 333#define PRE_PARSED_FUNCTION_DECL 334#define EXTERN_LANG_STRING 335#define ALL 336#define PRE_PARSED_CLASS_DECL 337#define DEFARG 338#define DEFARG_MARKER 339#define TYPENAME_DEFN 340#define IDENTIFIER_DEFN 341#define PTYPENAME_DEFN 342#define END_OF_LINE 343#define END_OF_SAVED_INPUT 344#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"#include "except.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;extern tree last_tree;/* FSF LOCAL dje prefix attributes */extern tree strip_attrs PROTO((tree));/* END FSF LOCAL *//* 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;static tree empty_parms PROTO((void));/* Nonzero if we have an `extern "C"' acting as an extern specifier. */int have_extern_spec;int used_extern_spec;/* Cons up an empty parameter list. */#ifdef __GNUC____inline#endifstatic treeempty_parms (){ tree parms; if (strict_prototype || current_class_type != NULL) parms = void_list_node; else parms = NULL_TREE; return parms;}#line 101 "parse.y"typedef union {long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; } YYSTYPE;#line 289 "parse.y"/* List of types and structure classes of the current declaration. */static tree current_declspecs = NULL_TREE;/* 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 = NULL_TREE;/* 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 PROTO((FILE *, int, YYSTYPE));extern tree combine_strings PROTO((tree));#include <stdio.h>#ifndef __cplusplus#ifndef __STDC__#define const#endif#endif#define YYFINAL 1529#define YYFLAG -32768#define YYNTBASE 114#define YYTRANSLATE(x) ((unsigned)(x) <= 344 ? yytranslate[x] : 376)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, 112, 2, 2, 2, 83, 71, 2, 94, 110, 81, 79, 60, 80, 93, 82, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 63, 61, 75, 65, 76, 66, 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, 95, 2, 113, 70, 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,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -