Créer un "compilateur"
psgkiki
Messages postés
43
Statut
Membre
-
donuts08 Messages postés 523 Statut Membre -
donuts08 Messages postés 523 Statut Membre -
Bonjour,
J'ai comme sujet de stage de créer un mini-langage et que à partir de ce langage se génère du PHP.
Plus clairement, je vais créer un script en utilisant mon langage de programmation que je vais créer et je vais devoir avoir comme résultat un fichier PHP avec le code correspondant.
Exemple :
Script nouveau langage :
<*repertoire_image("img/photo") *>
<*pour tout elt(id_image,titre) de la table(BDD.nomTable) aux attributs(id,titre) FAIRE
nouveau_fichier(elt.id_image
...
FIN POUR
*>
...
A l'aide d'un exécutable, sera crée autant de fichier PHP qu'il y a de elt dans la base de données.
Fichier PHP généré correspondant au script ci-dessus :
<?php $rep_image = "img/photo" ?>
<?php
//connexion base
$req = mysql_query("select * from table");
while($result = mysql_fetch_array($req))
{
$new = fopen ($result['id'].".php","w");
...
}
Voilà un petit peu le principe.
Pouvez-vous m'aider à démarrer ?
Je pense réaliser l'éxécutable en C avec Lex et Yacc. Mais comment faire que quand il rencontre <* il remplace par <?php, quand il rencontre repertoireimage("img/photo") il me le remplace par <?php $rep = "img/photo"; ?> ...
Merci beaucoup
J'ai comme sujet de stage de créer un mini-langage et que à partir de ce langage se génère du PHP.
Plus clairement, je vais créer un script en utilisant mon langage de programmation que je vais créer et je vais devoir avoir comme résultat un fichier PHP avec le code correspondant.
Exemple :
Script nouveau langage :
<*repertoire_image("img/photo") *>
<*pour tout elt(id_image,titre) de la table(BDD.nomTable) aux attributs(id,titre) FAIRE
nouveau_fichier(elt.id_image
...
FIN POUR
*>
...
A l'aide d'un exécutable, sera crée autant de fichier PHP qu'il y a de elt dans la base de données.
Fichier PHP généré correspondant au script ci-dessus :
<?php $rep_image = "img/photo" ?>
<?php
//connexion base
$req = mysql_query("select * from table");
while($result = mysql_fetch_array($req))
{
$new = fopen ($result['id'].".php","w");
...
}
Voilà un petit peu le principe.
Pouvez-vous m'aider à démarrer ?
Je pense réaliser l'éxécutable en C avec Lex et Yacc. Mais comment faire que quand il rencontre <* il remplace par <?php, quand il rencontre repertoireimage("img/photo") il me le remplace par <?php $rep = "img/photo"; ?> ...
Merci beaucoup
A voir également:
- Créer un compilateur
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Créer un lien pour partager des photos - Guide
- Créer un compte gmail - Guide
- Creer un fichier .bat - Guide
Je ne vois pas comment faire pour que mon programme lise le fichier .newlanguage et remplace tout par du code PHP.
Il faut bien définir quelque part qu'il remplace quelque chose par quelque chose ...
Il va donc lire le fichier, et à l'aide d'expression régulières il va comparer ce qu'il lit à du code qu'il connait pour le remplacer par du PHP.
Comment et ou spécifié que lorsque il rencontre <*, il remplace par <?php.
Merci
https://nicolasj.developpez.com/articles/regex/#LIV-A
Après il faut aussi que tu regardes comment ouvrir et lire des fichiers:
j'ai trouvé ça https://www.ltam.lu/cours-c/prg-c142.htm
ensuite il faut que tu définisse clairement la syntaxe de ton langage et par quoi tu vas remplacé les éléments, enfin j'espère que tu connais bien le C et le PHP avant de te lancer sur ce projet?
Mais comme je te l'ai dit je ne vois pas comment et où spécifier que lorsque l'on rencontre un élément, on le remplace par son code PHP.
Ou est ce que l'on spécifié que <* correspond à <?php, que ouvrir_fichier correspond à fopen(...)