Micro langage
Micro language en python avec ply
Fonctionnalités
Calcul de base, print
cmd > print((2+6)*3);
24
Print d'une chaine de caractère
cmd > print("ma jolie string");
ma jolie string
Print concaténation
cmd > a = 10;
cmd > print("a=",a);
a= 10
cmd > print("1+2=",1+2);
1+2= 3
Opérations booléennes
cmd > print(3+6 > 9);
False
cmd > print( (3+6>9) | (2-2==0));
True
Affectation, print
cmd > x = 4; x=x+3; print(x);
7
Affectation élargie
cmd > x = 4; x++; print(x);
5
cmd > x = 66; x--; print(x);
65
cmd > x = 100; x+=3; x-=5; print(x);
98
Condition
a = 10;
if a > 9 then {
print(a);
}
if a > 10 then {
print("never");
}
10
While, For
cmd > x=4; while x > 0 { print(x); x--;}
4
3
2
1
cmd > for (i=0; i < 10; i+=2;) { print(i); }
0
2
4
6
8
Fonction void avec et sans paramètres
function fibo() {
n=10;
first=0;
second=1;
while n > 0 {
tmp=first+second;
first=second;
second=tmp;
print(first);
n--;
}
}
fibo();
1
1
2
3
5
8
13
21
34
55
function fibo(n) {
first=0;
second=1;
while n > 0 {
tmp=first+second;
first=second;
second=tmp;
print(first);
n--;
}
}
a=5;
fibo(a);
1
1
2
3
5
Fonction récursive et scope des variables
function rec(n) {
if n > 0 then {
n--;
rec(n);
print(n);
}
}
a=5;
rec(a);
print("----");
print(a);
0
1
2
3
4
----
5
Retour de fonction
function factorial(a) {
if a > 1 then {
return a * factorial(a-1);
}
return a;
}
print(factorial(10));
3628800
Tableaux
Affectation d'un tableau
Un tableau peut être affecté à une variable et peut contenir plusieurs expressions différentes :
cmd > array = ["coucou", "toi", 1, 2, 3+3];
cmd > print(array);
coucou toi 1 2 6
Taille d'un tableau
On peut récupérer la taille d'un tableau
cmd > print(len([1,2,3,4]));
4
cmd > array = [1,2];
cmd > print(len(array));
2
Accès à une case du tableau
On peut accéder à n'importe quel case du tableau pour en récupérer l'expression. Si l'index est hors de portée, une exception est levée.
cmd > array = ["coucou", "toi", 1, 2, 3+3];
cmd > print(array[1]);
toi
Concaténation dans le tableau
Il est possible de rajouter de l'élément dans un tableau existant de la manière suivante :
cmd > array = [ 1, 2, 3 ];
cmd > array <- 4;
cmd > array <- 4 + 1;
cmd > print(array);
1 2 3 4 5
Chargement de fichiers de code au démarrage
Possibilité de charger des fichiers au lancement pouvant contenir des déclarations de fonctions ou même des instructions.
Fichier fibo :
function fibo(n) {
first=0;
second=1;
while n > 0 {
tmp=first+second;
first=second;
second=tmp;
print(first);
n--;
}
}
Fichier factorial :
function factorial(a) {
if a > 1 then {
return a * factorial(a-1);
}
return a;
}
Exécution du programme
python main.py fibo factorial
cmd > fibo(10);
1
1
2
3
5
8
13
21
34
55
Chargement de fichiers de code pendant l'exécution
Possibilité de charger des fichiers pendant l'exécution pouvant contenir des déclarations de fonctions ou même des instructions.
Fichier fibo :
function fibo(n) {
first=0;
second=1;
while n > 0 {
tmp=first+second;
first=second;
second=tmp;
print(first);
n--;
}
}
Exécution du programme
python main.py
cmd > load("fibo");
cmd > fibo(10);
1
1
2
3
5
8
13
21
34
55