Initial commit

This commit is contained in:
Dimitri Lajou
2025-03-21 17:26:31 +01:00
commit 7114c0e978
115 changed files with 1760 additions and 0 deletions

1
tests/aLaMain.vsl Normal file
View File

@@ -0,0 +1 @@
FUNC INT main() RETURN 0 + 1 + 2

View File

@@ -0,0 +1 @@
Hello World

View File

@@ -0,0 +1,4 @@
FUNC VOID main() {
PRINT "Hello World"
}

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1,2 @@
FUNC INT main() { RETURN 0 }

View 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

View 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"
}

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1 @@
FUNC INT main() RETURN 0

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1,2 @@
FUNC INT main() IF 1 THEN RETURN 1 FI

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1,2 @@
FUNC INT main() IF 1 THEN RETURN 1 ELSE RETURN 0 FI

View File

@@ -0,0 +1 @@
Hello

View File

@@ -0,0 +1 @@
FUNC VOID main() PRINT "Hello"

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1,2 @@
FUNC VOID main() PRINT 1

View File

@@ -0,0 +1 @@
1 = 1

View File

@@ -0,0 +1,2 @@
FUNC VOID main() PRINT "1 = ", 1

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1,2 @@
PROTO INT main()
FUNC INT main() RETURN 0

View File

@@ -0,0 +1 @@
tototiti

View File

@@ -0,0 +1,3 @@
FUNC VOID main() { PRINT "toto" PRINT "titi" }

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1,2 @@
FUNC INT main() WHILE 1 DO RETURN 0 DONE

View File

@@ -0,0 +1,2 @@
7

View File

@@ -0,0 +1 @@
y vaut 7

View File

@@ -0,0 +1,6 @@
FUNC VOID main() {
INT x,y
READ x
y := x
PRINT "y vaut ",y
}

View File

@@ -0,0 +1 @@
one() = 1

View File

@@ -0,0 +1,4 @@
PROTO INT one()
FUNC VOID main() { PRINT "one() = ", one() }
FUNC INT one() RETURN 1

View File

@@ -0,0 +1 @@
1+3 = 4

View 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

View 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

View 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"
}

View File

@@ -0,0 +1,3 @@
2 est different de 1
1 est different de 2
1 est egal a 1

View 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

View File

@@ -0,0 +1 @@
1+3 = 4

View 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

View File

@@ -0,0 +1,2 @@
3

View File

@@ -0,0 +1 @@
Le nombre lu est 3

View File

@@ -0,0 +1,5 @@
FUNC VOID main() {
INT x
READ x
PRINT "Le nombre lu est ", x
}

View File

@@ -0,0 +1,3 @@
2
5

View File

@@ -0,0 +1 @@
y a l'interieur vaut 5, mais a l'exterieur du bloc il vaut 2

View 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
}

View File

@@ -0,0 +1 @@
100

View File

@@ -0,0 +1,5 @@
FUNC VOID main(f) {
INT f
f:=100
PRINT f
}

View File

View File

@@ -0,0 +1,4 @@
7
3
1

View File

@@ -0,0 +1 @@
731

View 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]
}

View File

@@ -0,0 +1,4 @@
8
4
2

View File

@@ -0,0 +1,3 @@
t[0] = 8
t[1] = 4
t[2] = 2

View 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]
}

View File

@@ -0,0 +1,9 @@
8
4
6
2
5
1
3
7

View 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

View 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
}

View File

@@ -0,0 +1,9 @@
7
6
5
1
2
3
4
9

View File

@@ -0,0 +1 @@
Tableau de taille 8 = [7,6,5,1,2,3,4,9]

View 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"
}

View File

@@ -0,0 +1,3 @@
10
20

View File

@@ -0,0 +1,3 @@
entrezno :0 entrezno :1 Tableau de taille 2 = [10,20]
Main: Tableau de taille 2 = [10,20]
Fini

View 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"
}

View File

@@ -0,0 +1,5 @@
FUNC VOID main() {
PRINT "Toto"
WHILE 1 DO { INT x
x := 1 } DONE
}

View File

@@ -0,0 +1 @@
Et voila: 0001

View 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
}

View File

@@ -0,0 +1,2 @@
5^2 + 4^2 + 3^2 + 2^2 + 1^2 = 55

View 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"
}

View 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

View 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
}

View 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

View 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
}

View 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

View 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
}

View File

@@ -0,0 +1,11 @@
5
20
15
10
4
8
13
19
30
18

View 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

View 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
}

View File

@@ -0,0 +1,11 @@
10
15
12
18
17
19
13
12
11
11

View 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

View 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
}

View File

@@ -0,0 +1,10 @@
FUNC INT main() {
{
INT i
i := 3
PRINT i
}
PRINT i
RETURN 0
}

View File

@@ -0,0 +1,11 @@
FUNC VOID f() {
INT i
i := 2
}
FUNC INT main() {
f()
PRINT i
RETURN 0
}

View File

@@ -0,0 +1,7 @@
PROTO VOID f(i)
FUNC INT main() {
PRINT i
RETURN 0
}

View File

@@ -0,0 +1,10 @@
FUNC INT main() {
PRINT "a"
RETURN 0
}
FUNC INT main() {
PRINT "a"
RETURN 0
}

View File

@@ -0,0 +1,12 @@
PROTO VOID fact()
FUNC INT main() {
INT i, j
RETURN 0
}
FUNC VOID fact(i) {
INT j
j := i
}

View File

@@ -0,0 +1,10 @@
PROTO VOID fact()
FUNC INT main() {
INT i, j
RETURN 0
}
FUNC INT fact() {
RETURN 1
}

View 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
}

View 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
}

View 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
}

View File

@@ -0,0 +1,8 @@
FUNC INT main() {
INT i
INT t[2]
i := 1
t := i
RETURN 0
}

View File

@@ -0,0 +1,9 @@
FUNC INT main() {
INT i
INT t[2]
t[0] := 1
t[1] := 2
i := t
RETURN 0
}

View 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
}

View 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
}

View 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
}

View 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)
}

View 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
}

View File

@@ -0,0 +1,6 @@
FUNC INT main() {
INT i, j
j := func()
RETURN 0
}

View File

@@ -0,0 +1,6 @@
FUNC INT main() {
INT i
j := i
RETURN 0
}

View File

@@ -0,0 +1,8 @@
FUNC INT main() {
INT i
INT i
i := 1
PRINT i
RETURN 0
}