Commit 1f5c56d1 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

vbscript: Added do while..loop statement implementation.

parent 3d349258
......@@ -661,6 +661,7 @@ static HRESULT compile_statement(compile_ctx_t *ctx, statement_t *stat)
hres = push_instr(ctx, OP_stop) == -1 ? E_OUTOFMEMORY : S_OK;
break;
case STAT_WHILE:
case STAT_WHILELOOP:
hres = compile_while_statement(ctx, (while_statement_t*)stat);
break;
default:
......
......@@ -100,7 +100,8 @@ typedef enum {
STAT_IF,
STAT_SET,
STAT_STOP,
STAT_WHILE
STAT_WHILE,
STAT_WHILELOOP
} statement_type_t;
typedef struct _statement_t {
......
......@@ -156,6 +156,8 @@ Statement
| IfStatement { $$ = $1; }
| tWHILE Expression tNL StatementsNl_opt tWEND
{ $$ = new_while_statement(ctx, STAT_WHILE, $2, $4); CHECK_ERROR; }
| tDO tWHILE Expression tNL StatementsNl_opt tLOOP
{ $$ = new_while_statement(ctx, STAT_WHILELOOP, $3, $5); CHECK_ERROR; }
| FunctionDecl { $$ = new_function_statement(ctx, $1); CHECK_ERROR; }
| tEXIT tFUNCTION { $$ = new_statement(ctx, STAT_EXITFUNC, 0); CHECK_ERROR; }
| tEXIT tPROPERTY { $$ = new_statement(ctx, STAT_EXITPROP, 0); CHECK_ERROR; }
......
......@@ -212,6 +212,19 @@ call ok((x and y), "x or y is false after while")
while false
wend
x = false
y = false
do while not (x and y)
if x then
y = true
end if
x = true
loop
call ok((x and y), "x or y is false after while")
do while false
loop
if false then
Sub testsub
x = true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment