📄 parse.c
字号:
/* A Bison parser, made from ./parse.y by GNU Bison version 1.27 */#define YYBISON 1 /* Identify Bison output. */#define yyparse java_parse#define yylex java_lex#define yyerror java_error#define yylval java_lval#define yychar java_char#define yydebug java_debug#define yynerrs java_nerrs#define PLUS_TK 257#define MINUS_TK 258#define MULT_TK 259#define DIV_TK 260#define REM_TK 261#define LS_TK 262#define SRS_TK 263#define ZRS_TK 264#define AND_TK 265#define XOR_TK 266#define OR_TK 267#define BOOL_AND_TK 268#define BOOL_OR_TK 269#define EQ_TK 270#define NEQ_TK 271#define GT_TK 272#define GTE_TK 273#define LT_TK 274#define LTE_TK 275#define PLUS_ASSIGN_TK 276#define MINUS_ASSIGN_TK 277#define MULT_ASSIGN_TK 278#define DIV_ASSIGN_TK 279#define REM_ASSIGN_TK 280#define LS_ASSIGN_TK 281#define SRS_ASSIGN_TK 282#define ZRS_ASSIGN_TK 283#define AND_ASSIGN_TK 284#define XOR_ASSIGN_TK 285#define OR_ASSIGN_TK 286#define PUBLIC_TK 287#define PRIVATE_TK 288#define PROTECTED_TK 289#define STATIC_TK 290#define FINAL_TK 291#define SYNCHRONIZED_TK 292#define VOLATILE_TK 293#define TRANSIENT_TK 294#define NATIVE_TK 295#define PAD_TK 296#define ABSTRACT_TK 297#define MODIFIER_TK 298#define DECR_TK 299#define INCR_TK 300#define DEFAULT_TK 301#define IF_TK 302#define THROW_TK 303#define BOOLEAN_TK 304#define DO_TK 305#define IMPLEMENTS_TK 306#define THROWS_TK 307#define BREAK_TK 308#define IMPORT_TK 309#define ELSE_TK 310#define INSTANCEOF_TK 311#define RETURN_TK 312#define VOID_TK 313#define CATCH_TK 314#define INTERFACE_TK 315#define CASE_TK 316#define EXTENDS_TK 317#define FINALLY_TK 318#define SUPER_TK 319#define WHILE_TK 320#define CLASS_TK 321#define SWITCH_TK 322#define CONST_TK 323#define TRY_TK 324#define FOR_TK 325#define NEW_TK 326#define CONTINUE_TK 327#define GOTO_TK 328#define PACKAGE_TK 329#define THIS_TK 330#define BYTE_TK 331#define SHORT_TK 332#define INT_TK 333#define LONG_TK 334#define CHAR_TK 335#define INTEGRAL_TK 336#define FLOAT_TK 337#define DOUBLE_TK 338#define FP_TK 339#define ID_TK 340#define REL_QM_TK 341#define REL_CL_TK 342#define NOT_TK 343#define NEG_TK 344#define ASSIGN_ANY_TK 345#define ASSIGN_TK 346#define OP_TK 347#define CP_TK 348#define OCB_TK 349#define CCB_TK 350#define OSB_TK 351#define CSB_TK 352#define SC_TK 353#define C_TK 354#define DOT_TK 355#define STRING_LIT_TK 356#define CHAR_LIT_TK 357#define INT_LIT_TK 358#define FP_LIT_TK 359#define TRUE_TK 360#define FALSE_TK 361#define BOOL_LIT_TK 362#define NULL_TK 363#line 48 "./parse.y"#include "config.h"#include "system.h"#include <dirent.h>#include "tree.h"#include "rtl.h"#include "obstack.h"#include "toplev.h"#include "flags.h"#include "java-tree.h"#include "jcf.h"#include "lex.h"#include "parse.h"#include "zipfile.h"#include "convert.h"#include "buffer.h"#include "xref.h"#include "except.h"#ifndef DIR_SEPARATOR#define DIR_SEPARATOR '/'#endif/* Local function prototypes */static char *java_accstring_lookup PROTO ((int));static void classitf_redefinition_error PROTO ((char *,tree, tree, tree));static void variable_redefinition_error PROTO ((tree, tree, tree, int));static void check_modifiers PROTO ((char *, int, int));static tree create_class PROTO ((int, tree, tree, tree));static tree create_interface PROTO ((int, tree, tree));static tree find_field PROTO ((tree, tree));static tree lookup_field_wrapper PROTO ((tree, tree));static int duplicate_declaration_error_p PROTO ((tree, tree, tree));static void register_fields PROTO ((int, tree, tree));static tree parser_qualified_classname PROTO ((tree));static int parser_check_super PROTO ((tree, tree, tree));static int parser_check_super_interface PROTO ((tree, tree, tree));static void check_modifiers_consistency PROTO ((int));static tree lookup_cl PROTO ((tree));static tree lookup_java_method2 PROTO ((tree, tree, int));static tree method_header PROTO ((int, tree, tree, tree));static void fix_method_argument_names PROTO ((tree ,tree));static tree method_declarator PROTO ((tree, tree));static void parse_warning_context PVPROTO ((tree cl, const char *msg, ...)) ATTRIBUTE_PRINTF_2;static void issue_warning_error_from_context PROTO ((tree, const char *msg, va_list));static tree parse_jdk1_1_error PROTO ((char *));static void complete_class_report_errors PROTO ((jdep *));static int process_imports PROTO ((void));static void read_import_dir PROTO ((tree));static int find_in_imports_on_demand PROTO ((tree));static int find_in_imports PROTO ((tree));static int check_pkg_class_access PROTO ((tree, tree));static tree resolve_package PROTO ((tree, tree *));static tree lookup_package_type PROTO ((char *, int));static tree lookup_package_type_and_set_next PROTO ((char *, int, tree *));static tree resolve_class PROTO ((tree, tree, tree));static void declare_local_variables PROTO ((int, tree, tree));static void source_start_java_method PROTO ((tree));static void source_end_java_method PROTO ((void));static void expand_start_java_method PROTO ((tree));static tree find_name_in_single_imports PROTO ((tree));static void check_abstract_method_header PROTO ((tree));static tree lookup_java_interface_method2 PROTO ((tree, tree));static tree resolve_expression_name PROTO ((tree, tree *));static tree maybe_create_class_interface_decl PROTO ((tree, tree, tree));static int check_class_interface_creation PROTO ((int, int, tree, tree, tree, tree));static tree patch_method_invocation PROTO ((tree, tree, tree, int *, tree *));static int breakdown_qualified PROTO ((tree *, tree *, tree));static tree resolve_and_layout PROTO ((tree, tree));static tree resolve_no_layout PROTO ((tree, tree));static int invocation_mode PROTO ((tree, int));static tree find_applicable_accessible_methods_list PROTO ((int, tree, tree, tree));static void search_applicable_methods_list PROTO ((int, tree, tree, tree, tree *, tree *));static tree find_most_specific_methods_list PROTO ((tree));static int argument_types_convertible PROTO ((tree, tree));static tree patch_invoke PROTO ((tree, tree, tree));static tree lookup_method_invoke PROTO ((int, tree, tree, tree, tree));static tree register_incomplete_type PROTO ((int, tree, tree, tree));static tree obtain_incomplete_type PROTO ((tree));static tree java_complete_lhs PROTO ((tree));static tree java_complete_tree PROTO ((tree));static void java_complete_expand_method PROTO ((tree));static int unresolved_type_p PROTO ((tree, tree *));static void create_jdep_list PROTO ((struct parser_ctxt *));static tree build_expr_block PROTO ((tree, tree));static tree enter_block PROTO ((void));static tree enter_a_block PROTO ((tree));static tree exit_block PROTO ((void));static tree lookup_name_in_blocks PROTO ((tree));static void maybe_absorb_scoping_blocks PROTO ((void));static tree build_method_invocation PROTO ((tree, tree));static tree build_new_invocation PROTO ((tree, tree));static tree build_assignment PROTO ((int, int, tree, tree));static tree build_binop PROTO ((enum tree_code, int, tree, tree));static int check_final_assignment PROTO ((tree ,tree));static tree patch_assignment PROTO ((tree, tree, tree ));static tree patch_binop PROTO ((tree, tree, tree));static tree build_unaryop PROTO ((int, int, tree));static tree build_incdec PROTO ((int, int, tree, int));static tree patch_unaryop PROTO ((tree, tree));static tree build_cast PROTO ((int, tree, tree));static tree build_null_of_type PROTO ((tree));static tree patch_cast PROTO ((tree, tree));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -