@@ -2379,6 +2379,14 @@ xx_common_expr(R) ::= xx_common_expr(V) ARROW IDENTIFIER(I) . {
23792379 xx_ret_expr(&R, "property-access", &V, &identifier, NULL, status->scanner_state);
23802380 }
23812381}
2382+ /* property-access with all-caps property name: obj->RBF */
2383+ xx_common_expr(R) ::= xx_common_expr(V) ARROW CONSTANT(I) . {
2384+ {
2385+ zval identifier;
2386+ xx_ret_literal(&identifier, XX_T_IDENTIFIER, I, status->scanner_state);
2387+ xx_ret_expr(&R, "property-access", &V, &identifier, NULL, status->scanner_state);
2388+ }
2389+ }
23822390
23832391xx_common_expr(R) ::= xx_common_expr(V) ARROW BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE . {
23842392 {
@@ -2414,6 +2422,24 @@ xx_common_expr(R) ::= IDENTIFIER(V) DOUBLECOLON CONSTANT(I) . {
24142422 }
24152423}
24162424
2425+ /* static-property/constant access with all-caps class name: RBF::prop, RBF::CONST */
2426+ xx_common_expr(R) ::= CONSTANT(V) DOUBLECOLON IDENTIFIER(I) . [COMMA] {
2427+ {
2428+ zval identifier, identifier2;
2429+ xx_ret_literal(&identifier, XX_T_IDENTIFIER, V, status->scanner_state);
2430+ xx_ret_literal(&identifier2, XX_T_IDENTIFIER, I, status->scanner_state);
2431+ xx_ret_expr(&R, "static-property-access", &identifier, &identifier2, NULL, status->scanner_state);
2432+ }
2433+ }
2434+ xx_common_expr(R) ::= CONSTANT(V) DOUBLECOLON CONSTANT(I) . {
2435+ {
2436+ zval identifier, identifier2;
2437+ xx_ret_literal(&identifier, XX_T_IDENTIFIER, V, status->scanner_state);
2438+ xx_ret_literal(&identifier2, XX_T_IDENTIFIER, I, status->scanner_state);
2439+ xx_ret_expr(&R, "static-constant-access", &identifier, &identifier2, NULL, status->scanner_state);
2440+ }
2441+ }
2442+
24172443/* y = v[expr] */
24182444/*xx_common_expr(R) ::= IDENTIFIER(V) SBRACKET_OPEN xx_common_expr(I) SBRACKET_CLOSE . {
24192445 xx_ret_expr(&R, "array-access", xx_ret_literal(XX_T_IDENTIFIER, V, status->scanner_state), I, NULL, status->scanner_state);
@@ -2601,16 +2627,28 @@ xx_common_expr(R) ::= NEW STATIC PARENTHESES_OPEN xx_call_parameters(P) PARENTHE
26012627xx_common_expr(R) ::= NEW IDENTIFIER(I) . {
26022628 xx_ret_new_instance(&R, 0, I, NULL, status->scanner_state);
26032629}
2630+ /* y = new RBF (all-caps class name) */
2631+ xx_common_expr(R) ::= NEW CONSTANT(I) . {
2632+ xx_ret_new_instance(&R, 0, I, NULL, status->scanner_state);
2633+ }
26042634
26052635/* y = new MyClass() */
26062636xx_common_expr(R) ::= NEW IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE . {
26072637 xx_ret_new_instance(&R, 0, I, NULL, status->scanner_state);
26082638}
2639+ /* y = new RBF() */
2640+ xx_common_expr(R) ::= NEW CONSTANT(I) PARENTHESES_OPEN PARENTHESES_CLOSE . {
2641+ xx_ret_new_instance(&R, 0, I, NULL, status->scanner_state);
2642+ }
26092643
26102644/* y = new MyClass(false, x) */
26112645xx_common_expr(R) ::= NEW IDENTIFIER(I) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . {
26122646 xx_ret_new_instance(&R, 0, I, &P, status->scanner_state);
26132647}
2648+ /* y = new RBF(false, x) */
2649+ xx_common_expr(R) ::= NEW CONSTANT(I) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . {
2650+ xx_ret_new_instance(&R, 0, I, &P, status->scanner_state);
2651+ }
26142652
26152653/* y = new {MyClass} */
26162654xx_common_expr(R) ::= NEW BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE . {
@@ -2636,11 +2674,19 @@ xx_common_expr(R) ::= NEW xx_parameter_type(T) PARENTHESES_OPEN xx_call_paramete
26362674xx_fcall_expr(R) ::= IDENTIFIER(I) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . {
26372675 xx_ret_fcall(&R, 1, I, &P, status->scanner_state);
26382676}
2677+ /* y = RBF(false, x) — all-caps function call */
2678+ xx_fcall_expr(R) ::= CONSTANT(I) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . {
2679+ xx_ret_fcall(&R, 1, I, &P, status->scanner_state);
2680+ }
26392681
26402682/* y = f() */
26412683xx_fcall_expr(R) ::= IDENTIFIER(I) PARENTHESES_OPEN PARENTHESES_CLOSE . {
26422684 xx_ret_fcall(&R, 1, I, NULL, status->scanner_state);
26432685}
2686+ /* y = RBF() — all-caps function call */
2687+ xx_fcall_expr(R) ::= CONSTANT(I) PARENTHESES_OPEN PARENTHESES_CLOSE . {
2688+ xx_ret_fcall(&R, 1, I, NULL, status->scanner_state);
2689+ }
26442690
26452691/* y = {f}(false, x) */
26462692xx_fcall_expr(R) ::= BRACKET_OPEN IDENTIFIER(I) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . {
@@ -2658,13 +2704,43 @@ xx_scall_expr(R) ::= IDENTIFIER(O) DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN PA
26582704 efree(O->token);
26592705 efree(O);
26602706}
2707+ xx_scall_expr(R) ::= CONSTANT(O) DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN PARENTHESES_CLOSE . {
2708+ xx_ret_scall(&R, 0, O->token, 0, M, NULL, status->scanner_state);
2709+ efree(O->token);
2710+ efree(O);
2711+ }
2712+ xx_scall_expr(R) ::= IDENTIFIER(O) DOUBLECOLON CONSTANT(M) PARENTHESES_OPEN PARENTHESES_CLOSE . {
2713+ xx_ret_scall(&R, 0, O->token, 0, M, NULL, status->scanner_state);
2714+ efree(O->token);
2715+ efree(O);
2716+ }
2717+ xx_scall_expr(R) ::= CONSTANT(O) DOUBLECOLON CONSTANT(M) PARENTHESES_OPEN PARENTHESES_CLOSE . {
2718+ xx_ret_scall(&R, 0, O->token, 0, M, NULL, status->scanner_state);
2719+ efree(O->token);
2720+ efree(O);
2721+ }
26612722
26622723/* o::m(false, x) */
26632724xx_scall_expr(R) ::= IDENTIFIER(O) DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . {
26642725 xx_ret_scall(&R, 0, O->token, 0, M, &P, status->scanner_state);
26652726 efree(O->token);
26662727 efree(O);
26672728}
2729+ xx_scall_expr(R) ::= CONSTANT(O) DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . {
2730+ xx_ret_scall(&R, 0, O->token, 0, M, &P, status->scanner_state);
2731+ efree(O->token);
2732+ efree(O);
2733+ }
2734+ xx_scall_expr(R) ::= IDENTIFIER(O) DOUBLECOLON CONSTANT(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . {
2735+ xx_ret_scall(&R, 0, O->token, 0, M, &P, status->scanner_state);
2736+ efree(O->token);
2737+ efree(O);
2738+ }
2739+ xx_scall_expr(R) ::= CONSTANT(O) DOUBLECOLON CONSTANT(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . {
2740+ xx_ret_scall(&R, 0, O->token, 0, M, &P, status->scanner_state);
2741+ efree(O->token);
2742+ efree(O);
2743+ }
26682744
26692745/* static::m(false, x) */
26702746xx_scall_expr(R) ::= STATIC DOUBLECOLON IDENTIFIER(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . {
@@ -2722,11 +2798,19 @@ xx_scall_expr(R) ::= IDENTIFIER(O) DOUBLECOLON BRACKET_OPEN IDENTIFIER(M) BRACKE
27222798xx_mcall_expr(R) ::= xx_common_expr(O) ARROW IDENTIFIER(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . {
27232799 xx_ret_mcall(&R, 1, &O, M, &P, status->scanner_state);
27242800}
2801+ /* o->RBF(false, x) */
2802+ xx_mcall_expr(R) ::= xx_common_expr(O) ARROW CONSTANT(M) PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . {
2803+ xx_ret_mcall(&R, 1, &O, M, &P, status->scanner_state);
2804+ }
27252805
27262806/* o->m() */
27272807xx_mcall_expr(R) ::= xx_common_expr(O) ARROW IDENTIFIER(M) PARENTHESES_OPEN PARENTHESES_CLOSE . {
27282808 xx_ret_mcall(&R, 1, &O, M, NULL, status->scanner_state);
27292809}
2810+ /* o->RBF() */
2811+ xx_mcall_expr(R) ::= xx_common_expr(O) ARROW CONSTANT(M) PARENTHESES_OPEN PARENTHESES_CLOSE . {
2812+ xx_ret_mcall(&R, 1, &O, M, NULL, status->scanner_state);
2813+ }
27302814
27312815/* o->{m}(false, x) */
27322816xx_mcall_expr(R) ::= xx_common_expr(O) ARROW BRACKET_OPEN IDENTIFIER(M) BRACKET_CLOSE PARENTHESES_OPEN xx_call_parameters(P) PARENTHESES_CLOSE . {
@@ -2932,6 +3016,15 @@ xx_literal_expr(R) ::= IDENTIFIER(V) DOUBLECOLON CONSTANT(I) . {
29323016 xx_ret_expr(&R, "static-constant-access", &identifier, &identifier2, NULL, status->scanner_state);
29333017 }
29343018}
3019+ /* RBF::MY_CONST — all-caps class name in literal constant access */
3020+ xx_literal_expr(R) ::= CONSTANT(V) DOUBLECOLON CONSTANT(I) . {
3021+ {
3022+ zval identifier, identifier2;
3023+ xx_ret_literal(&identifier, XX_T_IDENTIFIER, V, status->scanner_state);
3024+ xx_ret_literal(&identifier2, XX_T_IDENTIFIER, I, status->scanner_state);
3025+ xx_ret_expr(&R, "static-constant-access", &identifier, &identifier2, NULL, status->scanner_state);
3026+ }
3027+ }
29353028
29363029xx_literal_expr(R) ::= CONSTANT(I) . {
29373030 xx_ret_literal(&R, XX_T_CONSTANT, I, status->scanner_state);
0 commit comments