def p_sql_relational_operator_expression(p): '''SQLRELATIONALOPERATOREXPRESSION : RELOP SQLSIMPLEEXPRESSION''' nodo = Node('SQLRELATIONALOPERATOREXPRESSION') nodo.add_childrens(p[1]) nodo.add_childrens(p[2]) p[0] = nodo
def p_sql_and_expression(p): '''SQLANDEXPRESSION : SQLUNARYLOGICALEXPRESSIONLIST''' nodo = Node('SQLANDEXPRESSION') nodo.add_childrens(p[1]) p[0] = nodo
def p_update_statement(p): '''UPDATESTATEMENT : UPDATE ID OPTIONS1 SET SETLIST OPTIONSLIST2 SEMICOLON | UPDATE ID SET SETLIST OPTIONSLIST2 SEMICOLON | UPDATE ID SET SETLIST SEMICOLON ''' nodo = Node('UPDATESTATEMENT') if (len(p) == 8): nodo.add_childrens(Node(p[1])) nodo.add_childrens(Node(p[2])) nodo.add_childrens(p[3]) nodo.add_childrens(Node(p[4])) nodo.add_childrens(p[5]) nodo.add_childrens(p[6]) nodo.add_childrens(Node(p[7])) elif (len(p) == 7): nodo.add_childrens(Node(p[1])) nodo.add_childrens(Node(p[2])) nodo.add_childrens(Node(p[3])) nodo.add_childrens(p[4]) nodo.add_childrens(p[5]) nodo.add_childrens(Node(p[6])) else: nodo.add_childrens(Node(p[1])) nodo.add_childrens(Node(p[2])) nodo.add_childrens(Node(p[3])) nodo.add_childrens(p[4]) nodo.add_childrens(Node(p[5])) p[0] = nodo
def p_where_clause(p): '''WHERECLAUSE : WHERE SQLEXPRESSION''' nodo = Node('WHERECLAUSE') nodo.add_childrens(Node(p[1])) nodo.add_childrens(p[2]) p[0] = nodo
def p_having_clause(p): '''HAVINGCLAUSE : HAVING SQLEXPRESSION''' nodo = Node('HAVINGCLAUSE') nodo.add_childrens(Node(p[1])) nodo.add_childrens(p[2]) p[0] = nodo
def p_from_clause(p): '''FROMCLAUSE : FROM FROMCLAUSELIST''' nodo = Node('FROMCLAUSE') nodo.add_childrens(Node(p[1])) nodo.add_childrens(p[2]) p[0] = nodo
def p_from_clause_list(p): '''FROMCLAUSELIST : FROMCLAUSELIST COMMA TABLEREFERENCE | FROMCLAUSELIST LEFT_PARENTHESIS SUBQUERY RIGHT_PARENTHESIS | LEFT_PARENTHESIS SUBQUERY RIGHT_PARENTHESIS | TABLEREFERENCE''' nodo = Node('FROMCLAUSELIST') if (len(p) == 4): nodo.add_childrens(p[1]) nodo.add_childrens(Node(p[2])) nodo.add_childrens(p[3]) elif (p[1] == '('): nodo.add_childrens(Node(p[1])) nodo.add_childrens(p[2]) nodo.add_childrens(Node(p[3])) elif (len(p) == 5): nodo.add_childrens(p[1]) nodo.add_childrens(Node(p[2])) nodo.add_childrens(p[3]) nodo.add_childrens(Node(p[4])) elif (len(p) == 2): nodo.add_childrens(p[1]) p[0] = nodo
def p_select_without_order(p): '''SELECTWITHOUTORDER : SELECTSET | SELECTWITHOUTORDER UNION ALL SELECTSET | SELECTWITHOUTORDER UNION SELECTSET''' nodo = Node('SELECTWITHOUTORDER') if (len(p) == 2): nodo.add_childrens(p[1]) p[0] = nodo elif (len(p) == 5): nodo.add_childrens(p[1]) nodo.add_childrens(Node(p[2])) nodo.add_childrens(Node(p[3])) nodo.add_childrens(p[4]) p[0] = nodo else: nodo.add_childrens(p[1]) nodo.add_childrens(Node(p[2])) nodo.add_childrens(p[3]) p[0] = nodo
def p_selectq(p): '''SELECTQ : SELECT SELECTLIST FROMCLAUSE | SELECT SELECTLIST FROMCLAUSE SELECTWHEREAGGREGATE | SELECT TYPESELECT SELECTLIST FROMCLAUSE | SELECT TYPESELECT SELECTLIST FROMCLAUSE SELECTWHEREAGGREGATE | SELECT EXPRESSIONSTIME''' nodo = Node('SELECTQ') if (len(p) == 4): nodo.add_childrens(Node(p[1])) nodo.add_childrens(p[2]) nodo.add_childrens(p[3]) elif (len(p) == 5): nodo.add_childrens(Node(p[1])) nodo.add_childrens(p[2]) nodo.add_childrens(p[3]) nodo.add_childrens(p[4]) elif (len(p) == 6): nodo.add_childrens(Node(p[1])) nodo.add_childrens(p[2]) nodo.add_childrens(p[3]) nodo.add_childrens(p[4]) nodo.add_childrens(p[5]) elif (len(p) == 3): nodo.add_childrens(Node(p[1])) nodo.add_childrens(p[2]) p[0] = nodo
def p_options4(p): '''OPTIONS4 : RETURNING RETURNINGLIST''' nodo = Node('OPTIONS4') nodo.add_childrens(Node(p[1])) nodo.add_childrens(p[2]) p[0] = nodo
def p_insert_statement(p): '''INSERTSTATEMENT : INSERT INTO SQLNAME LEFT_PARENTHESIS LISTPARAMSINSERT RIGHT_PARENTHESIS VALUES LEFT_PARENTHESIS LISTVALUESINSERT RIGHT_PARENTHESIS SEMICOLON ''' nodo = Node('INSERTSTATEMENT') nodo.add_childrens(Node(p[1])) nodo.add_childrens(Node(p[2])) nodo.add_childrens(p[3]) nodo.add_childrens(Node(p[4])) nodo.add_childrens(p[5]) nodo.add_childrens(Node(p[6])) nodo.add_childrens(Node(p[7])) nodo.add_childrens(Node(p[8])) nodo.add_childrens(p[9]) nodo.add_childrens(Node(p[10])) nodo.add_childrens(Node(p[11])) p[0] = nodo
def p_options3(p): '''OPTIONS3 : WHERE SQLEXPRESSION''' nodo = Node('OPTIONS3') nodo.add_childrens(Node(p[1])) nodo.add_childrens(p[2]) p[0] = nodo
def p_options2(p): '''OPTIONS2 : USING USINGLIST''' nodo = Node('OPTIONS2') nodo.add_childrens(Node(p[1])) nodo.add_childrens(p[2]) p[0] = nodo
def p_options_list(p): '''OPTIONSLIST : OPTIONS1 OPTIONS2 OPTIONS3 OPTIONS4 | OPTIONS1 OPTIONS2 OPTIONS3 | OPTIONS1 OPTIONS2 | OPTIONS1 OPTIONS3 OPTIONS4 | OPTIONS1 OPTIONS2 OPTIONS4 | OPTIONS2 OPTIONS3 OPTIONS4 | OPTIONS1 OPTIONS3 | OPTIONS1 OPTIONS4 | OPTIONS2 OPTIONS3 | OPTIONS2 OPTIONS4 | OPTIONS3 OPTIONS4 | OPTIONS1 | OPTIONS2 | OPTIONS3 | OPTIONS4''' nodo = Node('OPTIONSLIST') if (len(p) == 5): nodo.add_childrens(p[1]) nodo.add_childrens(p[2]) nodo.add_childrens(p[3]) nodo.add_childrens(p[4]) elif (len(p) == 4): nodo.add_childrens(p[1]) nodo.add_childrens(p[2]) nodo.add_childrens(p[3]) elif (len(p) == 3): nodo.add_childrens(p[1]) nodo.add_childrens(p[2]) else: nodo.add_childrens(p[1]) p[0] = nodo
def p_delete_statement(p): '''DELETESTATEMENT : DELETE FROM ID OPTIONSLIST SEMICOLON | DELETE FROM ID SEMICOLON ''' nodo = Node('DELETESTATEMENT') if (len(p) == 6): nodo.add_childrens(Node(p[1])) nodo.add_childrens(Node(p[2])) nodo.add_childrens(Node(p[3])) nodo.add_childrens(p[4]) nodo.add_childrens(Node(p[5])) else: nodo.add_childrens(Node(p[1])) nodo.add_childrens(Node(p[2])) nodo.add_childrens(Node(p[3])) nodo.add_childrens(Node(p[4])) p[0] = nodo
def p_sql_expression2(p): '''SQLEXPRESSION2 : SQLEXPRESSION2 PLUS SQLEXPRESSION2 | SQLEXPRESSION2 REST SQLEXPRESSION2 | SQLEXPRESSION2 DIVISION SQLEXPRESSION2 | SQLEXPRESSION2 ASTERISK SQLEXPRESSION2 | SQLEXPRESSION2 MOD SQLEXPRESSION2 | SQLEXPRESSION2 EXPONENT SQLEXPRESSION2 | REST SQLEXPRESSION2 %prec UREST | PLUS SQLEXPRESSION2 %prec UPLUS | LEFT_PARENTHESIS SQLEXPRESSION2 RIGHT_PARENTHESIS | SQLNAME | SQLINTEGER''' nodo = Node('SQLEXPRESSION2') if (len(p) == 4): if (p[1] == "(" and p[3] == ")"): nodo.add_childrens(Node(p[1])) nodo.add_childrens(p[2]) nodo.add_childrens(Node(p[3])) else: nodo.add_childrens(p[1]) nodo.add_childrens(Node(p[2])) nodo.add_childrens(p[3]) elif (len(p) == 3): nodo.add_childrens(Node(p[1])) nodo.add_childrens(p[2]) else: nodo.add_childrens(p[1]) p[0] = nodo