/* Copyright (c) 2017 Christopher Cromer * Copyright (c) 2017 Carlos Faúndez * * This file is part of mt. It is subject to the license terms in the LICENSE file found in the top-level directory of this distribution. * This file may not be copied, modified, propagated, or distributed except according to the terms contained in the LICENSE file. */ package cl.cromer.mt; import org.w3c.dom.Document; class Maquina { private Automata maquina; private Estado estadoactual; private Enlace enlaceactual; private String cintaanterior; private int cabezal; Maquina(Document document) { maquina = new Automata(document); reset(); } Automata getMaquina() {return maquina;} public Estado getEstadoactual() {return estadoactual;} public Enlace getEnlaceactual() {return enlaceactual;} public String getCintaanterior() {return cintaanterior;} public int getCabezal() {return cabezal;} public void reset() { estadoactual = maquina.getEstados().get(0); enlaceactual = null; cintaanterior = ""; cabezal = 0; } boolean comprobarCadena(StringBuilder cinta, int[] estadoFinal) { //estadoactual = maquina.getEstados().get(0); int i; for (i = 0; i < estadoactual.getEnlaces().size(); i++) { if (estadoactual.getEnlaces().get(i).getSi() == cinta.charAt(cabezal)) { enlaceactual = estadoactual.getEnlaces().get(i); cinta.setCharAt(cabezal, enlaceactual.getSj()); switch (enlaceactual.getMovimiento()) { case 'L': { cabezal--; if (cabezal == (-1)) { cinta.insert(0, "#"); cabezal++; } break; } case 'R': { cabezal++; if (cabezal == cinta.length()) { cinta.insert(cabezal, "#"); } break; } default: {/*Se mantiene*/} } estadoactual = enlaceactual.getQj(); i = -1; } } for(i=0;i