Skip to content
ashigeru edited this page Sep 14, 2010 · 12 revisions

Query

Query:
    SelectStatement
    ApplyStatement
SelectStatement:
    'SELECT' TermList Source Filter? Order?
ApplyStatement:
    'APPLY' Procedure Source Filter? Order?
Procedure:
    Name '(' TermList? ')'
    Name '(' TermList ')' 'EVERY' IntegerLiteral
Source:
    'FROM' Type Name
Filter:
    'WHERE' Constraint
Order:
    'ORDER' 'BY' OrderCriterionList
OrderCriterionList:
    OrderCriterionList ',' OrderCriterion
    OrderCriterion
OrderCriterion:
    Term 'ASC'
    Term 'DESC'

Constraint

Constraint:
    Or
Or:
    Or 'OR' And
    And
And:
    And 'AND' Not
    Not
Not:
    'NOT' Not
    Atom
Atom:
    '(' Constraint ')'
    Relational
    Quantification
Relational:
    Term Operator Term
Quantification:
    'EXISTS' Name 'IN' Primary Atom
Term:
    Additive
Additive:
    Additive '+' Multiplicative
    Additive '-' Multiplicative
    Multiplicative
Multiplicative:
    Multiplicative '*' Unary
    Multiplicative '/' Unary
    Multiplicative '%' Unary
    Unary
Unary:
    '+' Unary
    '-' Unary
    Primary
Primary:
    '(' Term ')'
    Literal
    Property
    Construct
    List
    Name
Operator:
    '=='
    '!='
    '<'
    '>'
    '<='
    '>='
    'LIKE'
    'IN'
Property:
    Name '.' Name
Literal:
    IntegerLiteral
    RealNumberLiteral
    BooleanLiteral
    StringLiteral
    NullLiteral
Construct:
    Name '(' TermList ')'
List:
    '[' TermList? ']'
TermList:
    Term ',' TermList
    Term

Basics

IntegerLiteral:
    INTEGER
RealNumberLiteral:
    REAL_NUMBER
BooleanLiteral: one of
    TRUE FALSE
StringLiteral:
    STRING
NullLiteral:
    NULL
Type:
    QualifiedName
QualifiedName:
    QualifiedName '.' Name
    Name
Name:
    IDENTIFIER

Clone this wiki locally