@@ -76,7 +76,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
7676%left ' ^'
7777%left ' &'
7878%nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL
79- %nonassoc ' <' T_IS_SMALLER_OR_EQUAL ' >' T_IS_GREATER_OR_EQUAL
79+ %nonassoc ' <' T_IS_SMALLER_OR_EQUAL ' >' T_IS_GREATER_OR_EQUAL T_SPACESHIP
8080%left T_SL T_SR
8181%left ' +' ' -' ' .'
8282%left ' *' ' /' ' %'
@@ -131,6 +131,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
131131%token T_IS_NOT_IDENTICAL " !== (T_IS_NOT_IDENTICAL)"
132132%token T_IS_SMALLER_OR_EQUAL " <= (T_IS_SMALLER_OR_EQUAL)"
133133%token T_IS_GREATER_OR_EQUAL " >= (T_IS_GREATER_OR_EQUAL)"
134+ %token T_SPACESHIP " <=> (T_SPACESHIP)"
134135%token T_SL " << (T_SL)"
135136%token T_SR " >> (T_SR)"
136137%token T_INSTANCEOF " instanceof (T_INSTANCEOF)"
@@ -842,6 +843,8 @@ expr_without_variable:
842843 { $$ = zend_ast_create(ZEND_AST_GREATER, $1 , $3 ); }
843844 | expr T_IS_GREATER_OR_EQUAL expr
844845 { $$ = zend_ast_create(ZEND_AST_GREATER_EQUAL, $1 , $3 ); }
846+ | expr T_SPACESHIP expr
847+ { $$ = zend_ast_create_binary_op(ZEND_SPACESHIP, $1 , $3 ); }
845848 | expr T_INSTANCEOF class_name_reference
846849 { $$ = zend_ast_create(ZEND_AST_INSTANCEOF, $1 , $3 ); }
847850 | ' (' expr ' )' { $$ = $2 ; }
0 commit comments