SQL

mikerez

SQL parser

DRAFT!

'SELECT' [ \t] <SELECT>
'UPDATE' [ \t] <UPDATE>
'DELETE' [ \t] <DELETE>

<@SELECT>
    <FIELDS>
        <FIELDS> <WHERE> [ \t]* 'ORDER BY' <FIELDS> [ \t]* 'LIMIT' count:u32 ";"
        default: ";" $

<@FIELDS>       # used for tables list also, could be splitted for better syntax checking
    [ \t]*
    "(" \
        'SELECT' <SELECT> ")"
        default: <FIELD> ")"
    'AS' [ \t] alias:substring(32,",")
    'INNER JOIN' [ \t]
    'OUTER JOIN' [ \t]
    'JOIN' [ \t]
    'FROM' [ \t] $$
    'LIMIT' [ \t] $$
    ","
    ";" $
    default(32): <FIELD>

<@FIELD>
    field:substring(128,",(")
        "(" <FIELD>
        default: $$

<@WHERE>
    [ \t]*
    'AND' [ \t]
    'OR' [ \t]
    'EXISTS' [ \t]
    "("
        'SELECT' <SELECT> ")"
        default: <WHERE> ")"
    "=="
    ">"
        "="
        default:
    "<"
        "="
        default:
    expression:substring(128,"(<>=")

<@UPDATE> # TODO
<@DELETE> # TODO

Related

Wiki: State Hierarchy PROTOcol Language

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.