Beranger Seguin
2010-02-21 10:32:45 UTC
Bonjour à tous !
C'est mon premier message UseNet et c'est sur CE groupe que je vais le
poster:
J'ai programmé un système (ou du moins je commence) pour transformer
une version du C kikoololisée avec un transformateur PHP qui change ça
en VRAI C.
J'ai mis la page à http://jioparadise.olympe-network.com/kikooC.php
<?php
if(isset($_POST['code'])) { //Si l'user a déjà rempli le formulaire
$code=$_POST['code']; //L'assigner à $code
/*Directives de preprocesseur*/
$code=preg_replace('#\#utiliz (.{2,})#i', '#include $1', $code);
/*Comment ça y'en à qu'une ?? Bon, fin*/
/*Syntaxe*/
$code=preg_replace('#(.*) lol#i', '$1;', $code);
/*Fin de Syntaxe*/
/*Fonctions, opérations de bases et conditions*/
$code=preg_replace('#c-tt#i', '}', $code);
$code=preg_replace('#si (.*)=(.*) alor#i', 'if ($1==$2) {', $code);
$code=preg_replace('#si (.*) alor#i', 'if ($1) {', $code);
$code=preg_replace('#if \((.*):(.*)\) {#i', 'if ($1=$2) {', $code);
$code=preg_replace('#sinn#i', '} else {', $code);
$code=preg_replace('#ekri\((.*)\);#i', 'printf($1);', $code);
$code=preg_replace('#(.*)\((?:°o°|x_x|O_O|o\.o){0,1}\);#i', '$1();',
$code);
/*Fin de la partie*/
/*Cette partie concerne les fonctions*/
$code=preg_replace('#xd dbu :#i', 'int main(int argc, char *argv[])
{', $code); //Un peu spécial
$code=preg_replace('#xd antyez (.*)\((?:-\.\-|°o°|x_x|O_O|o\.o)
{0,1}\) :#i', 'int fonc $1() {', $code);
$code=preg_replace('#xd dsymal (.*)\((?:-\.\-|°o°|x_x|O_O|o\.o)
{0,1}\) :#i', 'float fonc $1() {', $code);
$code=preg_replace('#xd karaktr (.*)\((?:-\.\-|°o°|x_x|O_O|o\.o)
{0,1}\) :#i', 'char fonc $1() {', $code);
$code=preg_replace('#xd antyez (.*)\((.*)\) :#i', 'int fonc $1($2) {',
$code);
$code=preg_replace('#xd dsymal (.*)\((.*)\) :#i', 'float fonc $1($2)
{', $code);
$code=preg_replace('#xd karaktr (.*)\((.*)\) :#i', 'char fonc $1($2)
{', $code);
$code=preg_replace('#envwa (.*);#i', 'return $1;', $code);
if (preg_match('#fonc .*\((.*)\) {#i', $code, $headersFonctions)) { //
Içi on traduit les types des arguments
$i=0;
while(isset($headersFonctions[$i])) {
$headerFonction=$headersFonctions[$i];
$headerFonctionMod=str_replace('fonc', '', $headerFonction);
$headerFonctionMod=str_replace('antyez', 'int', $headerFonctionMod);
$headerFonctionMod=str_replace('dsymal', 'float', $headerFonctionMod);
$headerFonctionMod=str_replace('karaktr', 'char', $headerFonctionMod);
$headerFonctionMod=str_replace('shen2([0-9]*)letr', 'char[$1]',
$headerFonctionMod);
$code=str_replace($headerFonction, $headerFonctionMod, $code);
}
}//Fin de la traduction
/*Fin de la partie... sur les fonctions !*/
/*Cette partie va concerner les variables (typées manuellement oopa)
(obligés de donner une valeur) NO ARRAY SUPPORT !!*/
$code=preg_replace('#antyez (.*): ([0-9]*);#i', 'int $1=$2;', $code);
$code=preg_replace('#dsymal (.*): ([0-9]{1,}),([0-9]{1,});#i', 'float
$1=$2.$3;) {', $code);
$code=preg_replace('#karaktr (.*): ([0-9]{1,3});#i', 'char $1=$2;',
$code);
$code=preg_replace('#karaktr (.*): "([a-z])";#i', 'char $1="$2";',
$code);
$code=preg_replace('#karaktr (.*): ([a-z]);#i', 'char $1="$2";',
$code);
$code=preg_replace('#shen (.*): "(.*)";#i', 'char[] $1="$2";', $code);
$code=preg_replace('#shen (.*): (.*);#i', 'char[] $1="$2";', $code);
$code=preg_replace('#(.*): ([0-9]*);#i', 'int $1=$2;', $code);
$code=preg_replace('#(.*): ([0-9]{1,}),([0-9]{1,});#i', 'float $1$2.$3;) {', $code);
$code=preg_replace('#(.*): ([0-9]{1,3});#i', 'char $1=$2;', $code);
$code=preg_replace('#(.*): "([a-z])";#i', 'char $1="$2";', $code);
$code=preg_replace('#(.*): ([a-z]);#i', 'char $1="$2";', $code);
$code=preg_replace('#(.*): "(.*)";#i', 'char[] $1="$2";', $code);
$code=preg_replace('#(.*): ([a-z]*);#i', 'char[] $1="$2";', $code);
$code=preg_replace('#shen2([0-9]*)letr (.*): "([a-z]*)";#i', 'char[$1]
$2="$3";', $code);
$code=preg_replace('#shen2([0-9]*)letr (.*): ([a-z]*);#i', 'char[$1]
$2="$3";', $code);
/*Fin de la partie sur les variables*/
//Je donnerai plus tard une solution pour écrire les prototypes dans
les .h, déclarer les variables sans valeur et accepter les variables
de types "kikoo" dans les fonctions
/*On traite içi la mise en page de la sortie (pas de coloration ou
d'indentation...pour le moment)*/
$code=htmlspecialchars($code);
$code=stripslashes($code);
$code=nl2br($code);
/*Bon, bah... affichons !!*/
echo($code); //C'est fait !
} else {
?>
<form action="#" method="POST"><textarea rows="50" cols="50"
name="code">
#utiliz <stdio.h>
#utiliz <stdlib.h>
xD Dbu :
MonPote: Frederic LOL //Detection du type de variable (observez le
char[])
Si 2+2=4 alor //Notez le simple "="
ekri("Slt %s", MonPote) LOL
sinn
ekri("Bah ya1prob ac la kalkulet") LOL //C'est pas faux.....
C-tt
fonctionAuNimp(O_O) LOL
envwa 0 LOL
C-tt
</textarea><input type="submit" value="Convertir en C" /></form>
<?php
}
?>
C'est les sources ^^
Bon voilà, sinon comment avec une RegEx on peut faire "si on a une
suite mais qu'il y a au moins une lettre" ( .*[a-zA-Z].* ?) ??
Merci à tous
C'est mon premier message UseNet et c'est sur CE groupe que je vais le
poster:
J'ai programmé un système (ou du moins je commence) pour transformer
une version du C kikoololisée avec un transformateur PHP qui change ça
en VRAI C.
J'ai mis la page à http://jioparadise.olympe-network.com/kikooC.php
<?php
if(isset($_POST['code'])) { //Si l'user a déjà rempli le formulaire
$code=$_POST['code']; //L'assigner à $code
/*Directives de preprocesseur*/
$code=preg_replace('#\#utiliz (.{2,})#i', '#include $1', $code);
/*Comment ça y'en à qu'une ?? Bon, fin*/
/*Syntaxe*/
$code=preg_replace('#(.*) lol#i', '$1;', $code);
/*Fin de Syntaxe*/
/*Fonctions, opérations de bases et conditions*/
$code=preg_replace('#c-tt#i', '}', $code);
$code=preg_replace('#si (.*)=(.*) alor#i', 'if ($1==$2) {', $code);
$code=preg_replace('#si (.*) alor#i', 'if ($1) {', $code);
$code=preg_replace('#if \((.*):(.*)\) {#i', 'if ($1=$2) {', $code);
$code=preg_replace('#sinn#i', '} else {', $code);
$code=preg_replace('#ekri\((.*)\);#i', 'printf($1);', $code);
$code=preg_replace('#(.*)\((?:°o°|x_x|O_O|o\.o){0,1}\);#i', '$1();',
$code);
/*Fin de la partie*/
/*Cette partie concerne les fonctions*/
$code=preg_replace('#xd dbu :#i', 'int main(int argc, char *argv[])
{', $code); //Un peu spécial
$code=preg_replace('#xd antyez (.*)\((?:-\.\-|°o°|x_x|O_O|o\.o)
{0,1}\) :#i', 'int fonc $1() {', $code);
$code=preg_replace('#xd dsymal (.*)\((?:-\.\-|°o°|x_x|O_O|o\.o)
{0,1}\) :#i', 'float fonc $1() {', $code);
$code=preg_replace('#xd karaktr (.*)\((?:-\.\-|°o°|x_x|O_O|o\.o)
{0,1}\) :#i', 'char fonc $1() {', $code);
$code=preg_replace('#xd antyez (.*)\((.*)\) :#i', 'int fonc $1($2) {',
$code);
$code=preg_replace('#xd dsymal (.*)\((.*)\) :#i', 'float fonc $1($2)
{', $code);
$code=preg_replace('#xd karaktr (.*)\((.*)\) :#i', 'char fonc $1($2)
{', $code);
$code=preg_replace('#envwa (.*);#i', 'return $1;', $code);
if (preg_match('#fonc .*\((.*)\) {#i', $code, $headersFonctions)) { //
Içi on traduit les types des arguments
$i=0;
while(isset($headersFonctions[$i])) {
$headerFonction=$headersFonctions[$i];
$headerFonctionMod=str_replace('fonc', '', $headerFonction);
$headerFonctionMod=str_replace('antyez', 'int', $headerFonctionMod);
$headerFonctionMod=str_replace('dsymal', 'float', $headerFonctionMod);
$headerFonctionMod=str_replace('karaktr', 'char', $headerFonctionMod);
$headerFonctionMod=str_replace('shen2([0-9]*)letr', 'char[$1]',
$headerFonctionMod);
$code=str_replace($headerFonction, $headerFonctionMod, $code);
}
}//Fin de la traduction
/*Fin de la partie... sur les fonctions !*/
/*Cette partie va concerner les variables (typées manuellement oopa)
(obligés de donner une valeur) NO ARRAY SUPPORT !!*/
$code=preg_replace('#antyez (.*): ([0-9]*);#i', 'int $1=$2;', $code);
$code=preg_replace('#dsymal (.*): ([0-9]{1,}),([0-9]{1,});#i', 'float
$1=$2.$3;) {', $code);
$code=preg_replace('#karaktr (.*): ([0-9]{1,3});#i', 'char $1=$2;',
$code);
$code=preg_replace('#karaktr (.*): "([a-z])";#i', 'char $1="$2";',
$code);
$code=preg_replace('#karaktr (.*): ([a-z]);#i', 'char $1="$2";',
$code);
$code=preg_replace('#shen (.*): "(.*)";#i', 'char[] $1="$2";', $code);
$code=preg_replace('#shen (.*): (.*);#i', 'char[] $1="$2";', $code);
$code=preg_replace('#(.*): ([0-9]*);#i', 'int $1=$2;', $code);
$code=preg_replace('#(.*): ([0-9]{1,}),([0-9]{1,});#i', 'float $1$2.$3;) {', $code);
$code=preg_replace('#(.*): ([0-9]{1,3});#i', 'char $1=$2;', $code);
$code=preg_replace('#(.*): "([a-z])";#i', 'char $1="$2";', $code);
$code=preg_replace('#(.*): ([a-z]);#i', 'char $1="$2";', $code);
$code=preg_replace('#(.*): "(.*)";#i', 'char[] $1="$2";', $code);
$code=preg_replace('#(.*): ([a-z]*);#i', 'char[] $1="$2";', $code);
$code=preg_replace('#shen2([0-9]*)letr (.*): "([a-z]*)";#i', 'char[$1]
$2="$3";', $code);
$code=preg_replace('#shen2([0-9]*)letr (.*): ([a-z]*);#i', 'char[$1]
$2="$3";', $code);
/*Fin de la partie sur les variables*/
//Je donnerai plus tard une solution pour écrire les prototypes dans
les .h, déclarer les variables sans valeur et accepter les variables
de types "kikoo" dans les fonctions
/*On traite içi la mise en page de la sortie (pas de coloration ou
d'indentation...pour le moment)*/
$code=htmlspecialchars($code);
$code=stripslashes($code);
$code=nl2br($code);
/*Bon, bah... affichons !!*/
echo($code); //C'est fait !
} else {
?>
<form action="#" method="POST"><textarea rows="50" cols="50"
name="code">
#utiliz <stdio.h>
#utiliz <stdlib.h>
xD Dbu :
MonPote: Frederic LOL //Detection du type de variable (observez le
char[])
Si 2+2=4 alor //Notez le simple "="
ekri("Slt %s", MonPote) LOL
sinn
ekri("Bah ya1prob ac la kalkulet") LOL //C'est pas faux.....
C-tt
fonctionAuNimp(O_O) LOL
envwa 0 LOL
C-tt
</textarea><input type="submit" value="Convertir en C" /></form>
<?php
}
?>
C'est les sources ^^
Bon voilà, sinon comment avec une RegEx on peut faire "si on a une
suite mais qu'il y a au moins une lettre" ( .*[a-zA-Z].* ?) ??
Merci à tous