#pragma lib
[m6w6/ext-psi] / src / parser_proc_grammar.y
index e0eca666d4e3b66c3b46865a589b50e87e17f7c1..f9925cbdd254c5192ab0ad96a5b1e7fe23488432 100644 (file)
@@ -87,6 +87,10 @@ static inline void psi_parser_proc_add_impl(struct psi_parser *P, struct psi_imp
        }
        P->impls = psi_plist_add(P->impls, &impl);
 }
+static inline void psi_parser_proc_add_lib(struct psi_parser *P, zend_string *lib) {
+       char *libname = strdup(lib->val);
+       P->file.libnames = psi_plist_add(P->file.libnames, &libname);
+}
 
 /* end code */
 }
@@ -390,7 +394,7 @@ struct psi_parser;
 %type          <struct psi_token **>                           impl_stmt
 %destructor    {psi_impl_stmt_free(&$$);}                      impl_stmt
 %type          <struct psi_token *>                            impl_type_token impl_type_restricted_token impl_type_extended_token callback_rval let_func_token set_func_token assert_stmt_token
-%destructor    {psi_token_free(&$$);}                          impl_type_token impl_type_restricted_token impl_type_extended_token callback_rval let_func_token set_func_token assert_stmt_token
+%destructor    {}                                                                      impl_type_token impl_type_restricted_token impl_type_extended_token callback_rval let_func_token set_func_token assert_stmt_token
 %type          <struct psi_plist *>                            impl_args impl_stmts let_exps let_func_exps callback_arg_list callback_args set_exps set_func_exps free_exps
 %destructor    {psi_plist_free($$);}                           impl_args impl_stmts let_exps let_func_exps callback_arg_list callback_args set_exps set_func_exps free_exps
 
@@ -435,8 +439,7 @@ block:
        }
 }
 |      lib {
-       char *libname = strdup($lib->text->val);
-       P->file.libnames = psi_plist_add(P->file.libnames, &libname);
+       psi_parser_proc_add_lib(P, $lib->text);
 }
 |      constant {
        psi_parser_proc_add_const(P, $constant);
@@ -474,6 +477,9 @@ lib:
        LIB QUOTED_STRING EOS {
        $lib = $QUOTED_STRING;
 }
+|      HASH PRAGMA LIB QUOTED_STRING EOS {
+       $lib = $QUOTED_STRING;
+}
 ;
 
 cpp: