C'est possible de créer un compilateur ?

En me baladant dans les ( très ) anciens sujets j’ai remarqué que dayvid voulait à tout prix créer des logiciels pour la programmation.
Et là je vois que 4ian à écrit : << La compilation des créations, c’est un des trucs qu’il faut penser dès le départ, pas une fois tout le logiciel fait sauf ça >>

Alors je me demandais si un programmeur du SdZ pouvait réaliser un compilateur d’un langage créer par lui même ( genre si j’écris : nouvelle fenetre; et que je compile ça, ça me fais un .exe qui ouvre une fenêtre ) ou si il fallait utiliser des kit’s, SDK’s ?

Tu dois le créer toi-même et faut être très fort.

Si tu maîtrise extrêmement bien les langages de bas-niveau comme l’Assembleur, alors oui. Cependant je doute fort que tu en sois capable, ni même quiconque sur le forum.

Ok, mais 4ian gère comment ses .exe ?
Dans le SdZ on a un exercice ou on doit parser un langage perso et je voudrai aller plus loin en compilant tout ça en .exe

Game Develop ne compile pas vraiment les jeux. Il inscrit les événements / scènes / objets dans le fichier gam.edg (il est dans le dossier d’un jeu compilé) et l’excéutable est toujours le même. Cet exe se contente d’interpréter le contenu du gam.edg.

Cela dit, 4ina bosse sur une nouvelle façon de compiler les jeux (tu as sûrement remarqué qu’il en parlais dans le topic “Discussions générales > Game Develop 1.5.10151”) et là, il va intégrer un compilateur déjà existant dans Game Develop.

Bref, faire un compilateur n’est pas à la portée de tout le monde.
Par contre, tu peux te créer un langage perso qui sera interprété (et pas compiler) par un exécutable que tu aura créé en C++ par exemple.

Enfaite c’est tout bête alors, si j’ai compris :

L’utilisateur créer un fichier .lag ( je verrais pour l’extension ) et inscrit son code
Moi je créer un .exe qui va parser le .lag

Oui, dans le cas d’un langage interprété seulement.

C’est ce que je veux faire, non ? ( A part le compilateur en Assembleur :smiley: )

Ben dans ce cas là tout le monde aura besoin de l’interpréteur pour exécuter les programmes faits avec ce langage.

Je ferrais comme 4ian → les DLL’s + .lag + le .exe

Un langage interprété (Python en est un) sera plus lent qu’un langage compilé (comme le C++)

La différence n’est pas énorme, il me semble.

Ça dépend de la qualité de l’interpréteur. Cependant la différence de performance entre Python et C++ par exemple, n’est notable que dans le cas de très grosses applications (utilisant beaucoup de 3D par exemple).

Vous savez convertir un QString en qreal ?

qreal, c’est un nombre compris entre 0 et 1 et un QString c’est une chaîne de caractère. Ca se convertit pas, sauf si ta QString contient un nombre.
Dans ce cas :

monQReal = taQString.toDouble()

Il faut savoir que QReal est un double en fait sauf sur les mobiles où c’est un float (pour des raisons de perf).

Ça fonctionne, merci.

Enfin presque …

[code]
QRegExp WINDOWTitleCommand(“titre fenetre = (.+);”);
QRegExp WINDOWOpacityCommand(“opacite fenetre = (\d);”);
if (ui->textEdit->toPlainText().contains(WINDOWTitleCommand))
{
QString titre = WINDOWTitleCommand.cap(1);
MainWindow::setWindowTitle(titre);
}

if (ui->textEdit->toPlainText().contains(WINDOWOpacityCommand))
{
    QString opacite = WINDOWOpacityCommand.cap(1);
    qreal opacite2 = opacite.toDouble();
    MainWindow::setWindowOpacity(opacite2);
}[/code]

Voilà mon code ( pour le moment ), si je tape titre fenetre = Test; le titre de ma fenêtre serra Test mais si je tape titre fenetre = Test;opacite fenetre = 0.3; le titre de ma fenêtre serra Test;opacite fenetre = 0.3; et non Test avec une fenetre d’opacite 0.3. Quelqu’un à réponse à ce problème ?

Tu veux créer un exécutable avec TON language ? La solution la plus simple : le programme écrit dans ton language doit être traduit dans un langage qui possède déjà un compilateur. Ton “traducteur” doit être un programme en console.

Je transforme tout ça en Qt4 console

Peu importe, tant que le programme écrit dans ton language est traduit dans un fichier temporaire qui peut être traduit en binaire par un compilateur de c ou c++.

Pip@une tu as quel niveaux car moi aussi je voulais faire ça
tu te doute bien que c’est hyper dure non ?