cvs: ZendEngine2 / zend_compile.c zend_language_parser.y

From: Date: Wed, 17 Jul 2002 18:36:29 +0000
Subject: cvs: ZendEngine2 / zend_compile.c zend_language_parser.y
Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-265@lists.php.net to get a copy of this message
andi Wed Jul 17 14:36:29 2002 EDT Modified files: /ZendEngine2 zend_compile.c zend_language_parser.y Log: - Rejuggle some code. Index: ZendEngine2/zend_compile.c diff -u ZendEngine2/zend_compile.c:1.293 ZendEngine2/zend_compile.c:1.294 --- ZendEngine2/zend_compile.c:1.293 Mon Jul 15 14:09:56 2002 +++ ZendEngine2/zend_compile.c Wed Jul 17 14:36:29 2002 @@ -918,6 +918,9 @@ op_array.scope = CG(active_class_entry); if (is_method) { + char *foo; + + foo = CG(active_class_entry)->name; zend_hash_update(&CG(active_class_entry)->function_table, name, name_len+1, &op_array, sizeof(zend_op_array), (void **) &CG(active_op_array)); if ((CG(active_class_entry)->name_length == (uint) name_len) && (!memcmp(CG(active_class_entry)->name, name, name_len))) { CG(active_class_entry)->constructor = (zend_function *) CG(active_op_array); @@ -2046,7 +2049,7 @@ new_class_entry->handle_property_get = NULL; /* code for inheritance from parent class */ - if (parent_class_name) { + if (parent_class_name->op_type == IS_CONST) { zend_class_entry *parent_class, **parent_class_p; zend_function tmp_zend_function; zval *tmp; Index: ZendEngine2/zend_language_parser.y diff -u ZendEngine2/zend_language_parser.y:1.63 ZendEngine2/zend_language_parser.y:1.64 --- ZendEngine2/zend_language_parser.y:1.63 Mon Jul 15 14:09:56 2002 +++ ZendEngine2/zend_language_parser.y Wed Jul 17 14:36:29 2002 @@ -271,8 +271,12 @@ '(' parameter_list ')' '{' inner_statement_list '}' { zend_do_end_function_declaration(&$1 TSRMLS_CC); } | T_OLD_FUNCTION { $1.u.opline_num = CG(zend_lineno); } is_reference T_STRING { zend_do_begin_function_declaration(&$1, &$4, 0, $3.op_type TSRMLS_CC); } parameter_list '(' inner_statement_list ')' ';' { zend_do_end_function_declaration(&$1 TSRMLS_CC); } - | T_CLASS declaration_class_name { zend_do_begin_class_declaration(&$1, &$2, NULL TSRMLS_CC); } '{' class_statement_list '}' { zend_do_end_class_declaration(&$1 TSRMLS_CC); } - | T_CLASS declaration_class_name T_EXTENDS T_STRING { zend_do_begin_class_declaration(&$1, &$2, &$4 TSRMLS_CC); } '{' class_statement_list '}' { zend_do_end_class_declaration(&$1 TSRMLS_CC); } + | T_CLASS declaration_class_name extends_from { zend_do_begin_class_declaration(&$1, &$2, &$3 TSRMLS_CC); } '{' class_statement_list '}' { zend_do_end_class_declaration(&$1 TSRMLS_CC); } +; + +extends_from: + /* empty */ { $$.op_type = IS_UNUSED; } + | T_EXTENDS T_STRING { $$ = $2; } ; declaration_class_name: @@ -432,8 +436,7 @@ parameter_list ')' '{' inner_statement_list '}' { zend_do_end_function_declaration(&$1 TSRMLS_CC); } | T_OLD_FUNCTION { $1.u.opline_num = CG(zend_lineno); } is_reference T_STRING { zend_do_begin_function_declaration(&$1, &$4, 1, $3.op_type TSRMLS_CC); } parameter_list '(' inner_statement_list ')' ';' { zend_do_end_function_declaration(&$1 TSRMLS_CC); } - | T_CLASS T_STRING { zend_do_begin_class_declaration(&$1, &$2, NULL TSRMLS_CC); } '{' class_statement_list '}' { zend_do_end_class_declaration(&$1 TSRMLS_CC); } - | T_CLASS T_STRING T_EXTENDS T_STRING { zend_do_begin_class_declaration(&$1, &$2, &$4 TSRMLS_CC); } '{' class_statement_list '}' { zend_do_end_class_declaration(&$1 TSRMLS_CC); } + | T_CLASS T_STRING extends_from { zend_do_begin_class_declaration(&$1, &$2, &$3 TSRMLS_CC); } '{' class_statement_list '}' { zend_do_end_class_declaration(&$1 TSRMLS_CC); } ; is_reference:

« previous php.zend-engine.cvs (#265) next »