Skip to content

Instantly share code, notes, and snippets.

@kelvingakuo
Created November 19, 2021 12:15
Show Gist options
  • Save kelvingakuo/a0718868c0ceede057b7bb78a9ee4a8e to your computer and use it in GitHub Desktop.
Save kelvingakuo/a0718868c0ceede057b7bb78a9ee4a8e to your computer and use it in GitHub Desktop.
def query():
""" <query> ::= "SELECT " <columns> " FROM " <name> <terminal> | "SELECT " <columns> " FROM " <name> " WHERE " <conditionList> <terminal>
"""
pass
def columns():
""" <columns> ::= (<name> ", ")+ | "*"
Accepts:
- *
- col_a
_ col_a, col_b
"""
pass
def name():
""" Accepts tokens of type 'name'
"""
pass
def condition_list():
""" <conditionList> ::= <condition> <comparator> <condition>
Accepts:
- col_a = 20
- col_a = 20 AND col_b = 30
- col_a = 20 OR col_b = col_c
"""
pass
def comparator():
""" <comparator> ::= " AND " | " OR "
Accepts:
- AND
- OR
"""
pass
def condition():
""" <condition> ::= <name> <operator> <term>
Accepts:
- col_a = 20
- col_a = 20.5
- col_a = col_b
"""
pass
def term():
""" <term> ::= <digit> | <digit> "." <digit> | <name>
"""
pass
def terminal():
""" Accepts tokens of type 'terminal'
"""
pass
def operator():
""" Accepts tokens of type 'operator'
"""
pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment