créer un langage c'est facile.. faire un compilateur c'est compliquer.
Mais pour rester dans le résonable tu peux faire intépreteur.
Les étapes :
_definir ton language de maniere détaillé :
variable : commence par une lettre puis des charractères alphanumerique
code::=affectation|structureIf;
opBool::=ou|et
exprbool::=variable opBool variable
structureIf::=if(exprbool) {code}
et ainsi de suite ...
_ lecture du fichier texte charractère par charractère.
_ lecture de mot: a chaque blanc ou charractère spécial défini dans ton language tu passe au mot suivant ( les charractères spéciaux sont des mots mais pas les blancs).
_creer un parser qui verifie la grammaire.. par exemple si le premier mot est "if" alors attendu "(" puis attendu "expression" et puis attendu ")".
_en utilisant le parser tu creer un arbre de ton programme.
par exemple pour ton if les branches de l'arbre serait : expresion, code à executer. Pour chaque branche tu créer une fonction qui l'execute.
Ensuite il te faut un tableau associatif de toutes tes variables ce qui te permet de mettre a jours les valeurs au fur et mesure de l'execution.
_POur finir tu parcours ton arbre en utilisant la fonction d'execution pour chaque branche.
Dit comme ca c'est un peu abstrait !?! tu peut trouver un frameWork pour creer ton language de programmation. C'est comme ca que j'ai apris.
une fois que tu a fait tout ca tu est tres content et puis tu peu prolonger le plaisir : l'arbre est facilement manipulable tu peut faire un convertisseur vers le C par exemple ou pourquoi pas faire du code binaire.
Voici les grandes lignes en esperant que ca se donne des pistes pour chercher de la doc sur le net.
2006-09-08 10:41:53
·
answer #1
·
answered by Marco 2
·
0⤊
0⤋
tu doit être un ermite qui n'as rien a faire de ses journées toi! C'est plutot hardu tu trouve pas de créer un langage de prog essai plutôt d'en apprendre un déjà !!!
2006-09-11 04:20:39
·
answer #2
·
answered by Anonymous
·
0⤊
0⤋
définir des verbes...
maitriser les techniques de compilation.
par exemple on peut générer le code d'une expression comportant des parenthèses en la convertissant en notation polonaise inversée. le code final aura besoin d'une pile pour donner le résultat. bref, c'est tout un métier, et effectivement, une partie du boulot est mâchée sous linux...
2006-09-08 08:58:28
·
answer #3
·
answered by Ramis V 7
·
0⤊
0⤋
Sous Unix, les outils lex puis yacc
lex : analyse lexicale des sources,
yacc (yet another compiler compiler) pour convertir les sources en code exécutable ou linkable.
2006-09-08 06:32:38
·
answer #4
·
answered by Zenith 5
·
0⤊
0⤋
tu t'attaques à du lourd !!! mieux vaut partir d'une base solide telle que l'assembleur ...
2006-09-08 06:31:44
·
answer #5
·
answered by en_vacances 7
·
0⤊
0⤋
R
T
F
M
!
2006-09-08 06:30:18
·
answer #6
·
answered by HugoB 3
·
0⤊
0⤋