diff options
Diffstat (limited to 'Zend/zend_language_parser.y')
-rw-r--r-- | Zend/zend_language_parser.y | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index d127af4297..3fdfb44fba 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -274,6 +274,12 @@ unticked_class_declaration_statement: '{' class_statement_list '}' { zend_do_end_class_declaration(&$1, &$2 TSRMLS_CC); } + | interface_entry T_STRING + { zend_do_begin_class_declaration(&$1, &$2, NULL TSRMLS_CC); } + interface_extends_list + '{' + class_statement_list + '}' { zend_do_end_class_declaration(&$1, &$2 TSRMLS_CC); } ; @@ -281,7 +287,6 @@ class_entry_type: T_CLASS { $$.u.constant.value.lval = 0; } | T_ABSTRACT T_CLASS { $$.u.constant.value.lval = ZEND_ACC_ABSTRACT_CLASS; } | T_FINAL T_CLASS { $$.u.constant.value.lval = ZEND_ACC_FINAL_CLASS; } - | T_INTERFACE { $$.u.constant.value.lval = ZEND_ACC_INTERFACE; } ; extends_from: @@ -289,6 +294,15 @@ extends_from: | T_EXTENDS fully_qualified_class_name { $$ = $2; } ; +interface_entry: + T_INTERFACE { $$.u.constant.value.lval = ZEND_ACC_INTERFACE; } +; + +interface_extends_list: + /* empty */ + | T_EXTENDS interface_list +; + implements_list: /* empty */ | T_IMPLEMENTS interface_list |