Encerrado

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

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

Habilidades: Java, SQL

Ver mais: sql grammar antlr, found employees, coding java, sql support, java sql, sql retrieve table, java group, antlrworks2, update insert sql, antlr select, antlr select statement grammar, sql select order, java count, insert sql, java antlr sql, antlr java, sql default values, update delete java, word query sql, antlr java sql, java antlr, antlr sql grammar, java comments, coding join table, java string

Acerca do Empregador:
( 4 comentários ) llllkkk, Mauritius

ID do Projeto: #5137206