ANTLR parser for SQL-like grammar, in java ,antlrworks2 - repost
$10-30 USD
Paid on delivery
BID ONLY IF YOU HAVE EXPERIENCE IN ANTLR ,ANTLRWORKS2 and JAVA
I want a query parser engine .Consider this example
SELECT [url removed, login to view], COUNT ([url removed, login to view]) AS NumberOfOrders FROM Orders
INNER JOIN Employees
ON Orders.EmployeeID=[url removed, login to view]
WHERE LastName='Davolio' OR LastName='Fuller'
GROUP BY LastName
HAVING COUNT ([url removed, login to view]) > 25;
I want to parse this select statement and retrieve this elements by calling methods.
For example
getStatement() -> “select”
getColumn() -> [[url removed, login to view], COUNT ([url removed, login to view])]
getColumnAliase() ->[null, NumberOfOrders]
getJoin() -> [Orders INNER JOIN Employees]
getJoinCondition() -> [ON Orders.EmployeeID=[url removed, login to view]]
getWhere() -> [OR]
getOr() -> [LastName='Davolio', LastName='Fuller']
getGroupBy() -> [LastName]
getHaving() -> [COUNT ([url removed, login to view]) > 25]
The parser engine should support select , insert , delete and update only.
Use antlr 4.1 and antlrworks2.
Avoid using pakages and comments a few word on the coding
See the syntaxes below
1.0 SELECT STATEMENT
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
* | expression [ [ AS ] output_name ] [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ]
where from_item can be one of:
[ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
( select )-> i.e a sub query [ AS ] alias [ ( column_alias [, ...] ) ]
from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]
METHODS:
getStatement() -> return first token i.e select
getColumn() -> return all field name or * found after select
getArithmeticOperator -> return arithmetic operator
getColumnAliase()-> return aliase from table
getFrom () -> return all table name along with aliases
getJoin() -> return all join found in the from_item
getJoinCondition() -> return all the conditions of join
getTableAliase()
getWhere() -> return all conditions i.e and , or , like
getAnd() -> return the 2 conditions found between and condition
getOr() -> return the 2 condition lies between or
getLike()
getBetween()
getSubSelect() -> return sub select statement
getGroupBy()
getHaving()
ALL THE METHODS ABOVE SHOULD RETURN AS AN ARRAY OF STRING EXCEPT THE getSubSelect() , which should return as string which contain the subselect string that can parse again.
2.0 INSERT STATEMENT
INSERT INTO table_name [ ( column_name [, ...] ) ]
{ DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
REFER TO SELECT STATEMENT TO KNOW RETURN VALUE
getStatement() -> return first token i.e insert
getTableName()
getFieldName()
getSubSelect()
3.0 DELETE STATEMENT
DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ]
[ WHERE condition]
REFER TO SELECT STATEMENT TO KNOW RETURN VALUE
getStatement() -> return first token i.e delete
getTableName() -> table name
getWhere() -> return all conditions i.e and , or , like
getAnd() -> return the 2 conditions found between and condition
getOr() -> return the 2 condition lies between or
getLike()
getBetween()
4.0 UPDATE STATEMENT
UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
SET { column_name = { expression | DEFAULT } |
( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]
[ FROM from_list ]
[ WHERE condition]
REFER TO SELECT STATEMENT TO KNOW RETURN VALUE
getStatement() -> return first token i.e update
getTableName() -> table name
getWhere() -> return all conditions i.e and , or , like
getAnd() -> return the 2 conditions found between and condition
getOr() -> return the 2 condition lies between or
getLike()
getBetween()
getSubSelect()
Project ID: #5137206