%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
| T_CONSTANT_ENCAPSED_STRING { $$ = $1; }
| T_LINE { $$ = $1; }
| T_FILE { $$ = $1; }
+ | T_CLASS_C { $$ = $1; }
+ | T_FUNC_C { $$ = $1; }
;
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;