Files
interpreteur-lir/src/interpreteurlir/motscles/instructions/InstructionVaen.java
T
2021-05-24 19:01:55 +02:00

71 lines
2.0 KiB
Java

/**
* InstructionVaen.java 15 mai 2021
* IUT-Rodez info1 2020-2021, pas de droits, pas de copyrights
*/
package interpreteurlir.motscles.instructions;
import interpreteurlir.Contexte;
import interpreteurlir.InterpreteurException;
import interpreteurlir.programmes.Etiquette;
/**
* Instruction qui transfère l'execution au numéro étiquette spécifié.
* @author Nicolas Caminade
* @author Sylvan Courtiol
* @author Pierre Debas
* @author Heia Dexter
* @author Lucas Vabre
*
*/
public class InstructionVaen extends Instruction {
/** Etiquette à laquelle le programme doit se rendre */
private Etiquette etiquette;
/**
* Initialise un saut de ligne avec une étiquette en argument.
* @param arguments Etiquette à laquelle le programme doit se rendre
* @param contexte Contexte de la session de l'interpreteur LIR
*/
public InstructionVaen(String arguments, Contexte contexte) {
super(arguments, contexte);
final String ERREUR_ARG = "usage vaen <étiquette>";
if (arguments.isBlank()) {
throw new InterpreteurException(ERREUR_ARG);
}
this.etiquette = new Etiquette(arguments);
}
/* non javadoc -
* @see interpreteurlir.motscles.instructions.Instruction#toString()
* */
@Override
public String toString() {
return "vaen " + etiquette;
}
/**
* Execution de l'instruction :
* Réalise un saut à l'étiquette spécifiée.
* @return false car aucun feedback affiché directement
* @throws RuntimeException si un programme n'est pas référencé en membre
* de classe de Commande.
*/
public boolean executer() {
final String ERREUR = "Le programme doit être référencé "
+ "dans la classe commande";
if (programmeGlobal == null) {
throw new RuntimeException(ERREUR);
}
programmeGlobal.vaen(etiquette);
return false;
}
}