Source code for gavo.adql

"""
Parsing, annotating, and morphing queries in the Astronomical Data
Query Language.
"""

#c Copyright 2008-2023, the GAVO project <gavo@ari.uni-heidelberg.de>
#c
#c This program is free software, covered by the GNU GPL.  See the
#c COPYING file in the source distribution.


# Not checked by pyflakes: API file with gratuitous imports

from gavo.adql.annotations import annotate, optimize

from gavo.adql.common import *

from gavo.adql.nodes import flatten, registerNode, getTreeBuildingGrammar

from gavo.adql.grammar import (
	getADQLGrammar as getRawGrammar,
	ALL_RESERVED_WORDS,
	ParseException, ParseSyntaxException)

from gavo.adql.morphpg import (
	morphPG)

from gavo.adql.fieldinfo import getSubsumingType, FieldInfo

from gavo.adql.ufunctions import userFunction


[docs]def getSymbols(): return getTreeBuildingGrammar()[0]
[docs]def getGrammar(): return getTreeBuildingGrammar()[1]
[docs]def parseToTree(adqlStatement): """returns a "naked" parse tree for adqlStatement. It contains no annotations, so you'll usually not want to use this. """ return utils.pyparseString(getGrammar(), adqlStatement)[0]
[docs]def parseAnnotating(adqlStatement, fieldInfoGetter): """returns a tuple of context, parsedTree for parsing and annotating adqlStatement. The builtin morphs are performed on the tree. """ parsedTree = parseToTree(adqlStatement) ctx = annotate(parsedTree, fieldInfoGetter) optimize(parsedTree) return ctx, parsedTree