Closed

ANTLR parser for SQL-like grammar, in java ,antlrworks2 - repost2

This project received 1 bids from talented freelancers with an average bid price of $33 USD.

Get free quotes for a project like this
Project Budget
$25 - $32 USD
Total Bids
1
Project Description

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()

Skills Required

Looking to make some money?

  • Set your budget and the timeframe
  • Outline your proposal
  • Get paid for your work

Hire Freelancers who also bid on this project

    • Forbes
    • The New York Times
    • Time
    • Wall Street Journal
    • Times Online