odata_query.grammar module

Implementation of a subset of the OData formal grammar . Implemented with SLY.

class odata_query.grammar.ODataLexer[source]

Bases: Lexer

WS = '\\s+'
error(token: Token)[source]

Error handler during tokenization

Parameters:

token – The token that failed to tokenize.

Raises:

TokenizingException

literals = {'(', ')', ',', '/', ':', '='}
reflags = 2
tokens = {'ADD', 'ALL', 'AND', 'ANY', 'BOOLEAN', 'DATE', 'DATETIME', 'DECIMAL', 'DIV', 'DURATION', 'EQ', 'GE', 'GEOGRAPHY', 'GT', 'GUID', 'IN', 'INTEGER', 'LE', 'LT', 'MOD', 'MUL', 'NE', 'NOT', 'NULL', 'ODATA_IDENTIFIER', 'OR', 'STRING', 'SUB', 'TIME', 'UMINUS', 'WS'}
class odata_query.grammar.ODataParser[source]

Bases: Parser

debugfile = None
error(token: Optional[Token])[source]

Error handler during parsing.

Parameters:

token – The token at which point parsing failed.

Raises:

ParsingFailedException

precedence = (('left', 'OR'), ('left', 'AND'), ('left', 'EQ', 'NE'), ('left', 'GT', 'GE', 'LT', 'LE'), ('left', 'ADD', 'SUB'), ('left', 'MUL', 'DIV', 'MOD'), ('right', 'NOT', 'UMINUS'), ('left', 'IN'))
tokens = {'ADD', 'ALL', 'AND', 'ANY', 'BOOLEAN', 'DATE', 'DATETIME', 'DECIMAL', 'DIV', 'DURATION', 'EQ', 'GE', 'GEOGRAPHY', 'GT', 'GUID', 'IN', 'INTEGER', 'LE', 'LT', 'MOD', 'MUL', 'NE', 'NOT', 'NULL', 'ODATA_IDENTIFIER', 'OR', 'STRING', 'SUB', 'TIME', 'UMINUS', 'WS'}