01: /*
02:
03: Derby - Class org.apache.derby.iapi.sql.compile.Parser
04:
05: Licensed to the Apache Software Foundation (ASF) under one or more
06: contributor license agreements. See the NOTICE file distributed with
07: this work for additional information regarding copyright ownership.
08: The ASF licenses this file to you under the Apache License, Version 2.0
09: (the "License"); you may not use this file except in compliance with
10: the License. You may obtain a copy of the License at
11:
12: http://www.apache.org/licenses/LICENSE-2.0
13:
14: Unless required by applicable law or agreed to in writing, software
15: distributed under the License is distributed on an "AS IS" BASIS,
16: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17: See the License for the specific language governing permissions and
18: limitations under the License.
19:
20: */
21:
22: package org.apache.derby.iapi.sql.compile;
23:
24: import org.apache.derby.iapi.error.StandardException;
25:
26: /* Strictly speaking we shouldn't import classes under the impl hierarchy here
27: * but this is work in progress.
28: * manish - Wed Mar 28 13:05:19 PST 2001
29: */
30: import org.apache.derby.impl.sql.compile.QueryTreeNode;
31:
32: /**
33: * The Parser interface is intended to work with Jack-generated parsers (now JavaCC).
34: * We will specify "STATIC=false" when building Jack parsers - this specifies
35: * that the generated classes will not be static, which will allow there to be
36: * more than one parser (this is necessary in a multi-threaded server).
37: * Non-static parsers do not have to be re-initialized every time they are
38: * used (unlike static parsers, for which one must call ReInit() between calls
39: * to the parser).
40: *
41: * @author Jeff Lichtman
42: */
43:
44: public interface Parser {
45:
46: /**
47: * Parses the given statement and returns a query tree. The query tree
48: * at this point is a simple syntactic translation of the statement.
49: * No binding will have taken place, and no decisions will have been
50: * made regarding processing strategy.
51: *
52: * @param statementSQLText The Statement to parse.
53: * @param paramDefaults Parameter defaults
54: * @return A new QueryTree representing the syntax of the Statement
55: *
56: * @exception StandardException Thrown on failure
57: */
58: public QueryTreeNode parseStatement(String statementSQLText,
59: Object[] paramDefaults) throws StandardException;
60:
61: public QueryTreeNode parseStatement(String statementSQLText)
62: throws StandardException;
63:
64: /**
65: * Returns the current SQL text string that is being parsed.
66: *
67: * @return Current SQL text string.
68: *
69: */
70: public String getSQLtext();
71:
72: }
|