vbscript: Improve parsing of separators in loops and switches.
Signed-off-by: Dmitry Kislyuk <dimaki@rocketmail.com> Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
adda5aa635
commit
56b31ba2e1
@ -448,10 +448,12 @@ Identifier
|
|||||||
: tIdentifier { $$ = $1; }
|
: tIdentifier { $$ = $1; }
|
||||||
| tPROPERTY { $$ = propertyW; }
|
| tPROPERTY { $$ = propertyW; }
|
||||||
|
|
||||||
/* Some statements accept both new line and ':' as a separator */
|
/* Most statements accept both new line and ':' as separators */
|
||||||
StSep
|
StSep
|
||||||
: tNL
|
: tNL
|
||||||
| ':'
|
| ':'
|
||||||
|
| tNL StSep
|
||||||
|
| ':' StSep
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
|
@ -330,6 +330,13 @@ WHILE x < 3 : x = x + 1
|
|||||||
Wend
|
Wend
|
||||||
Call ok(x = 3, "x not equal to 3")
|
Call ok(x = 3, "x not equal to 3")
|
||||||
|
|
||||||
|
z = 2
|
||||||
|
while z > -4 :
|
||||||
|
|
||||||
|
|
||||||
|
z = z -2
|
||||||
|
wend
|
||||||
|
|
||||||
x = false
|
x = false
|
||||||
y = false
|
y = false
|
||||||
do while not (x and y)
|
do while not (x and y)
|
||||||
@ -353,6 +360,12 @@ Do While x < 2 : x = x + 1
|
|||||||
Loop
|
Loop
|
||||||
Call ok(x = 2, "x not equal to 2")
|
Call ok(x = 2, "x not equal to 2")
|
||||||
|
|
||||||
|
x = 0
|
||||||
|
Do While x >= -2 :
|
||||||
|
x = x - 1
|
||||||
|
Loop
|
||||||
|
Call ok(x = -3, "x not equal to -3")
|
||||||
|
|
||||||
x = false
|
x = false
|
||||||
y = false
|
y = false
|
||||||
do until x and y
|
do until x and y
|
||||||
@ -376,6 +389,14 @@ Do: :: x = x + 2
|
|||||||
Loop Until x = 4
|
Loop Until x = 4
|
||||||
Call ok(x = 4, "x not equal to 4")
|
Call ok(x = 4, "x not equal to 4")
|
||||||
|
|
||||||
|
x = 5
|
||||||
|
Do: :
|
||||||
|
|
||||||
|
: x = x * 2
|
||||||
|
Loop Until x = 40
|
||||||
|
Call ok(x = 40, "x not equal to 40")
|
||||||
|
|
||||||
|
|
||||||
x = false
|
x = false
|
||||||
do
|
do
|
||||||
if x then exit do
|
if x then exit do
|
||||||
@ -495,6 +516,12 @@ for x = 1 to 100
|
|||||||
Call ok(false, "exit for not escaped the loop?")
|
Call ok(false, "exit for not escaped the loop?")
|
||||||
next
|
next
|
||||||
|
|
||||||
|
for x = 1 to 5 :
|
||||||
|
:
|
||||||
|
: :exit for
|
||||||
|
Call ok(false, "exit for not escaped the loop?")
|
||||||
|
next
|
||||||
|
|
||||||
do while true
|
do while true
|
||||||
for x = 1 to 100
|
for x = 1 to 100
|
||||||
exit do
|
exit do
|
||||||
@ -507,6 +534,14 @@ while null
|
|||||||
call ok(false, "while null evaluated")
|
call ok(false, "while null evaluated")
|
||||||
wend
|
wend
|
||||||
|
|
||||||
|
Call collectionObj.reset()
|
||||||
|
y = 0
|
||||||
|
for each x in collectionObj :
|
||||||
|
|
||||||
|
:y = y + 3
|
||||||
|
next
|
||||||
|
Call ok(y = 9, "y = " & y)
|
||||||
|
|
||||||
Call collectionObj.reset()
|
Call collectionObj.reset()
|
||||||
y = 0
|
y = 0
|
||||||
x = 10
|
x = 10
|
||||||
@ -611,6 +646,21 @@ select case 2: case 5,6,7: Call ok(false, "unexpected case")
|
|||||||
end select
|
end select
|
||||||
Call ok(x, "wrong case")
|
Call ok(x, "wrong case")
|
||||||
|
|
||||||
|
x = False
|
||||||
|
select case 1 :
|
||||||
|
|
||||||
|
:case 3, 4 :
|
||||||
|
|
||||||
|
|
||||||
|
case 5
|
||||||
|
:
|
||||||
|
Call ok(false, "unexpected case") :
|
||||||
|
Case Else:
|
||||||
|
|
||||||
|
x = True
|
||||||
|
end select
|
||||||
|
Call ok(x, "wrong case")
|
||||||
|
|
||||||
if false then
|
if false then
|
||||||
Sub testsub
|
Sub testsub
|
||||||
x = true
|
x = true
|
||||||
|
Loading…
x
Reference in New Issue
Block a user