State.java
package org.eu.autogex.core;
import java.util.Objects;
/** Represents a state (q) within an automaton. */
public class State {
private final String name;
private final boolean isFinal;
/**
* Constructs a new State.
*
* @param name The unique name of the state.
* @param isFinal True if the state is an accepting (final) state.
*/
public State(String name, boolean isFinal) {
this.name = name;
this.isFinal = isFinal;
}
/**
* Gets the name of the state.
*
* @return The state name.
*/
public String getName() {
return name;
}
/**
* Checks if the state is a final (accepting) state.
*
* @return True if final, false otherwise.
*/
public boolean isFinal() {
return isFinal;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
State state = (State) o;
return isFinal == state.isFinal && Objects.equals(name, state.name);
}
@Override
public int hashCode() {
return Objects.hash(name, isFinal);
}
@Override
public String toString() {
return isFinal ? "*" + name : name;
}
}