@Override
public OperationResult execute(ParserState state) {
String name = varname.getString(state);
String v = value == null ? null : value.getString(state);
CallStackFrame frame = state.getCallStack();
if (frame == null)
throw new RuntimeException("SETLOCAL command cannot be used outside DEFTEMPLATE");
if (!frame.containsName(name)) {
String oldvalue = state.getLocal(name);
state.setCallStack(new CallStackFrame(frame, name, oldvalue));
}
if (v != null)
state.setLocal(name, v);
return OperationResult.CONTINUE;
}