ClickHouse/utils/grammar-fuzzer/ClickHouseUnparser.py

1816 lines
71 KiB
Python

# Generated by Grammarinator 19.3
from itertools import chain
from grammarinator.runtime import *
import ClickHouseUnlexer
class ClickHouseUnparser(Grammarinator):
def __init__(self, unlexer):
super(ClickHouseUnparser, self).__init__()
self.unlexer = unlexer
@depthcontrol
def queryList(self):
current = self.create_node(UnparserRule(name='queryList'))
current += self.queryStmt()
if self.unlexer.max_depth >= 8:
for _ in self.zero_or_more():
current += self.unlexer.SEMICOLON()
current += self.queryStmt()
if self.unlexer.max_depth >= 1:
for _ in self.zero_or_one():
current += self.unlexer.SEMICOLON()
current += self.unlexer.EOF()
return current
queryList.min_depth = 8
@depthcontrol
def queryStmt(self):
current = self.create_node(UnparserRule(name='queryStmt'))
current += self.query()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.INTO()
current += self.unlexer.OUTFILE()
current += self.unlexer.STRING_LITERAL()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_one():
current += self.unlexer.FORMAT()
current += self.identifier()
return current
queryStmt.min_depth = 7
@depthcontrol
def query(self):
current = self.create_node(UnparserRule(name='query'))
choice = self.choice([0 if [6, 7, 6, 6][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_108', i), 1) for i, w in enumerate([1, 1, 1, 1])])
self.unlexer.weights[('alt_108', choice)] = self.unlexer.weights.get(('alt_108', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.distributedStmt()
elif choice == 1:
current += self.insertStmt()
elif choice == 2:
current += self.selectUnionStmt()
elif choice == 3:
current += self.setStmt()
return current
query.min_depth = 6
@depthcontrol
def distributedStmt(self):
current = self.create_node(UnparserRule(name='distributedStmt'))
choice = self.choice([0 if [5, 6, 6][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_113', i), 1) for i, w in enumerate([1, 1, 1])])
self.unlexer.weights[('alt_113', choice)] = self.unlexer.weights.get(('alt_113', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.createDatabaseStmt()
elif choice == 1:
current += self.createTableStmt()
elif choice == 2:
current += self.dropStmt()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_one():
current += self.unlexer.ON()
current += self.unlexer.CLUSTER()
current += self.identifier()
return current
distributedStmt.min_depth = 5
@depthcontrol
def createDatabaseStmt(self):
current = self.create_node(UnparserRule(name='createDatabaseStmt'))
current += self.unlexer.CREATE()
current += self.unlexer.DATABASE()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.IF()
current += self.unlexer.NOT()
current += self.unlexer.EXISTS()
current += self.databaseIdentifier()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.engineExpr()
return current
createDatabaseStmt.min_depth = 4
@depthcontrol
def createTableStmt(self):
current = self.create_node(UnparserRule(name='createTableStmt'))
current += self.unlexer.CREATE()
current += self.unlexer.TABLE()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.IF()
current += self.unlexer.NOT()
current += self.unlexer.EXISTS()
current += self.tableIdentifier()
current += self.schemaClause()
return current
createTableStmt.min_depth = 5
@depthcontrol
def schemaClause(self):
current = self.create_node(UnparserRule(name='schemaClause'))
choice = self.choice([0 if [8, 7, 5, 4][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_121', i), 1) for i, w in enumerate([1, 1, 1, 1])])
self.unlexer.weights[('alt_121', choice)] = self.unlexer.weights.get(('alt_121', choice), 1) * self.unlexer.cooldown
if choice == 0:
current = self.schemaClause_SchemaDescriptionClause()
elif choice == 1:
current = self.schemaClause_SchemaAsSubqueryClause()
elif choice == 2:
current = self.schemaClause_SchemaAsTableClause()
elif choice == 3:
current = self.schemaClause_SchemaAsFunctionClause()
return current
schemaClause.min_depth = 4
@depthcontrol
def schemaClause_SchemaDescriptionClause(self):
current = self.create_node(UnparserRule(name='schemaClause_SchemaDescriptionClause'))
current += self.unlexer.LPAREN()
current += self.tableElementExpr()
if self.unlexer.max_depth >= 7:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.tableElementExpr()
current += self.unlexer.RPAREN()
current += self.engineClause()
return current
schemaClause_SchemaDescriptionClause.min_depth = 7
@depthcontrol
def schemaClause_SchemaAsSubqueryClause(self):
current = self.create_node(UnparserRule(name='schemaClause_SchemaAsSubqueryClause'))
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_one():
current += self.engineClause()
current += self.unlexer.AS()
current += self.selectUnionStmt()
return current
schemaClause_SchemaAsSubqueryClause.min_depth = 6
@depthcontrol
def schemaClause_SchemaAsTableClause(self):
current = self.create_node(UnparserRule(name='schemaClause_SchemaAsTableClause'))
current += self.unlexer.AS()
current += self.tableIdentifier()
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_one():
current += self.engineClause()
return current
schemaClause_SchemaAsTableClause.min_depth = 4
@depthcontrol
def schemaClause_SchemaAsFunctionClause(self):
current = self.create_node(UnparserRule(name='schemaClause_SchemaAsFunctionClause'))
current += self.unlexer.AS()
current += self.identifier()
current += self.unlexer.LPAREN()
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_one():
current += self.tableArgList()
current += self.unlexer.RPAREN()
return current
schemaClause_SchemaAsFunctionClause.min_depth = 3
@depthcontrol
def engineClause(self):
current = self.create_node(UnparserRule(name='engineClause'))
current += self.engineExpr()
if self.unlexer.max_depth >= 6:
for _ in self.zero_or_one():
current += self.orderByClause()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.partitionByClause()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.primaryKeyClause()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.sampleByClause()
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_one():
current += self.ttlClause()
if self.unlexer.max_depth >= 6:
for _ in self.zero_or_one():
current += self.settingsClause()
return current
engineClause.min_depth = 4
@depthcontrol
def partitionByClause(self):
current = self.create_node(UnparserRule(name='partitionByClause'))
current += self.unlexer.PARTITION()
current += self.unlexer.BY()
current += self.columnExpr()
return current
partitionByClause.min_depth = 3
@depthcontrol
def primaryKeyClause(self):
current = self.create_node(UnparserRule(name='primaryKeyClause'))
current += self.unlexer.PRIMARY()
current += self.unlexer.KEY()
current += self.columnExpr()
return current
primaryKeyClause.min_depth = 3
@depthcontrol
def sampleByClause(self):
current = self.create_node(UnparserRule(name='sampleByClause'))
current += self.unlexer.SAMPLE()
current += self.unlexer.BY()
current += self.columnExpr()
return current
sampleByClause.min_depth = 3
@depthcontrol
def ttlClause(self):
current = self.create_node(UnparserRule(name='ttlClause'))
current += self.unlexer.TTL()
current += self.ttlExpr()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.ttlExpr()
return current
ttlClause.min_depth = 4
@depthcontrol
def engineExpr(self):
current = self.create_node(UnparserRule(name='engineExpr'))
current += self.unlexer.ENGINE()
if self.unlexer.max_depth >= 1:
for _ in self.zero_or_one():
current += self.unlexer.EQ_SINGLE()
current += self.identifier()
if self.unlexer.max_depth >= 1:
for _ in self.zero_or_one():
current += self.unlexer.LPAREN()
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_one():
current += self.tableArgList()
current += self.unlexer.RPAREN()
return current
engineExpr.min_depth = 3
@depthcontrol
def tableElementExpr(self):
current = self.create_node(UnparserRule(name='tableElementExpr'))
current = self.tableElementExpr_TableElementColumn()
return current
tableElementExpr.min_depth = 6
@depthcontrol
def tableElementExpr_TableElementColumn(self):
current = self.create_node(UnparserRule(name='tableElementExpr_TableElementColumn'))
current += self.identifier()
current += self.columnTypeExpr()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.tableColumnPropertyExpr()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_one():
current += self.unlexer.TTL()
current += self.columnExpr()
return current
tableElementExpr_TableElementColumn.min_depth = 5
@depthcontrol
def tableColumnPropertyExpr(self):
current = self.create_node(UnparserRule(name='tableColumnPropertyExpr'))
choice = self.choice([0 if [2, 2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_142', i), 1) for i, w in enumerate([1, 1, 1])])
self.unlexer.weights[('alt_142', choice)] = self.unlexer.weights.get(('alt_142', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.DEFAULT()
elif choice == 1:
current += self.unlexer.MATERIALIZED()
elif choice == 2:
current += self.unlexer.ALIAS()
current += self.columnExpr()
return current
tableColumnPropertyExpr.min_depth = 3
@depthcontrol
def ttlExpr(self):
current = self.create_node(UnparserRule(name='ttlExpr'))
current += self.columnExpr()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
choice = self.choice([0 if [2, 2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_147', i), 1) for i, w in enumerate([1, 1, 1])])
self.unlexer.weights[('alt_147', choice)] = self.unlexer.weights.get(('alt_147', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.DELETE()
elif choice == 1:
current += self.unlexer.TO()
current += self.unlexer.DISK()
current += self.unlexer.STRING_LITERAL()
elif choice == 2:
current += self.unlexer.TO()
current += self.unlexer.VOLUME()
current += self.unlexer.STRING_LITERAL()
return current
ttlExpr.min_depth = 3
@depthcontrol
def dropStmt(self):
current = self.create_node(UnparserRule(name='dropStmt'))
choice = self.choice([0 if [5, 5][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_151', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_151', choice)] = self.unlexer.weights.get(('alt_151', choice), 1) * self.unlexer.cooldown
if choice == 0:
current = self.dropStmt_DropDatabaseStmt()
elif choice == 1:
current = self.dropStmt_DropTableStmt()
return current
dropStmt.min_depth = 5
@depthcontrol
def dropStmt_DropDatabaseStmt(self):
current = self.create_node(UnparserRule(name='dropStmt_DropDatabaseStmt'))
current += self.unlexer.DROP()
current += self.unlexer.DATABASE()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.IF()
current += self.unlexer.EXISTS()
current += self.databaseIdentifier()
return current
dropStmt_DropDatabaseStmt.min_depth = 4
@depthcontrol
def dropStmt_DropTableStmt(self):
current = self.create_node(UnparserRule(name='dropStmt_DropTableStmt'))
current += self.unlexer.DROP()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.TEMPORARY()
current += self.unlexer.TABLE()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.IF()
current += self.unlexer.EXISTS()
current += self.tableIdentifier()
return current
dropStmt_DropTableStmt.min_depth = 4
@depthcontrol
def insertStmt(self):
current = self.create_node(UnparserRule(name='insertStmt'))
current += self.unlexer.INSERT()
current += self.unlexer.INTO()
current += self.tableIdentifier()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_one():
current += self.unlexer.LPAREN()
current += self.identifier()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.identifier()
current += self.unlexer.RPAREN()
current += self.valuesClause()
return current
insertStmt.min_depth = 6
@depthcontrol
def valuesClause(self):
current = self.create_node(UnparserRule(name='valuesClause'))
choice = self.choice([0 if [5, 6][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_159', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_159', choice)] = self.unlexer.weights.get(('alt_159', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.VALUES()
current += self.valueTupleExpr()
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.valueTupleExpr()
elif choice == 1:
current += self.selectUnionStmt()
return current
valuesClause.min_depth = 5
@depthcontrol
def valueTupleExpr(self):
current = self.create_node(UnparserRule(name='valueTupleExpr'))
current += self.unlexer.LPAREN()
current += self.valueExprList()
current += self.unlexer.RPAREN()
return current
valueTupleExpr.min_depth = 4
@depthcontrol
def selectUnionStmt(self):
current = self.create_node(UnparserRule(name='selectUnionStmt'))
current += self.selectStmt()
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_more():
current += self.unlexer.UNION()
current += self.unlexer.ALL()
current += self.selectStmt()
return current
selectUnionStmt.min_depth = 5
@depthcontrol
def selectStmt(self):
current = self.create_node(UnparserRule(name='selectStmt'))
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_one():
current += self.withClause()
current += self.unlexer.SELECT()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.DISTINCT()
current += self.columnExprList()
if self.unlexer.max_depth >= 8:
for _ in self.zero_or_one():
current += self.fromClause()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.sampleClause()
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_one():
current += self.arrayJoinClause()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.prewhereClause()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.whereClause()
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_one():
current += self.groupByClause()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.havingClause()
if self.unlexer.max_depth >= 6:
for _ in self.zero_or_one():
current += self.orderByClause()
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_one():
current += self.limitByClause()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.limitClause()
if self.unlexer.max_depth >= 6:
for _ in self.zero_or_one():
current += self.settingsClause()
return current
selectStmt.min_depth = 4
@depthcontrol
def withClause(self):
current = self.create_node(UnparserRule(name='withClause'))
current += self.unlexer.WITH()
current += self.columnExprList()
return current
withClause.min_depth = 4
@depthcontrol
def fromClause(self):
current = self.create_node(UnparserRule(name='fromClause'))
current += self.unlexer.FROM()
current += self.joinExpr()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.FINAL()
return current
fromClause.min_depth = 7
@depthcontrol
def sampleClause(self):
current = self.create_node(UnparserRule(name='sampleClause'))
current += self.unlexer.SAMPLE()
current += self.ratioExpr()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_one():
current += self.unlexer.OFFSET()
current += self.ratioExpr()
return current
sampleClause.min_depth = 3
@depthcontrol
def arrayJoinClause(self):
current = self.create_node(UnparserRule(name='arrayJoinClause'))
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.LEFT()
current += self.unlexer.ARRAY()
current += self.unlexer.JOIN()
current += self.columnExprList()
return current
arrayJoinClause.min_depth = 4
@depthcontrol
def prewhereClause(self):
current = self.create_node(UnparserRule(name='prewhereClause'))
current += self.unlexer.PREWHERE()
current += self.columnExpr()
return current
prewhereClause.min_depth = 3
@depthcontrol
def whereClause(self):
current = self.create_node(UnparserRule(name='whereClause'))
current += self.unlexer.WHERE()
current += self.columnExpr()
return current
whereClause.min_depth = 3
@depthcontrol
def groupByClause(self):
current = self.create_node(UnparserRule(name='groupByClause'))
current += self.unlexer.GROUP()
current += self.unlexer.BY()
current += self.columnExprList()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.WITH()
current += self.unlexer.TOTALS()
return current
groupByClause.min_depth = 4
@depthcontrol
def havingClause(self):
current = self.create_node(UnparserRule(name='havingClause'))
current += self.unlexer.HAVING()
current += self.columnExpr()
return current
havingClause.min_depth = 3
@depthcontrol
def orderByClause(self):
current = self.create_node(UnparserRule(name='orderByClause'))
current += self.unlexer.ORDER()
current += self.unlexer.BY()
current += self.orderExprList()
return current
orderByClause.min_depth = 5
@depthcontrol
def limitByClause(self):
current = self.create_node(UnparserRule(name='limitByClause'))
current += self.unlexer.LIMIT()
current += self.limitExpr()
current += self.unlexer.BY()
current += self.columnExprList()
return current
limitByClause.min_depth = 4
@depthcontrol
def limitClause(self):
current = self.create_node(UnparserRule(name='limitClause'))
current += self.unlexer.LIMIT()
current += self.limitExpr()
return current
limitClause.min_depth = 3
@depthcontrol
def settingsClause(self):
current = self.create_node(UnparserRule(name='settingsClause'))
current += self.unlexer.SETTINGS()
current += self.settingExprList()
return current
settingsClause.min_depth = 5
@depthcontrol
def joinExpr(self):
current = self.create_node(UnparserRule(name='joinExpr'))
choice = self.choice([0 if [6, 8, 8, 8][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_181', i), 1) for i, w in enumerate([1, 1, 1, 1])])
self.unlexer.weights[('alt_181', choice)] = self.unlexer.weights.get(('alt_181', choice), 1) * self.unlexer.cooldown
if choice == 0:
current = self.joinExpr_JoinExprTable()
elif choice == 1:
current = self.joinExpr_JoinExprParens()
elif choice == 2:
current = self.joinExpr_JoinExprOp()
elif choice == 3:
current = self.joinExpr_JoinExprCrossOp()
return current
joinExpr.min_depth = 6
@depthcontrol
def joinExpr_JoinExprTable(self):
current = self.create_node(UnparserRule(name='joinExpr_JoinExprTable'))
current += self.tableExpr()
return current
joinExpr_JoinExprTable.min_depth = 5
@depthcontrol
def joinExpr_JoinExprParens(self):
current = self.create_node(UnparserRule(name='joinExpr_JoinExprParens'))
current += self.unlexer.LPAREN()
current += self.joinExpr()
current += self.unlexer.RPAREN()
return current
joinExpr_JoinExprParens.min_depth = 7
@depthcontrol
def joinExpr_JoinExprOp(self):
current = self.create_node(UnparserRule(name='joinExpr_JoinExprOp'))
current += self.joinExpr()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
choice = self.choice([0 if [2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_187', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_187', choice)] = self.unlexer.weights.get(('alt_187', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.GLOBAL()
elif choice == 1:
current += self.unlexer.LOCAL()
current += self.joinOp()
current += self.unlexer.JOIN()
current += self.joinExpr()
current += self.joinConstraintClause()
return current
joinExpr_JoinExprOp.min_depth = 7
@depthcontrol
def joinExpr_JoinExprCrossOp(self):
current = self.create_node(UnparserRule(name='joinExpr_JoinExprCrossOp'))
current += self.joinExpr()
current += self.joinOpCross()
current += self.joinExpr()
return current
joinExpr_JoinExprCrossOp.min_depth = 7
@depthcontrol
def joinOp(self):
current = self.create_node(UnparserRule(name='joinOp'))
choice = self.choice([0 if [3, 3, 3][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_190', i), 1) for i, w in enumerate([1, 1, 1])])
self.unlexer.weights[('alt_190', choice)] = self.unlexer.weights.get(('alt_190', choice), 1) * self.unlexer.cooldown
if choice == 0:
current = self.joinOp_JoinOpInner()
elif choice == 1:
current = self.joinOp_JoinOpLeftRight()
elif choice == 2:
current = self.joinOp_JoinOpFull()
return current
joinOp.min_depth = 3
@depthcontrol
def joinOp_JoinOpInner(self):
current = self.create_node(UnparserRule(name='joinOp_JoinOpInner'))
choice = self.choice([0 if [2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_194', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_194', choice)] = self.unlexer.weights.get(('alt_194', choice), 1) * self.unlexer.cooldown
if choice == 0:
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.ANY()
current += self.unlexer.INNER()
elif choice == 1:
current += self.unlexer.INNER()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.ANY()
return current
joinOp_JoinOpInner.min_depth = 2
@depthcontrol
def joinOp_JoinOpLeftRight(self):
current = self.create_node(UnparserRule(name='joinOp_JoinOpLeftRight'))
choice = self.choice([0 if [2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_199', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_199', choice)] = self.unlexer.weights.get(('alt_199', choice), 1) * self.unlexer.cooldown
if choice == 0:
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
choice = self.choice([0 if [2, 2, 2, 2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_203', i), 1) for i, w in enumerate([1, 1, 1, 1, 1])])
self.unlexer.weights[('alt_203', choice)] = self.unlexer.weights.get(('alt_203', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.OUTER()
elif choice == 1:
current += self.unlexer.SEMI()
elif choice == 2:
current += self.unlexer.ANTI()
elif choice == 3:
current += self.unlexer.ANY()
elif choice == 4:
current += self.unlexer.ASOF()
choice = self.choice([0 if [2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_209', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_209', choice)] = self.unlexer.weights.get(('alt_209', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.LEFT()
elif choice == 1:
current += self.unlexer.RIGHT()
elif choice == 1:
choice = self.choice([0 if [2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_212', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_212', choice)] = self.unlexer.weights.get(('alt_212', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.LEFT()
elif choice == 1:
current += self.unlexer.RIGHT()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
choice = self.choice([0 if [2, 2, 2, 2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_216', i), 1) for i, w in enumerate([1, 1, 1, 1, 1])])
self.unlexer.weights[('alt_216', choice)] = self.unlexer.weights.get(('alt_216', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.OUTER()
elif choice == 1:
current += self.unlexer.SEMI()
elif choice == 2:
current += self.unlexer.ANTI()
elif choice == 3:
current += self.unlexer.ANY()
elif choice == 4:
current += self.unlexer.ASOF()
return current
joinOp_JoinOpLeftRight.min_depth = 2
@depthcontrol
def joinOp_JoinOpFull(self):
current = self.create_node(UnparserRule(name='joinOp_JoinOpFull'))
choice = self.choice([0 if [2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_222', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_222', choice)] = self.unlexer.weights.get(('alt_222', choice), 1) * self.unlexer.cooldown
if choice == 0:
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
choice = self.choice([0 if [2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_226', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_226', choice)] = self.unlexer.weights.get(('alt_226', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.OUTER()
elif choice == 1:
current += self.unlexer.ANY()
current += self.unlexer.FULL()
elif choice == 1:
current += self.unlexer.FULL()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
choice = self.choice([0 if [2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_230', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_230', choice)] = self.unlexer.weights.get(('alt_230', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.OUTER()
elif choice == 1:
current += self.unlexer.ANY()
return current
joinOp_JoinOpFull.min_depth = 2
@depthcontrol
def joinOpCross(self):
current = self.create_node(UnparserRule(name='joinOpCross'))
choice = self.choice([0 if [2, 1][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_233', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_233', choice)] = self.unlexer.weights.get(('alt_233', choice), 1) * self.unlexer.cooldown
if choice == 0:
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
choice = self.choice([0 if [2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_237', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_237', choice)] = self.unlexer.weights.get(('alt_237', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.GLOBAL()
elif choice == 1:
current += self.unlexer.LOCAL()
current += self.unlexer.CROSS()
current += self.unlexer.JOIN()
elif choice == 1:
current += self.unlexer.COMMA()
return current
joinOpCross.min_depth = 1
@depthcontrol
def joinConstraintClause(self):
current = self.create_node(UnparserRule(name='joinConstraintClause'))
choice = self.choice([0 if [4, 4, 4][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_240', i), 1) for i, w in enumerate([1, 1, 1])])
self.unlexer.weights[('alt_240', choice)] = self.unlexer.weights.get(('alt_240', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.ON()
current += self.columnExprList()
elif choice == 1:
current += self.unlexer.USING()
current += self.unlexer.LPAREN()
current += self.columnExprList()
current += self.unlexer.RPAREN()
elif choice == 2:
current += self.unlexer.USING()
current += self.columnExprList()
return current
joinConstraintClause.min_depth = 4
@depthcontrol
def limitExpr(self):
current = self.create_node(UnparserRule(name='limitExpr'))
current += self.unlexer.INTEGER_LITERAL()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
choice = self.choice([0 if [1, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_245', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_245', choice)] = self.unlexer.weights.get(('alt_245', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.COMMA()
elif choice == 1:
current += self.unlexer.OFFSET()
current += self.unlexer.INTEGER_LITERAL()
return current
limitExpr.min_depth = 2
@depthcontrol
def orderExprList(self):
current = self.create_node(UnparserRule(name='orderExprList'))
current += self.orderExpr()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.orderExpr()
return current
orderExprList.min_depth = 4
@depthcontrol
def orderExpr(self):
current = self.create_node(UnparserRule(name='orderExpr'))
current += self.columnExpr()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
choice = self.choice([0 if [2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_250', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_250', choice)] = self.unlexer.weights.get(('alt_250', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.ASCENDING()
elif choice == 1:
current += self.unlexer.DESCENDING()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.NULLS()
choice = self.choice([0 if [2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_254', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_254', choice)] = self.unlexer.weights.get(('alt_254', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.FIRST()
elif choice == 1:
current += self.unlexer.LAST()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.COLLATE()
current += self.unlexer.STRING_LITERAL()
return current
orderExpr.min_depth = 3
@depthcontrol
def ratioExpr(self):
current = self.create_node(UnparserRule(name='ratioExpr'))
current += self.unlexer.INTEGER_LITERAL()
current += self.unlexer.SLASH()
current += self.unlexer.INTEGER_LITERAL()
return current
ratioExpr.min_depth = 2
@depthcontrol
def settingExprList(self):
current = self.create_node(UnparserRule(name='settingExprList'))
current += self.settingExpr()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.settingExpr()
return current
settingExprList.min_depth = 4
@depthcontrol
def settingExpr(self):
current = self.create_node(UnparserRule(name='settingExpr'))
current += self.identifier()
current += self.unlexer.EQ_SINGLE()
current += self.literal()
return current
settingExpr.min_depth = 3
@depthcontrol
def setStmt(self):
current = self.create_node(UnparserRule(name='setStmt'))
current += self.unlexer.SET()
current += self.settingExprList()
return current
setStmt.min_depth = 5
@depthcontrol
def valueExprList(self):
current = self.create_node(UnparserRule(name='valueExprList'))
current += self.valueExpr()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.valueExpr()
return current
valueExprList.min_depth = 3
@depthcontrol
def valueExpr(self):
current = self.create_node(UnparserRule(name='valueExpr'))
choice = self.choice([0 if [4, 6, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_260', i), 1) for i, w in enumerate([1, 1, 1])])
self.unlexer.weights[('alt_260', choice)] = self.unlexer.weights.get(('alt_260', choice), 1) * self.unlexer.cooldown
if choice == 0:
current = self.valueExpr_ValueExprLiteral()
elif choice == 1:
current = self.valueExpr_ValueExprTuple()
elif choice == 2:
current = self.valueExpr_ValueExprArray()
return current
valueExpr.min_depth = 2
@depthcontrol
def valueExpr_ValueExprLiteral(self):
current = self.create_node(UnparserRule(name='valueExpr_ValueExprLiteral'))
current += self.literal()
return current
valueExpr_ValueExprLiteral.min_depth = 3
@depthcontrol
def valueExpr_ValueExprTuple(self):
current = self.create_node(UnparserRule(name='valueExpr_ValueExprTuple'))
current += self.valueTupleExpr()
return current
valueExpr_ValueExprTuple.min_depth = 5
@depthcontrol
def valueExpr_ValueExprArray(self):
current = self.create_node(UnparserRule(name='valueExpr_ValueExprArray'))
current += self.unlexer.LBRACKET()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.valueExprList()
current += self.unlexer.RBRACKET()
return current
valueExpr_ValueExprArray.min_depth = 1
@depthcontrol
def columnTypeExpr(self):
current = self.create_node(UnparserRule(name='columnTypeExpr'))
choice = self.choice([0 if [4, 5, 4, 6][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_265', i), 1) for i, w in enumerate([1, 1, 1, 1])])
self.unlexer.weights[('alt_265', choice)] = self.unlexer.weights.get(('alt_265', choice), 1) * self.unlexer.cooldown
if choice == 0:
current = self.columnTypeExpr_ColumnTypeExprSimple()
elif choice == 1:
current = self.columnTypeExpr_ColumnTypeExprParam()
elif choice == 2:
current = self.columnTypeExpr_ColumnTypeExprEnum()
elif choice == 3:
current = self.columnTypeExpr_ColumnTypeExprComplex()
return current
columnTypeExpr.min_depth = 4
@depthcontrol
def columnTypeExpr_ColumnTypeExprSimple(self):
current = self.create_node(UnparserRule(name='columnTypeExpr_ColumnTypeExprSimple'))
current += self.identifier()
return current
columnTypeExpr_ColumnTypeExprSimple.min_depth = 3
@depthcontrol
def columnTypeExpr_ColumnTypeExprParam(self):
current = self.create_node(UnparserRule(name='columnTypeExpr_ColumnTypeExprParam'))
current += self.identifier()
current += self.unlexer.LPAREN()
current += self.columnParamList()
current += self.unlexer.RPAREN()
return current
columnTypeExpr_ColumnTypeExprParam.min_depth = 4
@depthcontrol
def columnTypeExpr_ColumnTypeExprEnum(self):
current = self.create_node(UnparserRule(name='columnTypeExpr_ColumnTypeExprEnum'))
current += self.identifier()
current += self.unlexer.LPAREN()
current += self.enumValue()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.enumValue()
current += self.unlexer.RPAREN()
return current
columnTypeExpr_ColumnTypeExprEnum.min_depth = 3
@depthcontrol
def columnTypeExpr_ColumnTypeExprComplex(self):
current = self.create_node(UnparserRule(name='columnTypeExpr_ColumnTypeExprComplex'))
current += self.identifier()
current += self.unlexer.LPAREN()
current += self.columnTypeExpr()
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.columnTypeExpr()
current += self.unlexer.RPAREN()
return current
columnTypeExpr_ColumnTypeExprComplex.min_depth = 5
@depthcontrol
def columnExprList(self):
current = self.create_node(UnparserRule(name='columnExprList'))
current += self.columnExpr()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.columnExpr()
return current
columnExprList.min_depth = 3
@depthcontrol
def columnExpr(self):
current = self.create_node(UnparserRule(name='columnExpr'))
choice = self.choice([0 if [4, 2, 5, 2, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_273', i), 1) for i, w in enumerate([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])])
self.unlexer.weights[('alt_273', choice)] = self.unlexer.weights.get(('alt_273', choice), 1) * self.unlexer.cooldown
if choice == 0:
current = self.columnExpr_ColumnExprLiteral()
elif choice == 1:
current = self.columnExpr_ColumnExprAsterisk()
elif choice == 2:
current = self.columnExpr_ColumnExprTuple()
elif choice == 3:
current = self.columnExpr_ColumnExprArray()
elif choice == 4:
current = self.columnExpr_ColumnExprCase()
elif choice == 5:
current = self.columnExpr_ColumnExprExtract()
elif choice == 6:
current = self.columnExpr_ColumnExprTrim()
elif choice == 7:
current = self.columnExpr_ColumnExprInterval()
elif choice == 8:
current = self.columnExpr_ColumnExprIdentifier()
elif choice == 9:
current = self.columnExpr_ColumnExprFunction()
elif choice == 10:
current = self.columnExpr_ColumnExprArrayAccess()
elif choice == 11:
current = self.columnExpr_ColumnExprTupleAccess()
elif choice == 12:
current = self.columnExpr_ColumnExprUnaryOp()
elif choice == 13:
current = self.columnExpr_ColumnExprIsNull()
elif choice == 14:
current = self.columnExpr_ColumnExprBinaryOp()
elif choice == 15:
current = self.columnExpr_ColumnExprTernaryOp()
elif choice == 16:
current = self.columnExpr_ColumnExprBetween()
elif choice == 17:
current = self.columnExpr_ColumnExprAlias()
return current
columnExpr.min_depth = 2
@depthcontrol
def columnExpr_ColumnExprLiteral(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprLiteral'))
current += self.literal()
return current
columnExpr_ColumnExprLiteral.min_depth = 3
@depthcontrol
def columnExpr_ColumnExprAsterisk(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprAsterisk'))
current += self.unlexer.ASTERISK()
return current
columnExpr_ColumnExprAsterisk.min_depth = 1
@depthcontrol
def columnExpr_ColumnExprTuple(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprTuple'))
current += self.unlexer.LPAREN()
current += self.columnExprList()
current += self.unlexer.RPAREN()
return current
columnExpr_ColumnExprTuple.min_depth = 4
@depthcontrol
def columnExpr_ColumnExprArray(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprArray'))
current += self.unlexer.LBRACKET()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.columnExprList()
current += self.unlexer.RBRACKET()
return current
columnExpr_ColumnExprArray.min_depth = 1
@depthcontrol
def columnExpr_ColumnExprCase(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprCase'))
current += self.unlexer.CASE()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_one():
current += self.columnExpr()
if self.unlexer.max_depth >= 0:
for _ in self.one_or_more():
current += self.unlexer.WHEN()
current += self.columnExpr()
current += self.unlexer.THEN()
current += self.columnExpr()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_one():
current += self.unlexer.ELSE()
current += self.columnExpr()
current += self.unlexer.END()
return current
columnExpr_ColumnExprCase.min_depth = 3
@depthcontrol
def columnExpr_ColumnExprExtract(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprExtract'))
current += self.unlexer.EXTRACT()
current += self.unlexer.LPAREN()
current += self.unlexer.INTERVAL_TYPE()
current += self.unlexer.FROM()
current += self.columnExpr()
current += self.unlexer.RPAREN()
return current
columnExpr_ColumnExprExtract.min_depth = 3
@depthcontrol
def columnExpr_ColumnExprTrim(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprTrim'))
current += self.unlexer.TRIM()
current += self.unlexer.LPAREN()
choice = self.choice([0 if [2, 2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_295', i), 1) for i, w in enumerate([1, 1, 1])])
self.unlexer.weights[('alt_295', choice)] = self.unlexer.weights.get(('alt_295', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.BOTH()
elif choice == 1:
current += self.unlexer.LEADING()
elif choice == 2:
current += self.unlexer.TRAILING()
current += self.unlexer.STRING_LITERAL()
current += self.unlexer.FROM()
current += self.columnExpr()
current += self.unlexer.RPAREN()
return current
columnExpr_ColumnExprTrim.min_depth = 3
@depthcontrol
def columnExpr_ColumnExprInterval(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprInterval'))
current += self.unlexer.INTERVAL()
current += self.columnExpr()
current += self.unlexer.INTERVAL_TYPE()
return current
columnExpr_ColumnExprInterval.min_depth = 3
@depthcontrol
def columnExpr_ColumnExprIdentifier(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprIdentifier'))
current += self.columnIdentifier()
return current
columnExpr_ColumnExprIdentifier.min_depth = 4
@depthcontrol
def columnExpr_ColumnExprFunction(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprFunction'))
current += self.identifier()
if self.unlexer.max_depth >= 1:
for _ in self.zero_or_one():
current += self.unlexer.LPAREN()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.columnParamList()
current += self.unlexer.RPAREN()
current += self.unlexer.LPAREN()
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_one():
current += self.columnArgList()
current += self.unlexer.RPAREN()
return current
columnExpr_ColumnExprFunction.min_depth = 3
@depthcontrol
def columnExpr_ColumnExprArrayAccess(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprArrayAccess'))
current += self.columnExpr()
current += self.unlexer.LBRACKET()
current += self.columnExpr()
current += self.unlexer.RBRACKET()
return current
columnExpr_ColumnExprArrayAccess.min_depth = 3
@depthcontrol
def columnExpr_ColumnExprTupleAccess(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprTupleAccess'))
current += self.columnExpr()
current += self.unlexer.DOT()
current += self.unlexer.INTEGER_LITERAL()
return current
columnExpr_ColumnExprTupleAccess.min_depth = 3
@depthcontrol
def columnExpr_ColumnExprUnaryOp(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprUnaryOp'))
current += self.unaryOp()
current += self.columnExpr()
return current
columnExpr_ColumnExprUnaryOp.min_depth = 3
@depthcontrol
def columnExpr_ColumnExprIsNull(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprIsNull'))
current += self.columnExpr()
current += self.unlexer.IS()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.NOT()
current += self.unlexer.NULL_SQL()
return current
columnExpr_ColumnExprIsNull.min_depth = 3
@depthcontrol
def columnExpr_ColumnExprBinaryOp(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprBinaryOp'))
current += self.columnExpr()
current += self.binaryOp()
current += self.columnExpr()
return current
columnExpr_ColumnExprBinaryOp.min_depth = 3
@depthcontrol
def columnExpr_ColumnExprTernaryOp(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprTernaryOp'))
current += self.columnExpr()
current += self.unlexer.QUERY()
current += self.columnExpr()
current += self.unlexer.COLON()
current += self.columnExpr()
return current
columnExpr_ColumnExprTernaryOp.min_depth = 3
@depthcontrol
def columnExpr_ColumnExprBetween(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprBetween'))
current += self.columnExpr()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.NOT()
current += self.unlexer.BETWEEN()
current += self.columnExpr()
current += self.unlexer.AND()
current += self.columnExpr()
return current
columnExpr_ColumnExprBetween.min_depth = 3
@depthcontrol
def columnExpr_ColumnExprAlias(self):
current = self.create_node(UnparserRule(name='columnExpr_ColumnExprAlias'))
current += self.columnExpr()
current += self.unlexer.AS()
current += self.identifier()
return current
columnExpr_ColumnExprAlias.min_depth = 3
@depthcontrol
def columnParamList(self):
current = self.create_node(UnparserRule(name='columnParamList'))
current += self.literal()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.literal()
return current
columnParamList.min_depth = 3
@depthcontrol
def columnArgList(self):
current = self.create_node(UnparserRule(name='columnArgList'))
current += self.columnArgExpr()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.columnArgExpr()
return current
columnArgList.min_depth = 4
@depthcontrol
def columnArgExpr(self):
current = self.create_node(UnparserRule(name='columnArgExpr'))
choice = self.choice([0 if [4, 3][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_306', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_306', choice)] = self.unlexer.weights.get(('alt_306', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.columnLambdaExpr()
elif choice == 1:
current += self.columnExpr()
return current
columnArgExpr.min_depth = 3
@depthcontrol
def columnLambdaExpr(self):
current = self.create_node(UnparserRule(name='columnLambdaExpr'))
choice = self.choice([0 if [3, 3][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_309', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_309', choice)] = self.unlexer.weights.get(('alt_309', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.LPAREN()
current += self.identifier()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.identifier()
current += self.unlexer.RPAREN()
elif choice == 1:
current += self.identifier()
if self.unlexer.max_depth >= 3:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.identifier()
current += self.unlexer.ARROW()
current += self.columnExpr()
return current
columnLambdaExpr.min_depth = 3
@depthcontrol
def columnIdentifier(self):
current = self.create_node(UnparserRule(name='columnIdentifier'))
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.tableIdentifier()
current += self.unlexer.DOT()
current += self.identifier()
return current
columnIdentifier.min_depth = 3
@depthcontrol
def tableExpr(self):
current = self.create_node(UnparserRule(name='tableExpr'))
choice = self.choice([0 if [5, 4, 7, 6][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_315', i), 1) for i, w in enumerate([1, 1, 1, 1])])
self.unlexer.weights[('alt_315', choice)] = self.unlexer.weights.get(('alt_315', choice), 1) * self.unlexer.cooldown
if choice == 0:
current = self.tableExpr_TableExprIdentifier()
elif choice == 1:
current = self.tableExpr_TableExprFunction()
elif choice == 2:
current = self.tableExpr_TableExprSubquery()
elif choice == 3:
current = self.tableExpr_TableExprAlias()
return current
tableExpr.min_depth = 4
@depthcontrol
def tableExpr_TableExprIdentifier(self):
current = self.create_node(UnparserRule(name='tableExpr_TableExprIdentifier'))
current += self.tableIdentifier()
return current
tableExpr_TableExprIdentifier.min_depth = 4
@depthcontrol
def tableExpr_TableExprFunction(self):
current = self.create_node(UnparserRule(name='tableExpr_TableExprFunction'))
current += self.identifier()
current += self.unlexer.LPAREN()
if self.unlexer.max_depth >= 5:
for _ in self.zero_or_one():
current += self.tableArgList()
current += self.unlexer.RPAREN()
return current
tableExpr_TableExprFunction.min_depth = 3
@depthcontrol
def tableExpr_TableExprSubquery(self):
current = self.create_node(UnparserRule(name='tableExpr_TableExprSubquery'))
current += self.unlexer.LPAREN()
current += self.selectUnionStmt()
current += self.unlexer.RPAREN()
return current
tableExpr_TableExprSubquery.min_depth = 6
@depthcontrol
def tableExpr_TableExprAlias(self):
current = self.create_node(UnparserRule(name='tableExpr_TableExprAlias'))
current += self.tableExpr()
current += self.unlexer.AS()
current += self.identifier()
return current
tableExpr_TableExprAlias.min_depth = 5
@depthcontrol
def tableIdentifier(self):
current = self.create_node(UnparserRule(name='tableIdentifier'))
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_one():
current += self.databaseIdentifier()
current += self.unlexer.DOT()
current += self.identifier()
return current
tableIdentifier.min_depth = 3
@depthcontrol
def tableArgList(self):
current = self.create_node(UnparserRule(name='tableArgList'))
current += self.tableArgExpr()
if self.unlexer.max_depth >= 4:
for _ in self.zero_or_more():
current += self.unlexer.COMMA()
current += self.tableArgExpr()
return current
tableArgList.min_depth = 4
@depthcontrol
def tableArgExpr(self):
current = self.create_node(UnparserRule(name='tableArgExpr'))
choice = self.choice([0 if [3, 4][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_323', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_323', choice)] = self.unlexer.weights.get(('alt_323', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.literal()
elif choice == 1:
current += self.tableIdentifier()
return current
tableArgExpr.min_depth = 3
@depthcontrol
def databaseIdentifier(self):
current = self.create_node(UnparserRule(name='databaseIdentifier'))
current += self.identifier()
return current
databaseIdentifier.min_depth = 3
@depthcontrol
def literal(self):
current = self.create_node(UnparserRule(name='literal'))
choice = self.choice([0 if [2, 2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_326', i), 1) for i, w in enumerate([1, 1, 1])])
self.unlexer.weights[('alt_326', choice)] = self.unlexer.weights.get(('alt_326', choice), 1) * self.unlexer.cooldown
if choice == 0:
if self.unlexer.max_depth >= 1:
for _ in self.zero_or_one():
choice = self.choice([0 if [1, 1][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_331', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_331', choice)] = self.unlexer.weights.get(('alt_331', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.PLUS()
elif choice == 1:
current += self.unlexer.DASH()
choice = self.choice([0 if [3, 2, 2, 2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_334', i), 1) for i, w in enumerate([1, 1, 1, 1, 1])])
self.unlexer.weights[('alt_334', choice)] = self.unlexer.weights.get(('alt_334', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.FLOATING_LITERAL()
elif choice == 1:
current += self.unlexer.HEXADECIMAL_LITERAL()
elif choice == 2:
current += self.unlexer.INTEGER_LITERAL()
elif choice == 3:
current += self.unlexer.INF()
elif choice == 4:
current += self.unlexer.NAN_SQL()
elif choice == 1:
current += self.unlexer.STRING_LITERAL()
elif choice == 2:
current += self.unlexer.NULL_SQL()
return current
literal.min_depth = 2
@depthcontrol
def keyword(self):
current = self.create_node(UnparserRule(name='keyword'))
choice = self.choice([0 if [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_340', i), 1) for i, w in enumerate([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])])
self.unlexer.weights[('alt_340', choice)] = self.unlexer.weights.get(('alt_340', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.ALIAS()
elif choice == 1:
current += self.unlexer.ALL()
elif choice == 2:
current += self.unlexer.AND()
elif choice == 3:
current += self.unlexer.ANTI()
elif choice == 4:
current += self.unlexer.ANY()
elif choice == 5:
current += self.unlexer.ARRAY()
elif choice == 6:
current += self.unlexer.AS()
elif choice == 7:
current += self.unlexer.ASCENDING()
elif choice == 8:
current += self.unlexer.ASOF()
elif choice == 9:
current += self.unlexer.BETWEEN()
elif choice == 10:
current += self.unlexer.BOTH()
elif choice == 11:
current += self.unlexer.BY()
elif choice == 12:
current += self.unlexer.CASE()
elif choice == 13:
current += self.unlexer.CAST()
elif choice == 14:
current += self.unlexer.CLUSTER()
elif choice == 15:
current += self.unlexer.COLLATE()
elif choice == 16:
current += self.unlexer.CREATE()
elif choice == 17:
current += self.unlexer.CROSS()
elif choice == 18:
current += self.unlexer.DAY()
elif choice == 19:
current += self.unlexer.DATABASE()
elif choice == 20:
current += self.unlexer.DEFAULT()
elif choice == 21:
current += self.unlexer.DELETE()
elif choice == 22:
current += self.unlexer.DESCENDING()
elif choice == 23:
current += self.unlexer.DISK()
elif choice == 24:
current += self.unlexer.DISTINCT()
elif choice == 25:
current += self.unlexer.DROP()
elif choice == 26:
current += self.unlexer.ELSE()
elif choice == 27:
current += self.unlexer.END()
elif choice == 28:
current += self.unlexer.ENGINE()
elif choice == 29:
current += self.unlexer.EXISTS()
elif choice == 30:
current += self.unlexer.EXTRACT()
elif choice == 31:
current += self.unlexer.FINAL()
elif choice == 32:
current += self.unlexer.FIRST()
elif choice == 33:
current += self.unlexer.FORMAT()
elif choice == 34:
current += self.unlexer.FROM()
elif choice == 35:
current += self.unlexer.FULL()
elif choice == 36:
current += self.unlexer.GLOBAL()
elif choice == 37:
current += self.unlexer.GROUP()
elif choice == 38:
current += self.unlexer.HAVING()
elif choice == 39:
current += self.unlexer.HOUR()
elif choice == 40:
current += self.unlexer.IF()
elif choice == 41:
current += self.unlexer.IN()
elif choice == 42:
current += self.unlexer.INNER()
elif choice == 43:
current += self.unlexer.INSERT()
elif choice == 44:
current += self.unlexer.INTERVAL()
elif choice == 45:
current += self.unlexer.INTO()
elif choice == 46:
current += self.unlexer.IS()
elif choice == 47:
current += self.unlexer.JOIN()
elif choice == 48:
current += self.unlexer.KEY()
elif choice == 49:
current += self.unlexer.LAST()
elif choice == 50:
current += self.unlexer.LEADING()
elif choice == 51:
current += self.unlexer.LEFT()
elif choice == 52:
current += self.unlexer.LIKE()
elif choice == 53:
current += self.unlexer.LIMIT()
elif choice == 54:
current += self.unlexer.LOCAL()
elif choice == 55:
current += self.unlexer.MATERIALIZED()
elif choice == 56:
current += self.unlexer.MINUTE()
elif choice == 57:
current += self.unlexer.MONTH()
elif choice == 58:
current += self.unlexer.NOT()
elif choice == 59:
current += self.unlexer.NULLS()
elif choice == 60:
current += self.unlexer.OFFSET()
elif choice == 61:
current += self.unlexer.ON()
elif choice == 62:
current += self.unlexer.OR()
elif choice == 63:
current += self.unlexer.ORDER()
elif choice == 64:
current += self.unlexer.OUTER()
elif choice == 65:
current += self.unlexer.OUTFILE()
elif choice == 66:
current += self.unlexer.PARTITION()
elif choice == 67:
current += self.unlexer.PREWHERE()
elif choice == 68:
current += self.unlexer.PRIMARY()
elif choice == 69:
current += self.unlexer.QUARTER()
elif choice == 70:
current += self.unlexer.RIGHT()
elif choice == 71:
current += self.unlexer.SAMPLE()
elif choice == 72:
current += self.unlexer.SECOND()
elif choice == 73:
current += self.unlexer.SEMI()
elif choice == 74:
current += self.unlexer.SET()
elif choice == 75:
current += self.unlexer.SETTINGS()
elif choice == 76:
current += self.unlexer.TABLE()
elif choice == 77:
current += self.unlexer.TEMPORARY()
elif choice == 78:
current += self.unlexer.THEN()
elif choice == 79:
current += self.unlexer.TOTALS()
elif choice == 80:
current += self.unlexer.TRAILING()
elif choice == 81:
current += self.unlexer.TRIM()
elif choice == 82:
current += self.unlexer.TO()
elif choice == 83:
current += self.unlexer.TTL()
elif choice == 84:
current += self.unlexer.UNION()
elif choice == 85:
current += self.unlexer.USING()
elif choice == 86:
current += self.unlexer.VALUES()
elif choice == 87:
current += self.unlexer.VOLUME()
elif choice == 88:
current += self.unlexer.WEEK()
elif choice == 89:
current += self.unlexer.WHEN()
elif choice == 90:
current += self.unlexer.WHERE()
elif choice == 91:
current += self.unlexer.WITH()
elif choice == 92:
current += self.unlexer.YEAR()
return current
keyword.min_depth = 2
@depthcontrol
def identifier(self):
current = self.create_node(UnparserRule(name='identifier'))
choice = self.choice([0 if [2, 3, 3][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_434', i), 1) for i, w in enumerate([1, 1, 1])])
self.unlexer.weights[('alt_434', choice)] = self.unlexer.weights.get(('alt_434', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.IDENTIFIER()
elif choice == 1:
current += self.unlexer.INTERVAL_TYPE()
elif choice == 2:
current += self.keyword()
return current
identifier.min_depth = 2
@depthcontrol
def unaryOp(self):
current = self.create_node(UnparserRule(name='unaryOp'))
choice = self.choice([0 if [1, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_438', i), 1) for i, w in enumerate([1, 1])])
self.unlexer.weights[('alt_438', choice)] = self.unlexer.weights.get(('alt_438', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.DASH()
elif choice == 1:
current += self.unlexer.NOT()
return current
unaryOp.min_depth = 1
@depthcontrol
def binaryOp(self):
current = self.create_node(UnparserRule(name='binaryOp'))
choice = self.choice([0 if [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2][i] > self.unlexer.max_depth else w * self.unlexer.weights.get(('alt_441', i), 1) for i, w in enumerate([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])])
self.unlexer.weights[('alt_441', choice)] = self.unlexer.weights.get(('alt_441', choice), 1) * self.unlexer.cooldown
if choice == 0:
current += self.unlexer.CONCAT()
elif choice == 1:
current += self.unlexer.ASTERISK()
elif choice == 2:
current += self.unlexer.SLASH()
elif choice == 3:
current += self.unlexer.PLUS()
elif choice == 4:
current += self.unlexer.DASH()
elif choice == 5:
current += self.unlexer.PERCENT()
elif choice == 6:
current += self.unlexer.EQ_DOUBLE()
elif choice == 7:
current += self.unlexer.EQ_SINGLE()
elif choice == 8:
current += self.unlexer.NOT_EQ()
elif choice == 9:
current += self.unlexer.LE()
elif choice == 10:
current += self.unlexer.GE()
elif choice == 11:
current += self.unlexer.LT()
elif choice == 12:
current += self.unlexer.GT()
elif choice == 13:
current += self.unlexer.AND()
elif choice == 14:
current += self.unlexer.OR()
elif choice == 15:
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.NOT()
current += self.unlexer.LIKE()
elif choice == 16:
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.GLOBAL()
if self.unlexer.max_depth >= 2:
for _ in self.zero_or_one():
current += self.unlexer.NOT()
current += self.unlexer.IN()
return current
binaryOp.min_depth = 1
@depthcontrol
def enumValue(self):
current = self.create_node(UnparserRule(name='enumValue'))
current += self.unlexer.STRING_LITERAL()
current += self.unlexer.EQ_SINGLE()
current += self.unlexer.INTEGER_LITERAL()
return current
enumValue.min_depth = 2
default_rule = queryList