]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/parser/regexp/RAtom.java
Moved SCL parser generator to platform repository.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / parser / regexp / RAtom.java
1 package org.simantics.scl.compiler.parser.regexp;
2
3 import org.simantics.scl.compiler.parser.regexp.automata.NFA;
4
5 public class RAtom extends Regexp {
6     public final int symbolId;
7
8     public RAtom(int symbolId) {
9         this.symbolId = symbolId;
10     }
11
12     @Override
13     protected void buildAutomaton(NFA aut, int inState, int outState) {
14         aut.addTransition(inState, symbolId, outState);
15     }
16
17     @Override
18     protected void toString(StringBuilder b, int prec) {
19         b.append((char)symbolId);
20     }
21
22     @Override
23     public void toString(StringBuilder b, Namer grammar, int prec) {
24         if(symbolId == 0x80000000)
25             b.append("#");
26         else
27             b.append(grammar.getName(symbolId));
28     }
29     
30     @Override
31     protected int getTypeId() {
32         return ATOM;
33     }
34     
35     @Override
36     public boolean equals(Object obj) {
37         if(obj == this)
38             return true;
39         if(obj == null || obj.getClass() != getClass())
40             return false;
41         RAtom other = (RAtom)obj;
42         return symbolId == other.symbolId;
43     }
44     
45     @Override
46     public int hashCode() {
47         return 31*symbolId + 46;
48     }
49
50     @Override
51     public boolean isNullable() {
52         return false;
53     }
54
55 }