1 package org.codehaus.groovy.antlr;
2
3 import antlr.collections.AST;
4 import antlr.*;
5
6 /***
7 * We have an AST subclass so we can track source information.
8 * Very odd that ANTLR doesn't do this by default.
9 *
10 * @author Mike Spille
11 * @author Jeremy Rayner <groovy@ross-rayner.com>
12 */
13 public class GroovySourceAST extends CommonAST implements Comparable {
14 private int line;
15 private int col;
16 private int lineLast;
17 private int colLast;
18 private String snippet;
19
20 public GroovySourceAST() {
21 }
22
23 public GroovySourceAST(Token t) {
24 super(t);
25 }
26
27 public void initialize(AST ast) {
28 super.initialize(ast);
29 line = ast.getLine();
30 col = ast.getColumn();
31 }
32
33 public void initialize(Token t) {
34 super.initialize(t);
35 line = t.getLine();
36 col = t.getColumn();
37 }
38
39 public void setLast(Token last) {
40 lineLast = last.getLine();
41 colLast = last.getColumn();
42 }
43
44 public int getLineLast() {
45 return lineLast;
46 }
47
48 public void setLineLast(int lineLast) {
49 this.lineLast = lineLast;
50 }
51
52 public int getColumnLast() {
53 return colLast;
54 }
55
56 public void setColumnLast(int colLast) {
57 this.colLast = colLast;
58 }
59
60 public void setLine(int line) {
61 this.line = line;
62 }
63
64 public int getLine() {
65 return (line);
66 }
67
68 public void setColumn(int column) {
69 this.col = column;
70 }
71
72 public int getColumn() {
73 return (col);
74 }
75
76 public void setSnippet(String snippet) {
77 this.snippet = snippet;
78 }
79
80 public String getSnippet() {
81 return snippet;
82 }
83
84 public int compareTo(Object object) {
85 if (object == null) {
86 return 0;
87 }
88 if (!(object instanceof AST)) {
89 return 0;
90 }
91 AST that = (AST) object;
92
93
94
95 if (this.getLine() < that.getLine()) {
96 return -1;
97 }
98 if (this.getLine() > that.getLine()) {
99 return 1;
100 }
101
102 if (this.getColumn() < that.getColumn()) {
103 return -1;
104 }
105 if (this.getColumn() > that.getColumn()) {
106 return 1;
107 }
108
109 return 0;
110 }
111 }