Initial commit
This commit is contained in:
1
tests/aLaMain.vsl
Normal file
1
tests/aLaMain.vsl
Normal file
@@ -0,0 +1 @@
|
||||
FUNC INT main() RETURN 0 + 1 + 2
|
||||
1
tests/testlevel1/hello_world.test_out
Normal file
1
tests/testlevel1/hello_world.test_out
Normal file
@@ -0,0 +1 @@
|
||||
Hello World
|
||||
4
tests/testlevel1/hello_world.vsl
Normal file
4
tests/testlevel1/hello_world.vsl
Normal file
@@ -0,0 +1,4 @@
|
||||
FUNC VOID main() {
|
||||
PRINT "Hello World"
|
||||
}
|
||||
|
||||
1
tests/testlevel1/level1block.test_ret
Normal file
1
tests/testlevel1/level1block.test_ret
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
2
tests/testlevel1/level1block.vsl
Normal file
2
tests/testlevel1/level1block.vsl
Normal file
@@ -0,0 +1,2 @@
|
||||
FUNC INT main() { RETURN 0 }
|
||||
|
||||
7
tests/testlevel1/level1expr.test_out
Normal file
7
tests/testlevel1/level1expr.test_out
Normal file
@@ -0,0 +1,7 @@
|
||||
5+7 = 12
|
||||
5-7 = -2
|
||||
5*7 = 35
|
||||
5/7 = 0
|
||||
5+1 = 6
|
||||
5* (5+7) = 60
|
||||
5* 5+7 = 32
|
||||
10
tests/testlevel1/level1expr.vsl
Normal file
10
tests/testlevel1/level1expr.vsl
Normal file
@@ -0,0 +1,10 @@
|
||||
FUNC VOID main() {
|
||||
PRINT 5,"+",7," = ", 5+7 ,"\n"
|
||||
PRINT 5,"-",7," = ", 5-7 ,"\n"
|
||||
PRINT 5,"*",7," = ", 5*7 ,"\n"
|
||||
PRINT 5,"/",7," = ", 5/7 ,"\n"
|
||||
PRINT 5,"+",1," = ", 5+1 ,"\n"
|
||||
PRINT 5,"* (",5,"+",7,") = ", 5*(5+7) ,"\n"
|
||||
PRINT 5,"* ",5,"+",7," = ", 5 * 5 + 7 ,"\n"
|
||||
}
|
||||
|
||||
1
tests/testlevel1/level1function.test_ret
Normal file
1
tests/testlevel1/level1function.test_ret
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
1
tests/testlevel1/level1function.vsl
Normal file
1
tests/testlevel1/level1function.vsl
Normal file
@@ -0,0 +1 @@
|
||||
FUNC INT main() RETURN 0
|
||||
1
tests/testlevel1/level1if1.test_ret
Normal file
1
tests/testlevel1/level1if1.test_ret
Normal file
@@ -0,0 +1 @@
|
||||
1
|
||||
2
tests/testlevel1/level1if1.vsl
Normal file
2
tests/testlevel1/level1if1.vsl
Normal file
@@ -0,0 +1,2 @@
|
||||
FUNC INT main() IF 1 THEN RETURN 1 FI
|
||||
|
||||
1
tests/testlevel1/level1if2.test_ret
Normal file
1
tests/testlevel1/level1if2.test_ret
Normal file
@@ -0,0 +1 @@
|
||||
1
|
||||
2
tests/testlevel1/level1if2.vsl
Normal file
2
tests/testlevel1/level1if2.vsl
Normal file
@@ -0,0 +1,2 @@
|
||||
FUNC INT main() IF 1 THEN RETURN 1 ELSE RETURN 0 FI
|
||||
|
||||
1
tests/testlevel1/level1print1.test_out
Normal file
1
tests/testlevel1/level1print1.test_out
Normal file
@@ -0,0 +1 @@
|
||||
Hello
|
||||
1
tests/testlevel1/level1print1.vsl
Normal file
1
tests/testlevel1/level1print1.vsl
Normal file
@@ -0,0 +1 @@
|
||||
FUNC VOID main() PRINT "Hello"
|
||||
1
tests/testlevel1/level1print2.test_out
Normal file
1
tests/testlevel1/level1print2.test_out
Normal file
@@ -0,0 +1 @@
|
||||
1
|
||||
2
tests/testlevel1/level1print2.vsl
Normal file
2
tests/testlevel1/level1print2.vsl
Normal file
@@ -0,0 +1,2 @@
|
||||
FUNC VOID main() PRINT 1
|
||||
|
||||
1
tests/testlevel1/level1print3.test_out
Normal file
1
tests/testlevel1/level1print3.test_out
Normal file
@@ -0,0 +1 @@
|
||||
1 = 1
|
||||
2
tests/testlevel1/level1print3.vsl
Normal file
2
tests/testlevel1/level1print3.vsl
Normal file
@@ -0,0 +1,2 @@
|
||||
FUNC VOID main() PRINT "1 = ", 1
|
||||
|
||||
1
tests/testlevel1/level1proto.test_ret
Normal file
1
tests/testlevel1/level1proto.test_ret
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
2
tests/testlevel1/level1proto1.vsl
Normal file
2
tests/testlevel1/level1proto1.vsl
Normal file
@@ -0,0 +1,2 @@
|
||||
PROTO INT main()
|
||||
FUNC INT main() RETURN 0
|
||||
1
tests/testlevel1/level1sequence.test_out
Normal file
1
tests/testlevel1/level1sequence.test_out
Normal file
@@ -0,0 +1 @@
|
||||
tototiti
|
||||
3
tests/testlevel1/level1sequence.vsl
Normal file
3
tests/testlevel1/level1sequence.vsl
Normal file
@@ -0,0 +1,3 @@
|
||||
FUNC VOID main() { PRINT "toto" PRINT "titi" }
|
||||
|
||||
|
||||
1
tests/testlevel1/level1while1.test_ret
Normal file
1
tests/testlevel1/level1while1.test_ret
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
2
tests/testlevel1/level1while1.vsl
Normal file
2
tests/testlevel1/level1while1.vsl
Normal file
@@ -0,0 +1,2 @@
|
||||
FUNC INT main() WHILE 1 DO RETURN 0 DONE
|
||||
|
||||
2
tests/testlevel2/level2assign.test_in
Normal file
2
tests/testlevel2/level2assign.test_in
Normal file
@@ -0,0 +1,2 @@
|
||||
7
|
||||
|
||||
1
tests/testlevel2/level2assign.test_out
Normal file
1
tests/testlevel2/level2assign.test_out
Normal file
@@ -0,0 +1 @@
|
||||
y vaut 7
|
||||
6
tests/testlevel2/level2assign.vsl
Normal file
6
tests/testlevel2/level2assign.vsl
Normal file
@@ -0,0 +1,6 @@
|
||||
FUNC VOID main() {
|
||||
INT x,y
|
||||
READ x
|
||||
y := x
|
||||
PRINT "y vaut ",y
|
||||
}
|
||||
1
tests/testlevel2/level2call.test_out
Normal file
1
tests/testlevel2/level2call.test_out
Normal file
@@ -0,0 +1 @@
|
||||
one() = 1
|
||||
4
tests/testlevel2/level2call.vsl
Normal file
4
tests/testlevel2/level2call.vsl
Normal file
@@ -0,0 +1,4 @@
|
||||
PROTO INT one()
|
||||
FUNC VOID main() { PRINT "one() = ", one() }
|
||||
FUNC INT one() RETURN 1
|
||||
|
||||
1
tests/testlevel2/level2call2.test_out
Normal file
1
tests/testlevel2/level2call2.test_out
Normal file
@@ -0,0 +1 @@
|
||||
1+3 = 4
|
||||
4
tests/testlevel2/level2call2.vsl
Normal file
4
tests/testlevel2/level2call2.vsl
Normal file
@@ -0,0 +1,4 @@
|
||||
PROTO INT plus(x,y)
|
||||
FUNC VOID main() PRINT "1+3 = " ,plus(1,3)
|
||||
|
||||
FUNC INT plus(x,y) RETURN x+y
|
||||
14
tests/testlevel2/level2expr.test_out
Normal file
14
tests/testlevel2/level2expr.test_out
Normal file
@@ -0,0 +1,14 @@
|
||||
1+3 = 4
|
||||
1-3 = -2
|
||||
1*3 = 3
|
||||
1/3 = 0
|
||||
1+1 = 2
|
||||
1* (1+3) = 4
|
||||
1* 1+3 = 4
|
||||
5+2 = 7
|
||||
5-2 = 3
|
||||
5*2 = 10
|
||||
5/2 = 2
|
||||
5+1 = 6
|
||||
5* (5+2) = 35
|
||||
5* 5+2 = 27
|
||||
12
tests/testlevel2/level2expr.vsl
Normal file
12
tests/testlevel2/level2expr.vsl
Normal file
@@ -0,0 +1,12 @@
|
||||
PROTO VOID expr(x,y)
|
||||
FUNC VOID main() { expr(1,3) expr(5,2) }
|
||||
FUNC VOID expr(x,y) {
|
||||
PRINT x,"+",y," = ", x+y ,"\n"
|
||||
PRINT x,"-",y," = ", x-y ,"\n"
|
||||
PRINT x,"*",y," = ", x*y ,"\n"
|
||||
PRINT x,"/",y," = ", x/y ,"\n"
|
||||
PRINT x,"+",1," = ", x+1 ,"\n"
|
||||
PRINT x,"* (",x,"+",y,") = ", x*(x+y) ,"\n"
|
||||
PRINT x,"* ",x,"+",y," = ", x * x + y ,"\n"
|
||||
}
|
||||
|
||||
3
tests/testlevel2/level2if1.test_out
Normal file
3
tests/testlevel2/level2if1.test_out
Normal file
@@ -0,0 +1,3 @@
|
||||
2 est different de 1
|
||||
1 est different de 2
|
||||
1 est egal a 1
|
||||
7
tests/testlevel2/level2if1.vsl
Normal file
7
tests/testlevel2/level2if1.vsl
Normal file
@@ -0,0 +1,7 @@
|
||||
PROTO VOID compare(x,y)
|
||||
FUNC VOID main() { compare(2,1) compare(1,2) compare(1,1) }
|
||||
FUNC VOID compare(x,y) IF x-y THEN PRINT x, " est different de ",y,"\n"
|
||||
ELSE PRINT x, " est egal a ",y,"\n"
|
||||
FI
|
||||
|
||||
|
||||
1
tests/testlevel2/level2proto.test_out
Normal file
1
tests/testlevel2/level2proto.test_out
Normal file
@@ -0,0 +1 @@
|
||||
1+3 = 4
|
||||
5
tests/testlevel2/level2proto.vsl
Normal file
5
tests/testlevel2/level2proto.vsl
Normal file
@@ -0,0 +1,5 @@
|
||||
PROTO INT plus(x,y)
|
||||
|
||||
FUNC VOID main() PRINT "1+3 = ", plus(1,3)
|
||||
|
||||
FUNC INT plus(x,y) RETURN x+y
|
||||
2
tests/testlevel2/level2read.test_in
Normal file
2
tests/testlevel2/level2read.test_in
Normal file
@@ -0,0 +1,2 @@
|
||||
3
|
||||
|
||||
1
tests/testlevel2/level2read.test_out
Normal file
1
tests/testlevel2/level2read.test_out
Normal file
@@ -0,0 +1 @@
|
||||
Le nombre lu est 3
|
||||
5
tests/testlevel2/level2read.vsl
Normal file
5
tests/testlevel2/level2read.vsl
Normal file
@@ -0,0 +1,5 @@
|
||||
FUNC VOID main() {
|
||||
INT x
|
||||
READ x
|
||||
PRINT "Le nombre lu est ", x
|
||||
}
|
||||
3
tests/testlevel3/level3block.test_in
Normal file
3
tests/testlevel3/level3block.test_in
Normal file
@@ -0,0 +1,3 @@
|
||||
2
|
||||
5
|
||||
|
||||
1
tests/testlevel3/level3block.test_out
Normal file
1
tests/testlevel3/level3block.test_out
Normal file
@@ -0,0 +1 @@
|
||||
y a l'interieur vaut 5, mais a l'exterieur du bloc il vaut 2
|
||||
9
tests/testlevel3/level3block.vsl
Normal file
9
tests/testlevel3/level3block.vsl
Normal file
@@ -0,0 +1,9 @@
|
||||
FUNC VOID main() {
|
||||
INT y
|
||||
READ y
|
||||
{ INT y
|
||||
READ y
|
||||
PRINT "y a l'interieur vaut ",y
|
||||
}
|
||||
PRINT ", mais a l'exterieur du bloc il vaut ",y
|
||||
}
|
||||
1
tests/testlevel3/level3block1.test_out
Normal file
1
tests/testlevel3/level3block1.test_out
Normal file
@@ -0,0 +1 @@
|
||||
100
|
||||
5
tests/testlevel3/level3block1.vsl
Normal file
5
tests/testlevel3/level3block1.vsl
Normal file
@@ -0,0 +1,5 @@
|
||||
FUNC VOID main(f) {
|
||||
INT f
|
||||
f:=100
|
||||
PRINT f
|
||||
}
|
||||
0
tests/testlevel3/level3block2.test_out
Normal file
0
tests/testlevel3/level3block2.test_out
Normal file
4
tests/testlevel3/level3tab1.test_in
Normal file
4
tests/testlevel3/level3tab1.test_in
Normal file
@@ -0,0 +1,4 @@
|
||||
7
|
||||
3
|
||||
1
|
||||
|
||||
1
tests/testlevel3/level3tab1.test_out
Normal file
1
tests/testlevel3/level3tab1.test_out
Normal file
@@ -0,0 +1 @@
|
||||
731
|
||||
5
tests/testlevel3/level3tab1.vsl
Normal file
5
tests/testlevel3/level3tab1.vsl
Normal file
@@ -0,0 +1,5 @@
|
||||
FUNC VOID main() {
|
||||
INT x, t[3]
|
||||
READ t[0],t[1],t[2]
|
||||
PRINT t[0], t[1], t[2]
|
||||
}
|
||||
4
tests/testlevel3/level3tab2.test_in
Normal file
4
tests/testlevel3/level3tab2.test_in
Normal file
@@ -0,0 +1,4 @@
|
||||
8
|
||||
4
|
||||
2
|
||||
|
||||
3
tests/testlevel3/level3tab2.test_out
Normal file
3
tests/testlevel3/level3tab2.test_out
Normal file
@@ -0,0 +1,3 @@
|
||||
t[0] = 8
|
||||
t[1] = 4
|
||||
t[2] = 2
|
||||
8
tests/testlevel3/level3tab2.vsl
Normal file
8
tests/testlevel3/level3tab2.vsl
Normal file
@@ -0,0 +1,8 @@
|
||||
FUNC VOID main() {
|
||||
INT x,y,z, t[3]
|
||||
READ x,y,z
|
||||
t[0] := x
|
||||
t[1] := y
|
||||
t[2] := z
|
||||
PRINT "t[0] = ", t[0],"\nt[1] = ", t[1],"\nt[2] = ",t[2]
|
||||
}
|
||||
9
tests/testlevel3/level3tab3.test_in
Normal file
9
tests/testlevel3/level3tab3.test_in
Normal file
@@ -0,0 +1,9 @@
|
||||
8
|
||||
4
|
||||
6
|
||||
2
|
||||
5
|
||||
1
|
||||
3
|
||||
7
|
||||
|
||||
8
tests/testlevel3/level3tab3.test_out
Normal file
8
tests/testlevel3/level3tab3.test_out
Normal file
@@ -0,0 +1,8 @@
|
||||
t[0] = 8
|
||||
t[1] = 4
|
||||
t[2] = 6
|
||||
t[3] = 2
|
||||
t[4] = 5
|
||||
t[5] = 1
|
||||
t[6] = 3
|
||||
t[7] = 7
|
||||
19
tests/testlevel3/level3tab3.vsl
Normal file
19
tests/testlevel3/level3tab3.vsl
Normal file
@@ -0,0 +1,19 @@
|
||||
FUNC VOID main() {
|
||||
INT i, t[8],x
|
||||
i := 0
|
||||
WHILE 8-i DO {
|
||||
READ x
|
||||
t[i] := x
|
||||
i:= i+1
|
||||
} DONE
|
||||
i := 0
|
||||
WHILE 8-i DO {
|
||||
PRINT "t[",i,"] = ",t[i],"\n"
|
||||
i:= i+1
|
||||
} DONE
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
9
tests/testlevel3/level3tab4.test_in
Normal file
9
tests/testlevel3/level3tab4.test_in
Normal file
@@ -0,0 +1,9 @@
|
||||
7
|
||||
6
|
||||
5
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
9
|
||||
|
||||
1
tests/testlevel3/level3tab4.test_out
Normal file
1
tests/testlevel3/level3tab4.test_out
Normal file
@@ -0,0 +1 @@
|
||||
Tableau de taille 8 = [7,6,5,1,2,3,4,9]
|
||||
24
tests/testlevel3/level3tab4.vsl
Normal file
24
tests/testlevel3/level3tab4.vsl
Normal file
@@ -0,0 +1,24 @@
|
||||
PROTO VOID printtab(s,t[])
|
||||
|
||||
FUNC VOID main() {
|
||||
INT i, t[8],x
|
||||
i := 0
|
||||
WHILE 8-i DO {
|
||||
READ x
|
||||
t[i] := x
|
||||
i:= i+1
|
||||
} DONE
|
||||
printtab(8,t)
|
||||
}
|
||||
|
||||
FUNC VOID printtab(size,t[]) {
|
||||
INT i
|
||||
PRINT "Tableau de taille ", size," = ["
|
||||
i := 0
|
||||
WHILE size-i DO {
|
||||
IF i THEN PRINT "," FI
|
||||
PRINT t[i]
|
||||
i:= i+1
|
||||
} DONE
|
||||
PRINT "]\n"
|
||||
}
|
||||
3
tests/testlevel3/level3tab5.test_in
Normal file
3
tests/testlevel3/level3tab5.test_in
Normal file
@@ -0,0 +1,3 @@
|
||||
10
|
||||
20
|
||||
|
||||
3
tests/testlevel3/level3tab5.test_out
Normal file
3
tests/testlevel3/level3tab5.test_out
Normal file
@@ -0,0 +1,3 @@
|
||||
entrezno :0 entrezno :1 Tableau de taille 2 = [10,20]
|
||||
Main: Tableau de taille 2 = [10,20]
|
||||
Fini
|
||||
37
tests/testlevel3/level3tab5.vsl
Normal file
37
tests/testlevel3/level3tab5.vsl
Normal file
@@ -0,0 +1,37 @@
|
||||
PROTO VOID readprinttab(s,t[])
|
||||
|
||||
FUNC VOID main() {
|
||||
INT i,s,t[2]
|
||||
s := 2
|
||||
readprinttab(s,t)
|
||||
PRINT "Main: Tableau de taille ",s," = ["
|
||||
i := 0
|
||||
WHILE s-i DO {
|
||||
IF i THEN PRINT "," FI
|
||||
PRINT t[i]
|
||||
i:= i+1
|
||||
}
|
||||
DONE
|
||||
PRINT "]\n"
|
||||
PRINT "Fini"
|
||||
}
|
||||
|
||||
FUNC VOID readprinttab(size,t[]) {
|
||||
INT i
|
||||
i := 0
|
||||
WHILE size-i DO {
|
||||
PRINT "entrezno :",i," "
|
||||
READ t[i]
|
||||
i:= i+1
|
||||
}
|
||||
DONE
|
||||
PRINT "Tableau de taille ",size," = ["
|
||||
i := 0
|
||||
WHILE size-i DO {
|
||||
IF i THEN PRINT "," FI
|
||||
PRINT t[i]
|
||||
i:= i+1
|
||||
}
|
||||
DONE
|
||||
PRINT "]\n"
|
||||
}
|
||||
5
tests/testlevel4/level4diverge.vsl
Normal file
5
tests/testlevel4/level4diverge.vsl
Normal file
@@ -0,0 +1,5 @@
|
||||
FUNC VOID main() {
|
||||
PRINT "Toto"
|
||||
WHILE 1 DO { INT x
|
||||
x := 1 } DONE
|
||||
}
|
||||
1
tests/testlevel4/level4t1.test_out
Normal file
1
tests/testlevel4/level4t1.test_out
Normal file
@@ -0,0 +1 @@
|
||||
Et voila: 0001
|
||||
18
tests/testlevel4/level4t1.vsl
Normal file
18
tests/testlevel4/level4t1.vsl
Normal file
@@ -0,0 +1,18 @@
|
||||
FUNC VOID main()
|
||||
{
|
||||
INT i,j,k,l
|
||||
i := 0
|
||||
j := 0
|
||||
k := 0
|
||||
l := 0
|
||||
{ INT i,j,k
|
||||
l := 1
|
||||
{ INT i,j
|
||||
k:= 2
|
||||
{ INT i
|
||||
j:= 3
|
||||
}
|
||||
}
|
||||
}
|
||||
PRINT "Et voila: ", i,j,k,l
|
||||
}
|
||||
2
tests/testlevel4/level4testcarre.test_out
Normal file
2
tests/testlevel4/level4testcarre.test_out
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
5^2 + 4^2 + 3^2 + 2^2 + 1^2 = 55
|
||||
28
tests/testlevel4/level4testcarre.vsl
Normal file
28
tests/testlevel4/level4testcarre.vsl
Normal file
@@ -0,0 +1,28 @@
|
||||
FUNC VOID main()
|
||||
{ INT n,i,s
|
||||
|
||||
n := 5
|
||||
s := 0
|
||||
i := n
|
||||
|
||||
WHILE i
|
||||
DO
|
||||
{ s := s + i*i
|
||||
i := i - 1
|
||||
}
|
||||
DONE
|
||||
|
||||
PRINT "\n"
|
||||
|
||||
i := n
|
||||
WHILE i-1
|
||||
DO
|
||||
{ PRINT i, "^2 + "
|
||||
i := i - 1
|
||||
}
|
||||
DONE
|
||||
|
||||
PRINT "1^2 = ", s, "\n"
|
||||
|
||||
}
|
||||
|
||||
11
tests/testlevel4/level4testfact.test_out
Normal file
11
tests/testlevel4/level4testfact.test_out
Normal file
@@ -0,0 +1,11 @@
|
||||
f(0) = 1
|
||||
f(1) = 1
|
||||
f(2) = 2
|
||||
f(3) = 6
|
||||
f(4) = 24
|
||||
f(5) = 120
|
||||
f(6) = 720
|
||||
f(7) = 5040
|
||||
f(8) = 40320
|
||||
f(9) = 362880
|
||||
f(10) = 3628800
|
||||
32
tests/testlevel4/level4testfact.vsl
Normal file
32
tests/testlevel4/level4testfact.vsl
Normal file
@@ -0,0 +1,32 @@
|
||||
PROTO INT fact(k)
|
||||
FUNC VOID main()
|
||||
{
|
||||
INT i, t[11]
|
||||
i := 0
|
||||
|
||||
WHILE 11 -i
|
||||
DO
|
||||
{
|
||||
t[i] := fact(i)
|
||||
i := i+1
|
||||
}
|
||||
DONE
|
||||
i := 0
|
||||
WHILE 11 -i
|
||||
DO
|
||||
{
|
||||
PRINT "f(", i, ") = ", t[i], "\n"
|
||||
i := i+1
|
||||
}
|
||||
DONE
|
||||
}
|
||||
|
||||
FUNC INT fact(n)
|
||||
{
|
||||
IF n
|
||||
THEN
|
||||
RETURN n* fact(n-1)
|
||||
ELSE
|
||||
RETURN 1
|
||||
FI
|
||||
}
|
||||
11
tests/testlevel4/level4testfact2.test_out
Normal file
11
tests/testlevel4/level4testfact2.test_out
Normal file
@@ -0,0 +1,11 @@
|
||||
f(0) = 1
|
||||
f(1) = 1
|
||||
f(2) = 2
|
||||
f(3) = 6
|
||||
f(4) = 24
|
||||
f(5) = 120
|
||||
f(6) = 720
|
||||
f(7) = 5040
|
||||
f(8) = 40320
|
||||
f(9) = 362880
|
||||
f(10) = 3628800
|
||||
35
tests/testlevel4/level4testfact2.vsl
Normal file
35
tests/testlevel4/level4testfact2.vsl
Normal file
@@ -0,0 +1,35 @@
|
||||
PROTO INT fact(k)
|
||||
FUNC VOID main()
|
||||
{
|
||||
INT i, t[11]
|
||||
i := 0
|
||||
|
||||
WHILE 11 -i
|
||||
DO
|
||||
{
|
||||
t[i] := fact(i)
|
||||
i := i+1
|
||||
}
|
||||
DONE
|
||||
i := 0
|
||||
WHILE 11 -i
|
||||
DO
|
||||
{
|
||||
PRINT "f(", i, ") = ", t[i], "\n"
|
||||
i := i+1
|
||||
}
|
||||
DONE
|
||||
}
|
||||
|
||||
FUNC INT fact(n)
|
||||
{
|
||||
INT res
|
||||
IF n
|
||||
THEN
|
||||
res := n* fact(n-1)
|
||||
ELSE
|
||||
res := 1
|
||||
FI
|
||||
RETURN res
|
||||
}
|
||||
|
||||
29
tests/testlevel4/level4testhanoi.test_out
Normal file
29
tests/testlevel4/level4testhanoi.test_out
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
Hanoi avec 3 disques
|
||||
|
||||
Deplacer un disque de 1 a 3
|
||||
Deplacer un disque de 1 a 2
|
||||
Deplacer un disque de 3 a 2
|
||||
Deplacer un disque de 1 a 3
|
||||
Deplacer un disque de 2 a 1
|
||||
Deplacer un disque de 2 a 3
|
||||
Deplacer un disque de 1 a 3
|
||||
|
||||
|
||||
Hanoi avec 4 disques
|
||||
|
||||
Deplacer un disque de 1 a 2
|
||||
Deplacer un disque de 1 a 3
|
||||
Deplacer un disque de 2 a 3
|
||||
Deplacer un disque de 1 a 2
|
||||
Deplacer un disque de 3 a 1
|
||||
Deplacer un disque de 3 a 2
|
||||
Deplacer un disque de 1 a 2
|
||||
Deplacer un disque de 1 a 3
|
||||
Deplacer un disque de 2 a 3
|
||||
Deplacer un disque de 2 a 1
|
||||
Deplacer un disque de 3 a 1
|
||||
Deplacer un disque de 2 a 3
|
||||
Deplacer un disque de 1 a 2
|
||||
Deplacer un disque de 1 a 3
|
||||
Deplacer un disque de 2 a 3
|
||||
30
tests/testlevel4/level4testhanoi.vsl
Normal file
30
tests/testlevel4/level4testhanoi.vsl
Normal file
@@ -0,0 +1,30 @@
|
||||
PROTO INT hanoi(n,delatour,alatour,parlatour)
|
||||
|
||||
FUNC VOID main()
|
||||
{
|
||||
INT ndisque,a
|
||||
|
||||
ndisque := 3
|
||||
PRINT "\n Hanoi avec ", ndisque, " disques\n\n"
|
||||
a := hanoi(ndisque,1,3,2)
|
||||
|
||||
ndisque := 4
|
||||
PRINT "\n\nHanoi avec ", ndisque, " disques\n\n"
|
||||
a := hanoi(ndisque,1,3,2)
|
||||
}
|
||||
|
||||
|
||||
FUNC INT hanoi(n,delatour,alatour,parlatour)
|
||||
{
|
||||
INT b
|
||||
IF n
|
||||
THEN
|
||||
{
|
||||
b := hanoi( n-1, delatour, parlatour, alatour )
|
||||
PRINT "Deplacer un disque de ",delatour," a ",alatour,"\n"
|
||||
b := hanoi( n-1, parlatour, alatour, delatour )
|
||||
}
|
||||
FI
|
||||
RETURN 1
|
||||
}
|
||||
|
||||
11
tests/testlevel4/level4testheap.test_in
Normal file
11
tests/testlevel4/level4testheap.test_in
Normal file
@@ -0,0 +1,11 @@
|
||||
5
|
||||
20
|
||||
15
|
||||
10
|
||||
4
|
||||
8
|
||||
13
|
||||
19
|
||||
30
|
||||
18
|
||||
|
||||
21
tests/testlevel4/level4testheap.test_out
Normal file
21
tests/testlevel4/level4testheap.test_out
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
Entrer le0eme: i=1 j=5
|
||||
Entrer le1eme: i=2 j=20
|
||||
Entrer le2eme: i=3 j=15
|
||||
Entrer le3eme: i=4 j=10
|
||||
Entrer le4eme: i=5 j=4
|
||||
Entrer le5eme: i=6 j=8
|
||||
Entrer le6eme: i=7 j=13
|
||||
Entrer le7eme: i=8 j=19
|
||||
Entrer le8eme: i=9 j=30
|
||||
Entrer le9eme: i=10 j=18
|
||||
t[0] = 4
|
||||
t[1] = 5
|
||||
t[2] = 8
|
||||
t[3] = 10
|
||||
t[4] = 13
|
||||
t[5] = 15
|
||||
t[6] = 18
|
||||
t[7] = 19
|
||||
t[8] = 20
|
||||
t[9] = 30
|
||||
122
tests/testlevel4/level4testheap.vsl
Normal file
122
tests/testlevel4/level4testheap.vsl
Normal file
@@ -0,0 +1,122 @@
|
||||
PROTO INT plusgrandstrict(n,m)
|
||||
PROTO INT plusgrand(n,m)
|
||||
PROTO VOID heapsort(t[], n)
|
||||
|
||||
// Ce programme lit un tableau de 10 entiers et imprime
|
||||
// le tableau trie par heapsort.
|
||||
//=====================================================
|
||||
FUNC VOID main()
|
||||
{
|
||||
INT a[10], i, j
|
||||
|
||||
i := 0
|
||||
WHILE 10-i DO
|
||||
{
|
||||
PRINT "\n Entrer le",i,"eme: "
|
||||
READ j
|
||||
a[i] := j
|
||||
i := i+1
|
||||
PRINT " i=", i, " j=",j
|
||||
}
|
||||
DONE
|
||||
heapsort(a,10)
|
||||
i := 0
|
||||
WHILE 10-i DO
|
||||
{
|
||||
PRINT "\n t[",i,"] = ",a[i]
|
||||
i:= i+1
|
||||
}
|
||||
DONE
|
||||
}
|
||||
|
||||
|
||||
// Implementation du heapsort
|
||||
//===========================
|
||||
FUNC VOID heapsort(t[], n ) // n: nombre d'elements a trier
|
||||
{
|
||||
INT l,r,j,s, test
|
||||
|
||||
l := n/2+1
|
||||
r := n
|
||||
|
||||
WHILE plusgrand(r,2) DO
|
||||
{
|
||||
IF plusgrandstrict(l,1)
|
||||
THEN // agrandissement t[l..r] -> t[l-1..r] heap
|
||||
{
|
||||
l := l-1
|
||||
j := l
|
||||
}
|
||||
ELSE // selection : t[0] est le + grand et echange avec t[r-1]
|
||||
// rearrangement de t[0..r-2]
|
||||
{
|
||||
INT ex
|
||||
ex := t[0]
|
||||
t[0] := t[r-1]
|
||||
t[r-1] := ex
|
||||
r := r-1
|
||||
j := 1
|
||||
}
|
||||
FI
|
||||
s := t[j-1]
|
||||
test := plusgrand(r, 2*j)
|
||||
WHILE test DO
|
||||
{
|
||||
INT k
|
||||
k := 2*j // indice du premier fils de t[~j]
|
||||
// on choisit le plus grand des deux
|
||||
IF plusgrandstrict(r,k)*plusgrandstrict(t[k], t[k-1]) THEN k:=k+1 FI
|
||||
// si le plus grand des deux est plus grand que s on echange avec s
|
||||
IF plusgrandstrict(t[k-1],s)
|
||||
THEN
|
||||
{
|
||||
t[j-1] := t[k-1]
|
||||
j := k
|
||||
test := plusgrand(r, 2*j)
|
||||
}
|
||||
ELSE test := 0 // une facon de faire un break
|
||||
FI
|
||||
}
|
||||
DONE
|
||||
t[j-1] := s
|
||||
}
|
||||
DONE
|
||||
}
|
||||
|
||||
// fonctions de comparaison entre entiers
|
||||
//=======================================
|
||||
FUNC INT plusgrandstrict(n,m )
|
||||
{
|
||||
INT continue, nn, mm
|
||||
|
||||
continue := n*m
|
||||
nn := n
|
||||
mm := m
|
||||
WHILE continue
|
||||
DO
|
||||
{
|
||||
mm := mm-1
|
||||
nn := nn-1
|
||||
continue := nn*mm
|
||||
}
|
||||
DONE
|
||||
IF nn THEN RETURN 1 ELSE RETURN 0 FI
|
||||
}
|
||||
|
||||
FUNC INT plusgrand(n,m )
|
||||
{
|
||||
INT continue, nn, mm
|
||||
|
||||
continue := n*m
|
||||
nn := n
|
||||
mm := m
|
||||
WHILE continue
|
||||
DO
|
||||
{
|
||||
mm := mm-1
|
||||
nn := nn-1
|
||||
continue := nn*mm
|
||||
}
|
||||
DONE
|
||||
IF nn THEN RETURN 1 ELSE IF mm THEN RETURN 0 ELSE RETURN 1 FI FI
|
||||
}
|
||||
11
tests/testlevel4/level4testtri.test_in
Normal file
11
tests/testlevel4/level4testtri.test_in
Normal file
@@ -0,0 +1,11 @@
|
||||
10
|
||||
15
|
||||
12
|
||||
18
|
||||
17
|
||||
19
|
||||
13
|
||||
12
|
||||
11
|
||||
11
|
||||
|
||||
21
tests/testlevel4/level4testtri.test_out
Normal file
21
tests/testlevel4/level4testtri.test_out
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
Entrer le 0eme:
|
||||
Entrer le 1eme:
|
||||
Entrer le 2eme:
|
||||
Entrer le 3eme:
|
||||
Entrer le 4eme:
|
||||
Entrer le 5eme:
|
||||
Entrer le 6eme:
|
||||
Entrer le 7eme:
|
||||
Entrer le 8eme:
|
||||
Entrer le 9eme:
|
||||
t[0] = 10
|
||||
t[1] = 11
|
||||
t[2] = 11
|
||||
t[3] = 12
|
||||
t[4] = 12
|
||||
t[5] = 13
|
||||
t[6] = 15
|
||||
t[7] = 17
|
||||
t[8] = 18
|
||||
t[9] = 19
|
||||
80
tests/testlevel4/level4testtri.vsl
Normal file
80
tests/testlevel4/level4testtri.vsl
Normal file
@@ -0,0 +1,80 @@
|
||||
PROTO INT plusgrandstrict(n,m)
|
||||
PROTO VOID naivesort(t[], index)
|
||||
|
||||
// Ce programme lit un tableau de 10 entiers et imprime
|
||||
// le tableau trie. Illustre le passage de tableaux en parametres
|
||||
//===============================================================
|
||||
FUNC VOID main()
|
||||
{
|
||||
INT a[10], i, j
|
||||
|
||||
i := 0
|
||||
WHILE 10-i DO
|
||||
{
|
||||
PRINT "\n Entrer le ",i,"eme: "
|
||||
READ j
|
||||
a[i] := j
|
||||
i := i+1
|
||||
}
|
||||
DONE
|
||||
naivesort(a,9)
|
||||
i := 0
|
||||
WHILE 10-i DO
|
||||
{
|
||||
PRINT "\n t[",i,"] = ",a[i]
|
||||
i:= i+1
|
||||
}
|
||||
DONE
|
||||
}
|
||||
|
||||
|
||||
// Tri naif: cherche le +grand elem du tableau et le met
|
||||
// a la fin. Recommence avec le sous tableau terminant a index-1
|
||||
//==============================================================
|
||||
FUNC VOID naivesort(t[], index )
|
||||
{
|
||||
INT max , maxpos, i
|
||||
|
||||
IF index THEN // il y a au moins deux elements
|
||||
{
|
||||
max := t[index]
|
||||
i:= index
|
||||
maxpos := index
|
||||
|
||||
WHILE i+1 DO
|
||||
{
|
||||
IF plusgrandstrict(t[i], max) THEN
|
||||
{
|
||||
max := t[i]
|
||||
maxpos := i
|
||||
}
|
||||
FI
|
||||
i := i-1
|
||||
}
|
||||
DONE
|
||||
t[maxpos] := t[index]
|
||||
t[index] := max
|
||||
naivesort(t,index-1)
|
||||
}
|
||||
FI
|
||||
}
|
||||
|
||||
// fonction de comparaison entre entiers
|
||||
//======================================
|
||||
FUNC INT plusgrandstrict(n,m )
|
||||
{
|
||||
INT continue, nn, mm
|
||||
|
||||
continue := n*m
|
||||
nn := n
|
||||
mm := m
|
||||
WHILE continue
|
||||
DO
|
||||
{
|
||||
mm := mm-1
|
||||
nn := nn-1
|
||||
continue := nn*mm
|
||||
}
|
||||
DONE
|
||||
IF nn THEN RETURN 1 ELSE RETURN 0 FI
|
||||
}
|
||||
10
tests/testlevelerror/test_decl_scope.vsl
Normal file
10
tests/testlevelerror/test_decl_scope.vsl
Normal file
@@ -0,0 +1,10 @@
|
||||
FUNC INT main() {
|
||||
{
|
||||
INT i
|
||||
i := 3
|
||||
PRINT i
|
||||
}
|
||||
PRINT i
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
11
tests/testlevelerror/test_decl_scope2.vsl
Normal file
11
tests/testlevelerror/test_decl_scope2.vsl
Normal file
@@ -0,0 +1,11 @@
|
||||
FUNC VOID f() {
|
||||
INT i
|
||||
i := 2
|
||||
}
|
||||
|
||||
FUNC INT main() {
|
||||
f()
|
||||
PRINT i
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
7
tests/testlevelerror/test_decl_scope3.vsl
Normal file
7
tests/testlevelerror/test_decl_scope3.vsl
Normal file
@@ -0,0 +1,7 @@
|
||||
PROTO VOID f(i)
|
||||
|
||||
FUNC INT main() {
|
||||
PRINT i
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
10
tests/testlevelerror/test_func_redecl.vsl
Normal file
10
tests/testlevelerror/test_func_redecl.vsl
Normal file
@@ -0,0 +1,10 @@
|
||||
FUNC INT main() {
|
||||
PRINT "a"
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
FUNC INT main() {
|
||||
PRINT "a"
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
12
tests/testlevelerror/test_incompat_proto.vsl
Normal file
12
tests/testlevelerror/test_incompat_proto.vsl
Normal file
@@ -0,0 +1,12 @@
|
||||
PROTO VOID fact()
|
||||
|
||||
FUNC INT main() {
|
||||
INT i, j
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
FUNC VOID fact(i) {
|
||||
INT j
|
||||
j := i
|
||||
}
|
||||
|
||||
10
tests/testlevelerror/test_incompat_proto2.vsl
Normal file
10
tests/testlevelerror/test_incompat_proto2.vsl
Normal file
@@ -0,0 +1,10 @@
|
||||
PROTO VOID fact()
|
||||
|
||||
FUNC INT main() {
|
||||
INT i, j
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
FUNC INT fact() {
|
||||
RETURN 1
|
||||
}
|
||||
11
tests/testlevelerror/test_incompat_proto3.vsl
Normal file
11
tests/testlevelerror/test_incompat_proto3.vsl
Normal file
@@ -0,0 +1,11 @@
|
||||
PROTO INT fact(t[], i)
|
||||
|
||||
FUNC INT main() {
|
||||
INT i, j
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
FUNC INT fact(i, j) {
|
||||
RETURN i
|
||||
}
|
||||
|
||||
21
tests/testlevelerror/test_incompat_proto4.vsl
Normal file
21
tests/testlevelerror/test_incompat_proto4.vsl
Normal file
@@ -0,0 +1,21 @@
|
||||
PROTO VOID f(i, j, t[], m, k[])
|
||||
|
||||
FUNC INT main() {
|
||||
INT i, j
|
||||
INT t1[3]
|
||||
INT t2[2]
|
||||
i := 0
|
||||
j := 1
|
||||
t1[0] := 4
|
||||
t1[1] := 5
|
||||
t1[2] := 6
|
||||
t2[0] := 9
|
||||
t2[1] := 10
|
||||
f(i, j, t1, i, t2)
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
FUNC VOID f(i, j, t, m, k[]) {
|
||||
PRINT i
|
||||
}
|
||||
|
||||
21
tests/testlevelerror/test_incompat_proto5.vsl
Normal file
21
tests/testlevelerror/test_incompat_proto5.vsl
Normal file
@@ -0,0 +1,21 @@
|
||||
PROTO VOID f(i, j, t[], m, k[])
|
||||
|
||||
FUNC INT main() {
|
||||
INT i, j
|
||||
INT t1[3]
|
||||
INT t2[2]
|
||||
i := 0
|
||||
j := 1
|
||||
t1[0] := 4
|
||||
t1[1] := 5
|
||||
t1[2] := 6
|
||||
t2[0] := 9
|
||||
t2[1] := 10
|
||||
f(i, j, t1, i, t1)
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
FUNC VOID f(i, j, t[], k[], l[]) {
|
||||
PRINT i
|
||||
}
|
||||
|
||||
8
tests/testlevelerror/test_invalid_assign.vsl
Normal file
8
tests/testlevelerror/test_invalid_assign.vsl
Normal file
@@ -0,0 +1,8 @@
|
||||
FUNC INT main() {
|
||||
INT i
|
||||
INT t[2]
|
||||
i := 1
|
||||
t := i
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
9
tests/testlevelerror/test_invalid_assign2.vsl
Normal file
9
tests/testlevelerror/test_invalid_assign2.vsl
Normal file
@@ -0,0 +1,9 @@
|
||||
FUNC INT main() {
|
||||
INT i
|
||||
INT t[2]
|
||||
t[0] := 1
|
||||
t[1] := 2
|
||||
i := t
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
12
tests/testlevelerror/test_invalid_call.vsl
Normal file
12
tests/testlevelerror/test_invalid_call.vsl
Normal file
@@ -0,0 +1,12 @@
|
||||
FUNC VOID f(i) {
|
||||
INT j
|
||||
j := i
|
||||
}
|
||||
|
||||
FUNC INT main() {
|
||||
INT i
|
||||
i := 0
|
||||
i := f(i)
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
22
tests/testlevelerror/test_invalid_call2.vsl
Normal file
22
tests/testlevelerror/test_invalid_call2.vsl
Normal file
@@ -0,0 +1,22 @@
|
||||
PROTO VOID f(i, j, t[], m, k[])
|
||||
|
||||
FUNC INT main() {
|
||||
INT i, j, m
|
||||
INT t1[3]
|
||||
INT t2[2]
|
||||
i := 0
|
||||
j := 1
|
||||
t1[0] := 4
|
||||
t1[1] := 5
|
||||
t1[2] := 6
|
||||
t2[0] := 9
|
||||
t2[1] := 10
|
||||
m := 3
|
||||
f(i, j, t1, m, m)
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
FUNC VOID f(i, j, t[], m, k[]) {
|
||||
PRINT i
|
||||
}
|
||||
|
||||
21
tests/testlevelerror/test_invalid_call3.vsl
Normal file
21
tests/testlevelerror/test_invalid_call3.vsl
Normal file
@@ -0,0 +1,21 @@
|
||||
PROTO VOID f(i, j, t[], m, k[])
|
||||
|
||||
FUNC INT main() {
|
||||
INT i, j
|
||||
INT t1[3]
|
||||
INT t2[2]
|
||||
i := 0
|
||||
j := 1
|
||||
t1[0] := 4
|
||||
t1[1] := 5
|
||||
t1[2] := 6
|
||||
t2[0] := 9
|
||||
t2[1] := 10
|
||||
f(i, j, t1, t2, t2)
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
FUNC VOID f(i, j, t[], m, k[]) {
|
||||
PRINT i
|
||||
}
|
||||
|
||||
10
tests/testlevelerror/test_invalid_recursion.vsl
Normal file
10
tests/testlevelerror/test_invalid_recursion.vsl
Normal file
@@ -0,0 +1,10 @@
|
||||
FUNC INT f(a) {
|
||||
IF a THEN RETURN 0
|
||||
ELSE RETURN f(a-1)
|
||||
FI
|
||||
}
|
||||
|
||||
FUNC INT main(){
|
||||
PRINT "La fonction f n est pas declaree avant sa premiere utilisation"
|
||||
RETURN f(5)
|
||||
}
|
||||
12
tests/testlevelerror/test_invalid_return.vsl
Normal file
12
tests/testlevelerror/test_invalid_return.vsl
Normal file
@@ -0,0 +1,12 @@
|
||||
FUNC INT f() {
|
||||
INT t[1]
|
||||
t[0] := 1
|
||||
RETURN t
|
||||
}
|
||||
|
||||
FUNC INT main() {
|
||||
INT i
|
||||
i := f()
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
6
tests/testlevelerror/test_undecl_func.vsl
Normal file
6
tests/testlevelerror/test_undecl_func.vsl
Normal file
@@ -0,0 +1,6 @@
|
||||
FUNC INT main() {
|
||||
INT i, j
|
||||
j := func()
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
6
tests/testlevelerror/test_undecl_var.vsl
Normal file
6
tests/testlevelerror/test_undecl_var.vsl
Normal file
@@ -0,0 +1,6 @@
|
||||
FUNC INT main() {
|
||||
INT i
|
||||
j := i
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
8
tests/testlevelerror/test_var_redecl.vsl
Normal file
8
tests/testlevelerror/test_var_redecl.vsl
Normal file
@@ -0,0 +1,8 @@
|
||||
FUNC INT main() {
|
||||
INT i
|
||||
INT i
|
||||
i := 1
|
||||
PRINT i
|
||||
RETURN 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user