/*----------------------------------------------------------------------------------------------------------------
* CupCarbon: A Smart City & IoT Wireless Sensor Network Simulator
* www.cupcarbon.com
* ----------------------------------------------------------------------------------------------------------------
* Copyright (C) 2013-2017 CupCarbon
* ----------------------------------------------------------------------------------------------------------------
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*----------------------------------------------------------------------------------------------------------------
* CupCarbon U-One is part of the research project PERSEPTEUR supported by the
* French Agence Nationale de la Recherche ANR
* under the reference ANR-14-CE24-0017-01.
* ----------------------------------------------------------------------------------------------------------------
**/
package cupcarbon_script;
/**
* @author Ahcene Bounceur
* @author Molham Darwish
* @version 1.0
*/
public class CupCommand_GOTO extends CupCommand {
protected String arg ;
public CupCommand_GOTO(CupScript script, String arg) {
this.script = script ;
this.arg = arg ;
}
@Override
public String execute() {
if(arg.equals("++")) {
script.next();
return "000";
}
if(arg.equals("--")) {
script.previous();
return "000";
}
String idxStr = script.getVariableValue(arg);
int idx;
if(Character.isDigit(idxStr.charAt(0))) {
idx = Integer.valueOf(idxStr);
script.setIndex(idx-2);
return "000";
}
idx = script.getLineOfLabel(arg);
script.setIndex(idx-2);
return "000";
}
@Override
public String toString() {
return "GOTO";
}
}