Exemple #1
0
def p_sql_name(p):
    '''SQLNAME : STRINGCONT
               | CHARCONT
               | ID'''
    nodo = Node('SQLNAME')
    nodo.add_childrens(Node(p[1]))
    p[0] = nodo
Exemple #2
0
def p_type_combine_query(p):
    '''TYPECOMBINEQUERY : UNION
                        | INTERSECT
                        | EXCEPT'''
    nodo = Node('TYPECOMBINEQUERY')
    nodo.add_childrens(Node(p[1]))
    p[0] = nodo
Exemple #3
0
def p_type_select(p):
    '''TYPESELECT : ALL
                  | DISTINCT
                  | UNIQUE'''

    nodo = Node('TYPESELECT')
    nodo.add_childrens(Node(p[1]))
    p[0] = nodo
def p_dml(p):
    '''DML : QUERYSTATEMENT
           | INSERTSTATEMENT
           | DELETESTATEMENT
           | UPDATESTATEMENT'''
    nodo = Node('DML')
    nodo.add_childrens(p[1])
    p[0] = nodo
def p_select_set(p):
    '''SELECTSET : SELECTQ 
                 | LEFT_PARENTHESIS SUBQUERY RIGHT_PARENTHESIS'''
    nodo = Node('SELECTSET')

    if (len(p) == 2):
        nodo.add_childrens(p[1])
        p[0] = nodo
Exemple #6
0
def p_aggregate_types(p):
    '''AGGREGATETYPES : AVG
                      | SUM
                      | COUNT
                      | MAX
                      | MIN'''
    nodo = Node('AGGREGATETYPES')
    nodo.add_childrens(Node(p[1]))
    p[0] = nodo
Exemple #7
0
def p_date_types(p):
    '''DATETYPES : YEAR
                 | MONTH
                 | DAY
                 | HOUR
                 | MINUTE
                 | SECOND'''
    nodo = Node('DATETYPES')
    nodo.add_childrens(Node(p[1]))
    p[0] = nodo
Exemple #8
0
def p_column_values(p):
    '''COLUMNVALUES : OBJECTREFERENCE EQUALS SQLEXPRESSION2'''
    nodo = Node('COLUMNVALUES')
    nodo.add_childrens(p[1])
    nodo.add_childrens(Node(p[2]))
    nodo.add_childrens(p[3])
    p[0] = nodo
Exemple #9
0
def p_dml(p):
    '''DML : QUERYSTATEMENT
           | INSERTSTATEMENT
           | DELETESTATEMENT
           | UPDATESTATEMENT'''
    if (len(p) == 2):
        nodo = Node('DML')
        nodo.add_childrens(p[1])
        p[0] = nodo
    else:
        p[0] = 'error'
Exemple #10
0
def p_relop(p):
    '''RELOP : EQUALS 
             | NOT_EQUAL
             | GREATE_EQUAL
             | GREATE_THAN
             | LESS_THAN
             | LESS_EQUAL
             | NOT_EQUAL_LR'''
    nodo = Node('RELOP')
    nodo.add_childrens(Node(p[1]))
    p[0] = nodo
Exemple #11
0
def p_sql_alias(p):
    '''SQLALIAS : AS SQLNAME
                | SQLNAME'''
    nodo = Node('SQLALIAS')
    if (len(p) == 3):
        nodo.add_childrens(Node(p[1]))
        nodo.add_childrens(p[2])
    elif (len(p) == 2):
        nodo.add_childrens(p[1])
    p[0] = nodo
Exemple #12
0
def p_sql_unary_logical_expression(p):
    '''SQLUNARYLOGICALEXPRESSION : NOT EXISTSORSQLRELATIONALCLAUSE
                                 | EXISTSORSQLRELATIONALCLAUSE'''
    nodo = Node('SQLUNARYLOGICALEXPRESSION')
    if (p[1] == 'NOT'):
        nodo.add_childrens(Node(p[1]))
        nodo.add_childrens(p[2])
    else:
        nodo.add_childrens(p[1])
    p[0] = nodo
Exemple #13
0
def p_group_by_clause(p):
    '''GROUPBYCLAUSE : GROUP BY SQLEXPRESSIONLIST'''
    nodo = Node('GROUPCLAUSE')
    nodo.add_childrens(Node(p[1]))
    nodo.add_childrens(Node(p[2]))
    nodo.add_childrens(p[3])
    p[0] = nodo
Exemple #14
0
def p_order_by_clause(p):
    '''ORDERBYCLAUSE : ORDER BY ORDERBYCLAUSELIST'''
    nodo = Node('ORDERBYCLAUSE')
    nodo.add_childrens(Node(p[1]))
    nodo.add_childrens(Node(p[2]))
    nodo.add_childrens(p[3])
    p[0] = nodo
Exemple #15
0
def p_order_by_expression(p):
    '''ORDERBYEXPRESSION : SQLSIMPLEEXPRESSION ASC
                         | SQLSIMPLEEXPRESSION DESC
                         | SQLSIMPLEEXPRESSION'''
    nodo = Node('ORDERBYEXPRESSION')
    if (len(p) == 3):
        nodo.add_childrens(p[1])
        nodo.add_childrens(Node(p[2]))
    elif (len(p) == 2):
        nodo.add_childrens(p[1])
    p[0] = nodo
Exemple #16
0
def p_join_type(p):
    '''JOINTYPE : INNER
                | LEFT OUTER
                | RIGHT OUTER
                | FULL OUTER'''
    nodo = Node('JOINTYPE')
    if (len(p) == 2):
        nodo.add_childrens(Node(p[1]))
    elif (len(p) == 3):
        nodo.add_childrens(Node(p[1]))
        nodo.add_childrens(Node(p[2]))
    p[0] = nodo
Exemple #17
0
def p_table_reference(p):
    '''TABLEREFERENCE : OBJECTREFERENCE SQLALIAS
                      | OBJECTREFERENCE SQLALIAS JOINLIST
                      | OBJECTREFERENCE JOINLIST
                      | OBJECTREFERENCE'''
    nodo = Node('TABLEREFERENCE')
    if (len(p) == 2):
        nodo.add_childrens(p[1])
    elif (len(p) == 3):
        nodo.add_childrens(p[1])
        nodo.add_childrens(p[2])
    elif (len(p) == 4):
        nodo.add_childrens(p[1])
        nodo.add_childrens(p[2])
        nodo.add_childrens(p[3])
    p[0] = nodo
Exemple #18
0
def p_cont_of_aggregate(p):
    '''CONTOFAGGREGATE : ASTERISK
                       | SQLSIMPLEEXPRESSION'''
    nodo = Node('CONTOFAGGREGATE')
    if (p[1] == '*'):
        nodo.add_childrens(Node(p[1]))
    else:
        nodo.add_childrens(p[1])
    p[0] = nodo
Exemple #19
0
def p_limit_types(p):
    '''LIMITTYPES : LISTLIMITNUMBER
                  | ALL'''
    nodo = Node('LIMITTYPES')
    if (p[1] == "ALL"):
        nodo.add_childrens(Node(p[1]))
    else:
        nodo.add_childrens(p[1])
    p[0] = nodo
Exemple #20
0
def p_returning_list(p):
    '''RETURNINGLIST   : ASTERISK
                       | EXPRESSIONRETURNING'''
    nodo = Node('RETURNINGLIST')
    if (p[1] == '*'):
        nodo.add_childrens(Node(p[1]))
    else:
        nodo.add_childrens(p[1])
    p[0] = nodo
Exemple #21
0
def p_query_statement(p):
    #  ELEMENTO 0       ELEMENTO 1     ELEMENTO 2      ELEMENTO 3
    '''QUERYSTATEMENT : SELECTSTATEMENT SEMICOLON'''
    nodo = Node('QUERYSTATEMENT')
    # Uso len para verificar si la produccion consta de 2 elementos, pero pongo que sea igual a 3
    # porque PLY incluye el indice 0 como parte de la gramatica
    if (len(p) == 3):
        nodo.add_childrens(p[1])
        nodo.add_childrens(Node(p[2]))
        p[0] = nodo
Exemple #22
0
def p_select_list(p):
    '''SELECTLIST : ASTERISK
                  | LISTITEM'''

    nodo = Node('SELECTLIST')
    if p[1] == '*':
        nodo.add_childrens(Node(p[1]))
    elif (p[1] != '*'):
        nodo.add_childrens(p[1])
    p[0] = nodo
Exemple #23
0
def p_limit_options(p):
    '''LIMITOPTIONS : LIMITTYPES OFFSETOPTION
                    | LIMITTYPES'''
    nodo = Node('LIMITOPTIONS')
    if (len(p) == 3):
        nodo.add_childrens(p[1])
        nodo.add_childrens(p[2])
    else:
        nodo.add_childrens(p[1])
    p[0] = nodo
Exemple #24
0
def p_select_item(p):
    '''SELECTITEM : SQLSIMPLEEXPRESSION SQLALIAS
                  | SQLSIMPLEEXPRESSION'''
    nodo = Node('SELECTITEM')
    if (len(p) == 3):
        nodo.add_childrens(p[1])
        nodo.add_childrens(p[2])
    elif (len(p) == 2):
        nodo.add_childrens(p[1])
    p[0] = nodo
Exemple #25
0
def p_select_statement(p):
    '''SELECTSTATEMENT : SELECTWITHOUTORDER OPTIONSSELECT
                       | SELECTWITHOUTORDER'''
    nodo = Node('SELECTSTATEMENT')
    if (len(p) == 2):
        nodo.add_childrens(p[1])
    elif (len(p) == 3):
        nodo.add_childrens(p[1])
        nodo.add_childrens(p[2])
    p[0] = nodo
def p_dml_list(p):
    '''DMLLIST : DMLLIST DML
               | DML'''
    nodo = Node('DMLLIST')
    if (len(p) == 2):
        nodo.add_childrens(p[1])
    elif (len(p) == 3):
        nodo.add_childrens(p[1])
        nodo.add_childrens(p[2])
    p[0] = nodo
Exemple #27
0
def p_join_list(p):
    '''JOINLIST : JOINLIST JOINP
                | JOINP'''
    nodo = Node('JOINLIST')
    if (len(p) == 2):
        nodo.add_childrens(p[1])
    elif (len(p) == 3):
        nodo.add_childrens(p[1])
        nodo.add_childrens(p[2])
    p[0] = nodo
Exemple #28
0
def p_options_select(p):
    '''OPTIONSSELECT : ORDERBYCLAUSE LIMITCLAUSE
                        | LIMITCLAUSE
                        | ORDERBYCLAUSE'''
    nodo = Node('OPTIONSSELECT')
    if (len(p) == 3):
        nodo.add_childrens(p[1])
        nodo.add_childrens(p[2])
    else:
        nodo.add_childrens(p[1])
    p[0] = nodo
Exemple #29
0
def p_where_aggregate(p):
    '''SELECTWHEREAGGREGATE : WHERECLAUSE  SELECTGROUPHAVING
                            | SELECTGROUPHAVING
                            | WHERECLAUSE'''
    nodo = Node('SELECTWHEREAGGREGATE')
    if (len(p) == 3):
        nodo.add_childrens(p[1])
        nodo.add_childrens(p[2])
    elif (len(p) == 2):
        nodo.add_childrens(p[1])
    p[0] = nodo
Exemple #30
0
def p_select_group_having(p):
    '''SELECTGROUPHAVING : GROUPBYCLAUSE
                         | HAVINGCLAUSE GROUPBYCLAUSE
                         | GROUPBYCLAUSE HAVINGCLAUSE'''
    nodo = Node('SELECTGROUPHAVING')
    if (len(p) == 2):
        nodo.add_childrens(p[1])
    elif (len(p) == 3):
        nodo.add_childrens(p[1])
        nodo.add_childrens(p[2])
    p[0] = nodo