Skip to content

Commit e5c7f71

Browse files
committed
Don't specify precedence for T_INC/T_DEC
As these do not operate on expressions, precedence is meaningless for them.
1 parent c1fbc39 commit e5c7f71

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

Zend/zend_language_parser.y

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
7575
%left '*' '/' '%'
7676
%precedence '!'
7777
%precedence T_INSTANCEOF
78-
%precedence '~' T_INC T_DEC T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@'
78+
%precedence '~' T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@'
7979
%right T_POW
8080
%precedence T_NEW T_CLONE
8181

@@ -938,8 +938,8 @@ expr:
938938
| expr '%' expr { $$ = zend_ast_create_binary_op(ZEND_MOD, $1, $3); }
939939
| expr T_SL expr { $$ = zend_ast_create_binary_op(ZEND_SL, $1, $3); }
940940
| expr T_SR expr { $$ = zend_ast_create_binary_op(ZEND_SR, $1, $3); }
941-
| '+' expr %prec T_INC { $$ = zend_ast_create(ZEND_AST_UNARY_PLUS, $2); }
942-
| '-' expr %prec T_INC { $$ = zend_ast_create(ZEND_AST_UNARY_MINUS, $2); }
941+
| '+' expr %prec '~' { $$ = zend_ast_create(ZEND_AST_UNARY_PLUS, $2); }
942+
| '-' expr %prec '~' { $$ = zend_ast_create(ZEND_AST_UNARY_MINUS, $2); }
943943
| '!' expr { $$ = zend_ast_create_ex(ZEND_AST_UNARY_OP, ZEND_BOOL_NOT, $2); }
944944
| '~' expr { $$ = zend_ast_create_ex(ZEND_AST_UNARY_OP, ZEND_BW_NOT, $2); }
945945
| expr T_IS_IDENTICAL expr

ext/tokenizer/tokenizer_data.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) {
6464
REGISTER_LONG_CONSTANT("T_SL", T_SL, CONST_CS | CONST_PERSISTENT);
6565
REGISTER_LONG_CONSTANT("T_SR", T_SR, CONST_CS | CONST_PERSISTENT);
6666
REGISTER_LONG_CONSTANT("T_INSTANCEOF", T_INSTANCEOF, CONST_CS | CONST_PERSISTENT);
67-
REGISTER_LONG_CONSTANT("T_INC", T_INC, CONST_CS | CONST_PERSISTENT);
68-
REGISTER_LONG_CONSTANT("T_DEC", T_DEC, CONST_CS | CONST_PERSISTENT);
6967
REGISTER_LONG_CONSTANT("T_INT_CAST", T_INT_CAST, CONST_CS | CONST_PERSISTENT);
7068
REGISTER_LONG_CONSTANT("T_DOUBLE_CAST", T_DOUBLE_CAST, CONST_CS | CONST_PERSISTENT);
7169
REGISTER_LONG_CONSTANT("T_STRING_CAST", T_STRING_CAST, CONST_CS | CONST_PERSISTENT);
@@ -88,6 +86,8 @@ void tokenizer_register_constants(INIT_FUNC_ARGS) {
8886
REGISTER_LONG_CONSTANT("T_STRING_VARNAME", T_STRING_VARNAME, CONST_CS | CONST_PERSISTENT);
8987
REGISTER_LONG_CONSTANT("T_NUM_STRING", T_NUM_STRING, CONST_CS | CONST_PERSISTENT);
9088
REGISTER_LONG_CONSTANT("T_EVAL", T_EVAL, CONST_CS | CONST_PERSISTENT);
89+
REGISTER_LONG_CONSTANT("T_INC", T_INC, CONST_CS | CONST_PERSISTENT);
90+
REGISTER_LONG_CONSTANT("T_DEC", T_DEC, CONST_CS | CONST_PERSISTENT);
9191
REGISTER_LONG_CONSTANT("T_EXIT", T_EXIT, CONST_CS | CONST_PERSISTENT);
9292
REGISTER_LONG_CONSTANT("T_IF", T_IF, CONST_CS | CONST_PERSISTENT);
9393
REGISTER_LONG_CONSTANT("T_ENDIF", T_ENDIF, CONST_CS | CONST_PERSISTENT);
@@ -207,8 +207,6 @@ char *get_token_type_name(int token_type)
207207
case T_SL: return "T_SL";
208208
case T_SR: return "T_SR";
209209
case T_INSTANCEOF: return "T_INSTANCEOF";
210-
case T_INC: return "T_INC";
211-
case T_DEC: return "T_DEC";
212210
case T_INT_CAST: return "T_INT_CAST";
213211
case T_DOUBLE_CAST: return "T_DOUBLE_CAST";
214212
case T_STRING_CAST: return "T_STRING_CAST";
@@ -231,6 +229,8 @@ char *get_token_type_name(int token_type)
231229
case T_STRING_VARNAME: return "T_STRING_VARNAME";
232230
case T_NUM_STRING: return "T_NUM_STRING";
233231
case T_EVAL: return "T_EVAL";
232+
case T_INC: return "T_INC";
233+
case T_DEC: return "T_DEC";
234234
case T_EXIT: return "T_EXIT";
235235
case T_IF: return "T_IF";
236236
case T_ENDIF: return "T_ENDIF";

0 commit comments

Comments
 (0)