@startuml
package expressions {
	class AppelFonction extends Expression {
		+ Appel(EntreeFct i, int ligne, int colonne, Expression... parametres)
		+ void verifier()
		+ String toMIPS()
		+ Type getType()
		+ String getCommentaire()
	}
	AppelFonction --"1" Entree
	AppelFonction --"1" Symbole
	AppelFonction --"*" Expressions : parametres



	abstract class Constante extends Expression {
		# String cste
		# Constante(String valeur, int ligne, int colonne)
		+ void verifier()
		+ String getCommentaire()
	}

	class ConstanteBooleene extends Constante {
		+ ConstanteBooleene(String valeur, int ligne, int colonne)
		+ String toMIPS()
		+ Type getType()
		+ String getCommentaire()
	}

	class ConstanteEntiere extends Constante {
		+ ConstanteEntiere(String valeur, int ligne, int colonne)
		+ String toMIPS()
		+ Type getType()
		+ String getCommentaire()
	}


	abstract class Expression extends ArbreAbstrait implements Typed{
		# Expression(int ligne, int colonne)
		+ abstract Type getType();
		+ abstract String getCommentaire()
	}

	class Idf extends Expression {
		+ Idf(Entree e, int ligne, int colonne)
		+ void verifier()
		+ String toMIPS()
		+ Type getType()
		+ SymboleVar getSymbole()
		+ String getPositionMIPS()
		+ String getCommentaire()
	}
	Idf --"1" Entree
	Idf --"1" Symbole

	class Negation extends Expression {
		+ Negation(Expression exp, int ligne, int colonne)
		+ void verifier()
		+ String toMIPS()
		+ Type getType()
		+ String getCommentaire()
	}
	Negation --"1" Expression

	class Moins extends Expression {
		+ Moins(Expression exp, int ligne, int colonne)
		+ void verifier()
		+ String toMIPS()
		+ Type getType()
		+ String getCommentaire()
	}
	Moins --"1" Expression

}
@enduml