001: package org.apache.ojb.jdo.jdoql;
002:
003: /* Copyright 2003-2005 The Apache Software Foundation
004: *
005: * Licensed under the Apache License, Version 2.0 (the "License");
006: * you may not use this file except in compliance with the License.
007: * You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: import antlr.CommonAST;
019: import antlr.Token;
020: import antlr.collections.AST;
021:
022: /**
023: * An AST node that also contains position info (for error handling).
024: *
025: * @author <a href="mailto:tomdz@apache.org">Thomas Dudziak</a>
026: */
027: public class ASTWithPositionInfo extends CommonAST {
028: /** The line where the source of this node started. */
029: private int _line = 0;
030: /** The column where the source of this node started. */
031: private int _column = 0;
032:
033: /**
034: * Creates a new node.
035: */
036: public ASTWithPositionInfo() {
037: super ();
038: }
039:
040: /**
041: * Creates a new node for the given token.
042: *
043: * @param tok The token
044: */
045: public ASTWithPositionInfo(Token tok) {
046: super (tok);
047: }
048:
049: /**
050: * Returns the column where the source of this node started.
051: *
052: * @return The column
053: * @see antlr.collections.AST#getColumn()
054: */
055: public int getColumn() {
056: return _column;
057: }
058:
059: /**
060: * Returns the line where the source of this node started.
061: *
062: * @return The line
063: * @see antlr.collections.AST#getLine()
064: */
065: public int getLine() {
066: return _line;
067: }
068:
069: /* (non-Javadoc)
070: * @see antlr.collections.AST#initialize(antlr.collections.AST)
071: */
072: public void initialize(AST ast) {
073: super .initialize(ast);
074: _line = ast.getLine();
075: _column = ast.getColumn();
076: }
077:
078: /* (non-Javadoc)
079: * @see antlr.collections.AST#initialize(antlr.Token)
080: */
081: public void initialize(Token tok) {
082: super .initialize(tok);
083: _line = tok.getLine();
084: _column = tok.getColumn();
085: }
086:
087: /* (non-Javadoc)
088: * @see antlr.collections.AST#addChild(antlr.collections.AST)
089: */
090: public void addChild(AST ast) {
091: if ((ast != null) && (down == null) && (_line == 0)
092: && (_column == 0)) {
093: _line = ast.getLine();
094: _column = ast.getColumn();
095: }
096: super .addChild(ast);
097: }
098:
099: /* (non-Javadoc)
100: * @see antlr.collections.AST#setFirstChild(antlr.collections.AST)
101: */
102: public void setFirstChild(AST ast) {
103: if ((ast != null) && (_line == 0) && (_column == 0)) {
104: _line = ast.getLine();
105: _column = ast.getColumn();
106: }
107: super.setFirstChild(ast);
108: }
109: }
|