]> granicus.if.org Git - php/commitdiff
MFZE1
authorfoobar <sniper@php.net>
Wed, 10 Apr 2002 21:23:01 +0000 (21:23 +0000)
committerfoobar <sniper@php.net>
Wed, 10 Apr 2002 21:23:01 +0000 (21:23 +0000)
Zend/zend_language_parser.y
Zend/zend_language_scanner.l

index 8f8fbe44ff8ef2c5ef7842ee9b093dba15a50804..17cd896db3e332a39986912f1062494e677528e8 100644 (file)
 %token T_DOUBLE_ARROW
 %token T_LIST
 %token T_ARRAY
+%token T_CLASS_C
+%token T_FUNC_C
 %token T_LINE
 %token T_FILE
 %token T_COMMENT
@@ -599,6 +601,8 @@ common_scalar:
        |       T_CONSTANT_ENCAPSED_STRING      { $$ = $1; }
        |       T_LINE                                          { $$ = $1; }
        |       T_FILE                                          { $$ = $1; }
+       |       T_CLASS_C                                       { $$ = $1; }
+       |       T_FUNC_C                                        { $$ = $1; }
 ;
 
 
index d3b2f03c4ed44f7b6fbcb9cee32c9c8a4e5bb7b5..3919241e5f9567542af66f0ec77df8757aedb995 100644 (file)
@@ -922,6 +922,30 @@ NEWLINE ("\r"|"\n"|"\r\n")
        return T_DNUMBER;
 }
 
+<ST_IN_SCRIPTING>"__CLASS__" {
+       char *class_name = CG(active_class_entry)->name;
+       
+       if (!class_name) {
+               class_name = "";
+       }
+       zendlval->value.str.len = CG(active_class_entry)->name_length;
+       zendlval->value.str.val = estrndup(class_name, zendlval->value.str.len);
+       zendlval->type = IS_STRING;
+       return T_CLASS_C;
+}
+
+<ST_IN_SCRIPTING>"__FUNCTION__" {
+       char *func_name = CG(active_op_array)->function_name;
+       
+       if (!func_name) {
+               func_name = "";
+       }
+       zendlval->value.str.len = strlen(func_name);
+       zendlval->value.str.val = estrndup(func_name, zendlval->value.str.len);
+       zendlval->type = IS_STRING;
+       return T_FUNC_C;
+}
+
 <ST_IN_SCRIPTING>"__LINE__" {
        zendlval->value.lval = CG(zend_lineno);
        zendlval->type = IS_LONG;