1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.yaml.snakeyaml.tokens;
17
18 import org.yaml.snakeyaml.error.Mark;
19 import org.yaml.snakeyaml.error.YAMLException;
20
21 public abstract class Token {
22 public enum ID {
23 Alias, Anchor, BlockEnd, BlockEntry, BlockMappingStart, BlockSequenceStart, Directive, DocumentEnd, DocumentStart, FlowEntry, FlowMappingEnd, FlowMappingStart, FlowSequenceEnd, FlowSequenceStart, Key, Scalar, StreamEnd, StreamStart, Tag, Value
24 }
25
26 private final Mark startMark;
27 private final Mark endMark;
28
29 public Token(Mark startMark, Mark endMark) {
30 if (startMark == null || endMark == null) {
31 throw new YAMLException("Token requires marks.");
32 }
33 this.startMark = startMark;
34 this.endMark = endMark;
35 }
36
37 public String toString() {
38 return "<" + this.getClass().getName() + "(" + getArguments() + ")>";
39 }
40
41 public Mark getStartMark() {
42 return startMark;
43 }
44
45 public Mark getEndMark() {
46 return endMark;
47 }
48
49
50
51
52 protected String getArguments() {
53 return "";
54 }
55
56
57
58
59
60
61 public abstract Token.ID getTokenId();
62
63
64
65
66 @Override
67 public boolean equals(Object obj) {
68 if (obj instanceof Token) {
69 return toString().equals(obj.toString());
70 } else {
71 return false;
72 }
73 }
74
75
76
77
78 @Override
79 public int hashCode() {
80 return toString().hashCode();
81 }
82 }