MA GALAXIE WEB

LETTRE D'INFORMATION

Nom

Courriel (e-mail)


RECHERCHER



Mon blog d'écrivain

RSS

flux RSS
RSS Commentaires

"Poor Lonesome Coder", parce que pendant longtemps j'ai codé seul, sans collégue. Et je m'en allais
dans la lumiére de l'écran couchant, sur mon fidèle Jolly Clavieur, en chantant une chanson... ;-)

Langage D

Interpréteur simple en Pascal

Voici un petit projet, débuté il y a longtemps et actuellement abandonné. Si je le reprenais actuellement j'utiliserais lex/flex et yacc/bison au lieu d'analyser moi-meme le code source. L'exe, les exemples et le code Pascal arrivent sous peu.

Quelques explications :
L'interpréteur D code se compose de 4 objets (pascal en POO)
- l'interpréteur lui même, qui "comprend" le langage et y réagis
- la liste des variables
- le parser, capable de calculer (5+1)*7-4 autant que Compt>=7 et même "D "+"code"
- le buffer texte, qui envoit ce qu'il contient (le code) comme on le lui demande, fait les recherches...
J'ai choisis le pascal car c'est le langage que je maitrise le mieux, mais un portage vers le c++ (pour la poo) me semble un avenir probable. Je travaille avec TurboPascal 7, Tasm 5 et Delphi 2 (Borland).

mai 1998
- parser pour les chaines (concaténation) et les booléens (tests logiques)
- fonction SI
- nouveau site ouaib plus complet
mars 1998
- première page web sur le D code, choix du nom et du logo (by moi même)
février 1998
- seules les variables entières sont acceptées, dans la limite de 20 variables - sans aucune vérification.
- boucle POUR basique (incrément de 1 seulement, gestion bizarre de la variable de boucle)
- le parser accepte les quatres opérations sur les entiers
- fonction ECRIRE et variables chaines

Voici le code (qui marche) qui calcul la suite de Fibonacci et une factorielle
PROC MAIN {
#Variables
Entier Anc1=1, Anc2=1, N=20, Stock;
Chaine List="1 1 ";
#Fibonnacci
Ecrire("Calcul de la suite de Fibonnacci")
POUR (i:=1;i<=N) {
Stock:=Anc1;
Anc1:=Anc1+Anc2;
Anc2:=Stock;
List:=List+Anc1+" ";
I:=I+1;
}
Ecrire(List)

Ecrire("Calcul des factorielles")
Anc1:=1;
List:=" ";
POUR (i:=1;i<=N-8) {
Anc1:=Anc1*I;
List:=List+Anc1+" ";
I:=I+1;
}
Ecrire(List)
}

Fichier(s)

05/02/2008 - Cédric Girard