📄 parse.c
字号:
/* A Bison parser, made from parse.y by GNU Bison version 1.25 */#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_KEYWORD 280#define GOTO 281#define ASM_KEYWORD 282#define TYPEOF 283#define ALIGNOF 284#define SIGOF 285#define ATTRIBUTE 286#define EXTENSION 287#define LABEL 288#define REALPART 289#define IMAGPART 290#define AGGR 291#define VISSPEC 292#define DELETE 293#define NEW 294#define THIS 295#define OPERATOR 296#define CXX_TRUE 297#define CXX_FALSE 298#define NAMESPACE 299#define TYPENAME_KEYWORD 300#define USING 301#define LEFT_RIGHT 302#define TEMPLATE 303#define TYPEID 304#define DYNAMIC_CAST 305#define STATIC_CAST 306#define REINTERPRET_CAST 307#define CONST_CAST 308#define SCOPE 309#define EMPTY 310#define PTYPENAME 311#define NSNAME 312#define THROW 313#define ASSIGN 314#define OROR 315#define ANDAND 316#define MIN_MAX 317#define EQCOMPARE 318#define ARITHCOMPARE 319#define LSHIFT 320#define RSHIFT 321#define POINTSAT_STAR 322#define DOT_STAR 323#define UNARY 324#define PLUSPLUS 325#define MINUSMINUS 326#define HYPERUNARY 327#define PAREN_STAR_PAREN 328#define POINTSAT 329#define TRY 330#define CATCH 331#define PRE_PARSED_FUNCTION_DECL 332#define EXTERN_LANG_STRING 333#define ALL 334#define PRE_PARSED_CLASS_DECL 335#define DEFARG 336#define DEFARG_MARKER 337#define TYPENAME_DEFN 338#define IDENTIFIER_DEFN 339#define PTYPENAME_DEFN 340#define END_OF_LINE 341#define END_OF_SAVED_INPUT 342#line 29 "parse.y"/* Cause the `yydebug' variable to be defined. */#define YYDEBUG 1#include "config.h"#include "system.h"#include "tree.h"#include "input.h"#include "flags.h"#include "lex.h"#include "cp-tree.h"#include "output.h"#include "except.h"#include "toplev.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;extern int end_of_file;/* 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 const char *cond_stmt_keyword;static tree empty_parms PROTO((void));static int parse_decl PROTO((tree, tree, tree, int, tree *));/* 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 93 "parse.y"typedef union {long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; } YYSTYPE;#line 287 "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 kind of the most recent one being defined. (For example, this might be class_type_node.) */static tree current_aggr;/* When defining an enumeration, this is the type of the enumeration. */static tree current_enum_type;/* 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));static intparse_decl(declarator, specs_attrs, attributes, initialized, decl) tree declarator; tree specs_attrs; tree attributes; int initialized; tree* decl;{ int sm; split_specs_attrs (specs_attrs, ¤t_declspecs, &prefix_attributes); if (current_declspecs && TREE_CODE (current_declspecs) != TREE_LIST) current_declspecs = build_decl_list (NULL_TREE, current_declspecs); if (have_extern_spec && !used_extern_spec) { current_declspecs = decl_tree_cons (NULL_TREE, get_identifier ("extern"), current_declspecs); used_extern_spec = 1; } sm = suspend_momentary (); *decl = start_decl (declarator, current_declspecs, initialized, attributes, prefix_attributes); return sm;}#include <stdio.h>#ifndef __cplusplus#ifndef __STDC__#define const#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -