Skip to content

Commit edd0c76

Browse files
committed
root nodes established but not linked
1 parent d66a93a commit edd0c76

File tree

3 files changed

+25
-4
lines changed

3 files changed

+25
-4
lines changed

src/main/java/net/sf/jsqlparser/parser/CCJSqlParserUtil.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,16 @@ public static Statement parse(String sql) throws JSQLParserException {
5151
throw new JSQLParserException(ex);
5252
}
5353
}
54+
55+
public static Node parseAST(String sql) throws JSQLParserException {
56+
CCJSqlParser parser = new CCJSqlParser(new StringReader(sql));
57+
try {
58+
parser.Statement();
59+
return parser.jjtree.rootNode();
60+
} catch (Exception ex) {
61+
throw new JSQLParserException(ex);
62+
}
63+
}
5464

5565
public static Statement parse(InputStream is) throws JSQLParserException {
5666
CCJSqlParser parser = new CCJSqlParser(is);

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -259,13 +259,15 @@ a configurable addition. One must rebuild JSqlParser with this new "Letterset".
259259
| < #ADDITIONAL_LETTERS: ["ä","ö","ü","Ä","Ö","Ü","ß"] >
260260
}
261261

262-
Statement Statement() :
262+
Statement Statement() #Statement:
263263
{ Statement stm; }
264264
{
265265
stm = SingleStatement()
266266
[";"]
267267
<EOF>
268-
{ return stm; }
268+
{
269+
return stm;
270+
}
269271
}
270272

271273
Statement SingleStatement() :
@@ -304,7 +306,7 @@ Statement SingleStatement() :
304306
{ return stm; }
305307
}
306308

307-
Statements Statements() :
309+
Statements Statements() #Statements :
308310
{ Statements stmts = new Statements();
309311
List<Statement> list = new ArrayList<Statement>();
310312
Statement stm; }
@@ -1306,7 +1308,7 @@ Top Top():
13061308
}
13071309
}
13081310

1309-
Expression Expression():
1311+
Expression Expression() #Expression :
13101312
{
13111313
Expression retval = null;
13121314
}

src/test/java/net/sf/jsqlparser/test/select/SelectASTTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import junit.framework.TestCase;
2222
import net.sf.jsqlparser.JSQLParserException;
23+
import net.sf.jsqlparser.parser.CCJSqlParserTreeConstants;
2324
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
2425
import net.sf.jsqlparser.parser.SimpleNode;
2526
import net.sf.jsqlparser.schema.Column;
@@ -61,4 +62,12 @@ public void testSelectASTColumn() throws JSQLParserException {
6162
}
6263
assertEquals("SELECT *, * FROM mytable order by #, #", b.toString());
6364
}
65+
66+
public void testSelectASTNode() throws JSQLParserException {
67+
String sql = "SELECT a, b FROM mytable order by b, c";
68+
StringBuilder b = new StringBuilder(sql);
69+
SimpleNode node = (SimpleNode) CCJSqlParserUtil.parseAST(sql);
70+
node.dump("*");
71+
assertEquals(CCJSqlParserTreeConstants.JJTSTATEMENT, node.getId());
72+
}
6473
}

0 commit comments

Comments
 (0)