]> granicus.if.org Git - php/commitdiff
Add __NAMESPACE__ auto-constant.
authorStanislav Malyshev <stas@php.net>
Tue, 1 Apr 2003 09:22:41 +0000 (09:22 +0000)
committerStanislav Malyshev <stas@php.net>
Tue, 1 Apr 2003 09:22:41 +0000 (09:22 +0000)
Zend/zend_language_parser.y
Zend/zend_language_scanner.l

index 35689198b6eebcd3b4770c5bda19d81f6566113b..361b7ba246bb582332892d3cbc1b341f8493fc3f 100644 (file)
 %token T_FUNC_C
 %token T_LINE
 %token T_FILE
+%token T_NAMESPACE_C
 %token T_COMMENT
 %token T_DOC_COMMENT
 %token T_OPEN_TAG
@@ -708,6 +709,7 @@ common_scalar:
        |       T_FILE                                          { $$ = $1; }
        |       T_CLASS_C                                       { $$ = $1; }
        |       T_FUNC_C                                        { $$ = $1; }
+       |       T_NAMESPACE_C                           { $$ = $1; }
 ;
 
 
index 800261580fa54d1f0b05109ac6710a10ed227071..30a6c752f8d253f5309e4e224493f64ac7751ea7 100644 (file)
@@ -1012,6 +1012,19 @@ NAMESPACE_NAME ({LABEL}":")+{LABEL}
        return T_FILE;
 }
 
+<ST_IN_SCRIPTING>"__NAMESPACE__" {
+       char *ns_name;
+       if(CG(active_namespace) == &CG(global_namespace)) {
+               ns_name = "";
+       } else {
+               ns_name = CG(active_namespace)->name;
+       }
+
+       zendlval->value.str.len = strlen(ns_name);
+       zendlval->value.str.val = estrndup(ns_name, zendlval->value.str.len);
+       zendlval->type = IS_STRING;
+       return T_NAMESPACE_C;
+}
 
 <INITIAL>(([^<]|"<"[^?%s<]){1,400})|"<s"|"<" {
        zendlval->value.str.val = (char *) estrndup(yytext, yyleng);