--- /dev/null
+package org.simantics.scl.compiler.parser.regexp;
+
+import org.simantics.scl.compiler.parser.regexp.automata.NFA;
+
+public class RAtom extends Regexp {
+ public final int symbolId;
+
+ public RAtom(int symbolId) {
+ this.symbolId = symbolId;
+ }
+
+ @Override
+ protected void buildAutomaton(NFA aut, int inState, int outState) {
+ aut.addTransition(inState, symbolId, outState);
+ }
+
+ @Override
+ protected void toString(StringBuilder b, int prec) {
+ b.append((char)symbolId);
+ }
+
+ @Override
+ public void toString(StringBuilder b, Namer grammar, int prec) {
+ if(symbolId == 0x80000000)
+ b.append("#");
+ else
+ b.append(grammar.getName(symbolId));
+ }
+
+ @Override
+ protected int getTypeId() {
+ return ATOM;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if(obj == this)
+ return true;
+ if(obj == null || obj.getClass() != getClass())
+ return false;
+ RAtom other = (RAtom)obj;
+ return symbolId == other.symbolId;
+ }
+
+ @Override
+ public int hashCode() {
+ return 31*symbolId + 46;
+ }
+
+ @Override
+ public boolean isNullable() {
+ return false;
+ }
+
+}