Zebediah Figura (@zfigura) commented about libs/vkd3d-shader/hlsl.y:
attribute_list_optional KW_WHILE '(' expr ')' statement
attribute_list_optional loop_scope_start KW_WHILE '(' expr ')' statement {
$$ = create_loop(ctx, LOOP_WHILE, &$1, NULL, $4, NULL, $6, &@2);
$$ = create_loop(ctx, LOOP_WHILE, &$1, NULL, $5, NULL, $7, &@3);
hlsl_pop_scope(ctx); }
- | attribute_list_optional KW_DO statement KW_WHILE '(' expr ')' ';'
- | attribute_list_optional loop_scope_start KW_DO statement KW_WHILE '(' expr ')' ';' {
$$ = create_loop(ctx, LOOP_DO_WHILE, &$1, NULL, $6, NULL, $3, &@2);
$$ = create_loop(ctx, LOOP_DO_WHILE, &$1, NULL, $7, NULL, $4, &@3);
hlsl_pop_scope(ctx); }
- | attribute_list_optional KW_FOR '(' scope_start expr_statement expr_statement expr_optional ')' statement
- | attribute_list_optional loop_scope_start KW_FOR '(' expr_statement expr_statement expr_optional ')' statement
Why do we need to move the token?