summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2003-04-01 09:22:41 +0000
committerStanislav Malyshev <stas@php.net>2003-04-01 09:22:41 +0000
commit59af205988e439563a8503d168d0abeac7704198 (patch)
tree90923498e4813c8155d8d600f7204097a25b26ef
parentf9fae74ab60005edee5df0fbe8efae4352afe941 (diff)
downloadphp-git-59af205988e439563a8503d168d0abeac7704198.tar.gz
Add __NAMESPACE__ auto-constant.
-rw-r--r--Zend/zend_language_parser.y2
-rw-r--r--Zend/zend_language_scanner.l13
2 files changed, 15 insertions, 0 deletions
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index 35689198b6..361b7ba246 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -129,6 +129,7 @@
%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; }
;
diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l
index 800261580f..30a6c752f8 100644
--- a/Zend/zend_language_scanner.l
+++ b/Zend/zend_language_scanner.l
@@ -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);