Les Snippets

Connexion

Convertisseur "Algorithmie" vers Java

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 13/04/2010 09:18:02 et initié par krissssss [Liste]
Vue : 3386
Catégorie(s) : Algorithme, Divers
Langages dispo pour ce code :
- Perl



Langage : Perl
Date ajout : 13/04/2010
Posté par krissssss [Liste]
#!/usr/bin/perl
open(F,'< '.$ARGV[0]);
our $indent=2;
our $indenting=1;
our @context=("none");
sub pin{
    print " " x ($indent*$indenting).shift(@_);
}
sub parseit{
    $_=shift(@_);
    if(/SI (.*) ALORS/){
        push(@context,"cond");
        print "//PC:$&\n";
        pin "if (";
        $indenting=0;
        parseit($1);
        $indenting=1;
        pin "){\n";
        $indent++;
    }elsif(/TANT QUE (.*) FAIRE/){
        print "//PC:$&\n";
        pin "while (";
        push(@context,"cond");
        parseit($1);
        pin "){\n";
        $indent++;
    }elsif(/POUR (.*) DE (.*) A (.*) PAR PAS DE (.*) FAIRE/){
        print "//PC:$&\n";
        pin "for($1=$2;$1<=$3;$1+=$4){\n";
        $indent++;
    }elsif(/POUR (.*) DE (.*) A (.*) FAIRE/){
        print "//PC:$&\n";
        pin "for($1=$2;$1<=$3;$1++){\n";
        $indent++;
    }elsif(/FIN SI/ or /FIN TANT QUE/ or /FIN POUR/){
        $indent--;
        pop(@context);
        pin "}";
        print "//PC:$&\n";
    }elsif(/(.*) ET (.*)/){
        $indenting=0;
        parseit($1);
        print " && ";
        parseit($2);
        $indenting=1;
    }elsif(/(.*) OU (.*)/){
        $indenting=0;
        parseit($1);
        print " || ";
        parseit($2);
        $indenting=1;
    }elsif(/(.*) ?= ?(.*)/){
        $indenting=0;
        parseit($1);
        print "== ";
        $indenting=0;
        parseit($2);
        $indenting=1;
    }elsif(/(.*) ?% ?(.*)/){
        print " Maths.mod(";
        $indenting=0;
        parseit($1);
        print ",";
        $indenting=0;
        parseit($2);
        print ") ";
        $indenting=1;
    }elsif(/(\w*) ?<- ?(.*)/){
        pin $1."=";
        $indenting=0;
        push(@context,"aff");
        parseit($2);
        pop(@context);
        $indenting=1;
        print ";\n";
    }elsif(/(\w*) ?: ?Entier/){
        print "//PC:$&\n";
        pin "int ".$1.";\n";
    }elsif(/(\w*) ?: ?Booléen/){
        print "//PC:$&\n";
        pin "boolean ".$1.";\n";
    }elsif(/(\w*) ?: ?Chaîne/){
        print "//PC:$&\n";
        pin "String ".$1.";\n";
    }elsif(/AFFICHER (.*)/){
        pin "System.out.println(";
        $indenting=0;
        parseit($1);
        $indenting=1;
        print ");\n";
    }else{
        pin $_;
    }
}
print "class ${ARGV[1]} {\n";
print " public static void main(String args[]){\n";
while(<F>){
    parseit($_);
}
print" }\n";
print "}\n";
close F;
Remarque :
Le script reçoit deux arguments, le nom du fichier à lire et le nom de la classe java à créer. Le langage parsé est utilisé à l'ESI.

Snippets en rapport avec : Conversion, Algorithme, Java, Logique



Codes sources en rapport avec : Conversion, Algorithme, Java, Logique

{JAVA / J2EE} EVALUATION D'UNE EXPRESSION LOGIQUE (CRITERE1 && CRITERE2) || CRITERE3 DYNAMIQUEMENT DANS UN PROGRAMME JAVA
Ce source donne un exemple de code pour évaluer une expression logique dynamiquement dans un program...

{JAVA / J2EE} STRING TO (STRING) INT
Rien de bien méchant, mais c'est toujours utile de pouvoir avoir la valeur des caractères d'un strin...

{JAVA / J2EE} STRING TO (STRING) HEXA
Rien de bien méchant, mais c'est toujours utile de pouvoir avoir la valeur des caractères d'un strin...

{PHP} SUITE LOGIQUE
Une suite logique que j'ai découvert dans un des livres de Bernard Werber : 1 11 21 1211 1112...

{C / C++ / C++.NET} CONVERSION D'UN NOMBRE D'UNE BASE QUELCONQUE VERS UNE AUTRE
Le fonction baseToBase permet de convertir un nombre d'une base quelconque vers une autre, par le bi...

{Visual Basic, VB6, VB.NET, VB 2005} TRADUCTEUR VB6.VBP EN VB5.VBP
Ben oui ! Il y a encore des utilisateurs de VB5. C'est ce qui m'a amené à faire ce petit programm...

{JAVA / J2EE} CARRÉ MAGIQUE D'ORDRE PAIR
Ce code source est réalisé par Netbeans IDE pour calculer le carré magique d'un nombre pair, et il l...

{Visual Basic, VB6, VB.NET, VB 2005} TRIEUR DE PHOTOS
Ce programme permet de sélectionner des photos et de les enregistrer dans un dossier de destination....

{JAVA / J2EE} FRAMEWORK MVC
Le livrable Framework est constitué de trois dossiers :  Le dossier de Source, contenant l&...

{JAVA / J2EE} PILOTER À DISTANCE UN SERVEUR VIA SMS
Le code suivant illustre comment recevoir des SMS envoyes depuis des lignes SFR dans son serveur jav...