Commit 5877bcdc authored by LucasDANIELE's avatar LucasDANIELE
Browse files

V1 fonctionnelle; il reste a gerer les erreurs

parent 22ab88d6
......@@ -39,6 +39,6 @@ $(TESTS_DEST)/%.class: $(TEST)/%.java
clean:
rm $(SRC)/$(PACKAGE_INTER)/*.java
rm -rf $(CLASSES_DEST)/*
rm -rf $(TESTS_DEST)/*
rm $(SRC)/$(PACKAGE_INTER)/*.java
File mode changed from 100644 to 100755
......@@ -9,4 +9,4 @@ j=j+1
allera somme
finsomme: si s==i alors ecrire i
i=i+1
si i<=n alors allera boucle
si i<=n alors allera boucle
\ No newline at end of file
......@@ -7,18 +7,18 @@ package fr.insarouen.asi.compilation.basic;
import fr.insarouen.asi.compilation.basic.analyseurs.AnalyseurSyntaxique;
import fr.insarouen.asi.compilation.basic.analyseurs.ParseException;
import fr.insarouen.asi.compilation.basic.moteur.arbreSyntaxiqueAbstrait.Affectation;
import fr.insarouen.asi.compilation.basic.moteur.Identifiant;
// import fr.insarouen.asi.compilation.basic.moteur.arbreSyntaxiqueAbstrait.Affectation;
// import fr.insarouen.asi.compilation.basic.moteur.Identifiant;
import fr.insarouen.asi.compilation.basic.moteur.IdentifiantException;
import fr.insarouen.asi.compilation.basic.moteur.Memoire;
// import fr.insarouen.asi.compilation.basic.moteur.Memoire;
import fr.insarouen.asi.compilation.basic.moteur.Programme;
import fr.insarouen.asi.compilation.basic.moteur.Valeur;
// import fr.insarouen.asi.compilation.basic.moteur.Valeur;
import fr.insarouen.asi.compilation.basic.moteur.VariableInconnueException;
import fr.insarouen.asi.compilation.basic.moteur.expression.Addition;
import fr.insarouen.asi.compilation.basic.moteur.expression.Constante;
import fr.insarouen.asi.compilation.basic.moteur.expression.IdentifiantDeVariable;
import fr.insarouen.asi.compilation.basic.moteur.expression.Multiplication;
import fr.insarouen.asi.compilation.basic.moteur.expression.Soustraction;
// import fr.insarouen.asi.compilation.basic.moteur.expression.Addition;
// import fr.insarouen.asi.compilation.basic.moteur.expression.Constante;
// import fr.insarouen.asi.compilation.basic.moteur.expression.IdentifiantDeVariable;
// import fr.insarouen.asi.compilation.basic.moteur.expression.Multiplication;
// import fr.insarouen.asi.compilation.basic.moteur.expression.Soustraction;
import fr.insarouen.asi.compilation.basic.moteur.TypeIncompatibleException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
......
......@@ -8,20 +8,15 @@ PARSER_BEGIN(AnalyseurSyntaxique)
package fr.insarouen.asi.compilation.basic.analyseurs;
import fr.insarouen.asi.compilation.basic.analyseurs.*;
import fr.insarouen.asi.compilation.basic.moteur.arbreSyntaxiqueAbstrait.*;
import fr.insarouen.asi.compilation.basic.moteur.*;
import fr.insarouen.asi.compilation.basic.moteur.expression.*;
import fr.insarouen.asi.compilation.basic.moteur.TypeIncompatibleException;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class AnalyseurSyntaxique {
private Programme prog;
private Memoire mem;
public Programme programme() throws ParseException, IdentifiantException, TypeIncompatibleException,VariableInconnueException,TypeIncompatibleException{
mem = new Memoire();
public Programme programme() throws ParseException, IdentifiantException,TypeIncompatibleException,VariableInconnueException,TypeIncompatibleException{
prog = new Programme();
lire();
return prog;
......@@ -77,37 +72,61 @@ TOKEN : {
| <FAUX:["f","F"]["a","A"]["u","U"]["x","X"]>
}
// void lire() throws IdentifiantException :
// {
// Identifiant id = null ;
// Instruction instruction;
// }
// {
// (
// ((id = identifiant()) < LABEL >) ? instruction = instruction()
// {
// if (instruction == null)
// prog.addInstruction(instruction);
// else
// prog.addInstructionAvecLabel(instruction, id);
// id = null;
// }
// )*
// < EOF >
// }
void lire() throws IdentifiantException :
{
Identifiant id = null ;
Instruction i;
}
{
(
(LOOKAHEAD(2) (id = identifiant()) < LABEL >) ? (i = instruction())
{
if (id == null)
prog.addInstruction(i);
else
prog.addInstructionAvecLabel(i, id);
id = null;
}
)*
< EOF >
}
void lire() throws IdentifiantException,TypeIncompatibleException,TypeIncompatibleException,VariableInconnueException :
Instruction instruction() throws IdentifiantException:
{
Expression e;
Memoire mem=new Memoire();
Identifiant id;
Instruction i;
Expression e;
Token t;
}
{
(
e=operateurLogique()
)
{
System.out.println(e.evaluer(mem));
}
(<LIRE>(id=identifiant()){
return new Lire(id);
})
|(<SI>(e=expression())<ALORS>(i = instruction()){
return new SiAlors(e,i);
})
|(<ECRIRE>(e=expression()){
return new Ecrire(e);
})
|(<RIEN>{
return new Rien();
})
|(<ALLERA>(id=identifiant()){
return new AllerA(id);
})
|( (id=identifiant())<AFF>(e = expression()){
return new Affectation(id, e);
})
)
}
Expression expression() throws IdentifiantException:
{
Expression e;
}
{
e = operateurLogique(){return e;}
}
Expression operateurLogique() throws IdentifiantException:
......@@ -116,24 +135,33 @@ Expression operateurLogique() throws IdentifiantException:
Token t;
}
{
g = comparaison()
(
(t=<ET> | t=<OU>)
d=operateurLogique(){
switch (t.kind) {
case ET:
return new Et(g,d);
break;
case OU:
return new Ou(g,d);
break;
}
((t=<NON>)(d=operateurLogique()))
{
return new Non(d);
}
)?
{
return g;
}
|
(
g = comparaison()
(
(t=<ET> | t=<OU>)
d=operateurLogique(){
switch (t.kind) {
case ET:
return new Et(g,d);
break;
case OU:
return new Ou(g,d);
break;
}
}
)?
{
return g;
}
)
)
}
Expression comparaison() throws IdentifiantException:
......@@ -234,7 +262,7 @@ Expression terme() throws IdentifiantException :
(
( (v=valeur()){ e=new Constante(v); } )
| ( (i=identifiant()){ e=new IdentifiantDeVariable(i); } )
| ( <PARENG> (e=terme()) <PAREND> )
| ( <PARENG> (e=expression()) <PAREND> )
)
{
if (t == null)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment