Example #1
0
def main(argv):
    input_stream = FileStream(argv[1])
    lexer = frameQLLexer(input_stream)
    stream = CommonTokenStream(lexer)
    parser = frameQLParser(stream)
    tree = parser.root()
    print(tree.toStringTree(recog=parser))
Example #2
0
def main(input):
    input_stream = FileStream(input)
    data = [[0, 50, 'bus'], [1, 100, 'car'], [2, 50, 'van'], [3, 150, 'bus'],
            [4, 120, 'bus'], [5, 130, 'car'], [6, 250, 'bus'], [7, 70, 'van'],
            [8, 110, 'bus']]

    lexer = frameQLLexer(input_stream)

    print("Raw SQL Query: ")
    print(input_stream, '\n')

    stream = CommonTokenStream(lexer)
    parser = frameQLParser(stream)
    tree = parser.root()
    listener = MyListener(data)

    walker = ParseTreeWalker()
    walker.walk(listener, tree)

    print("Parse Tree: \n")
    print(tree.toStringTree(recog=parser))
    print('\n')

    ExpressionTree = listener.root
    PlanTree = listener.projectionNode
    Data_inp = listener.crossNode

    def traverseExpTree(node, children=[]):

        if hasattr(node, 'children'):
            if len(node.children) == 0:
                return
            for child in node.children:
                traverseExpTree(child, children)
        if hasattr(node, 'attribute'):
            children.append(ExpressionConstant(node.attribute))
            print(node.attribute, end=', ')
        elif hasattr(node, 'data'):
            children.append(ExpressionConstant(node.data))
            print(node.data, end=', ')
        elif hasattr(node, 'operator'):
            if node.operator in ['+', '-', '*', '/']:
                ExpressionArithmetic(children, node.operator)
            elif node.operator in ['AND', 'OR', 'NOT']:
                ExpressionLogical(children, node.operator, node.parent)
            else:
                ExpressionComparison(children, node.operator)
            children = []
            print(node.operator, end=', ')
        else:
            print(node, end=', ')

    print("PostFix Traversal of Expression Tree: \n")
    traverseExpTree(ExpressionTree)
    print('\n')
Example #3
0
def main(argv):
    input_stream = FileStream(argv)
    lexer = frameQLLexer(input_stream)
    stream = CommonTokenStream(lexer)
    parser = frameQLParser(stream)
    tree = parser.root()
    listener = MyListener()
    walker = ParseTreeWalker()
    walker.walk(listener,tree)

    PlanTree = listener.projectionNode
    print(PlanTree.attributes)
    print(PlanTree.children.expression)
    print(PlanTree.children.children.data)
Example #4
0
def main(argv):
    input_stream = FileStream(argv[1])
    lexer = frameQLLexer(input_stream)
    stream = CommonTokenStream(lexer)
    parser = frameQLParser(stream)
    tree = parser.root()
    '''print out the parse tree'''
    #print(tree.toStringTree(recog=parser))
    '''traverse through the parse tree'''
    printer = KeyPrinter()
    walker = ParseTreeWalker()
    walker.walk(printer, tree)
    '''generate the predicate list and the operator list required by the query optimizer'''
    '''these lists are generated by the _parseQuery in the query_optimizer.py file'''
    printer.generateParsedLists()
    print(printer.getQueryParsed())
    print(printer.getQueryOperator())
Example #5
0
def main(argv):
    input_stream = FileStream(argv)
    #query=convert_query('SELECT CLASS , REDNESS FROM TAIPAI WHERE CLASS = \'BUS\' AND REDNESS > 200')
    #input_stream.strdata=query
    lexer = frameQLLexer(input_stream)
    stream = CommonTokenStream(lexer)
    parser = frameQLParser(stream)
    tree = parser.root()
    listener = MyListener()
    walker = ParseTreeWalker()
    walker.walk(listener, tree)

    print(tree.toStringTree(recog=parser))
    ExpressionTree = listener.currentLogicalExpression
    PlanTree = listener.projectionNode
    print(ExpressionTree.children[0].children[0])
    print(ExpressionTree.children[0].operator)
    print(ExpressionTree.children[0].children[1].data)
    print(ExpressionTree.children[1].children[0].attribute)
    print(ExpressionTree.children[1].operator)
    print(ExpressionTree.children[1].children[1].data)
Example #6
0
def main(argv):
    input_stream = FileStream(argv)
    lexer = frameQLLexer(input_stream)
    stream = CommonTokenStream(lexer)
    parser = frameQLParser(stream)
    tree = parser.root()
    listener = MyListener()
    walker = ParseTreeWalker()
    walker.walk(listener,tree)

    ExpressionTree=listener.FIFO[0]

    '''
    print(ExpressionTree.children[0].children[0].children[0].attribute)
    print(ExpressionTree.children[0].children[0].operator)
    print(ExpressionTree.children[0].children[0].children[1].data)

    print(ExpressionTree.children[0].operator)
    
    print(ExpressionTree.children[0].children[1].children[0].attribute)
    print(ExpressionTree.children[0].children[1].operator)
    print(ExpressionTree.children[0].children[1].children[1].data)

    print(ExpressionTree.operator)

    print(ExpressionTree.children[1].children[0].attribute)
    print(ExpressionTree.children[1].operator)
    print(ExpressionTree.children[1].children[1].data)
    '''
    
    '''
    print(ExpressionTree.children[1].children[0].children[0].attribute)
    print(ExpressionTree.children[1].children[0].operator)
    print(ExpressionTree.children[1].children[0].children[1].data)
    print(ExpressionTree.children[1].children[1].children[0].attribute)
    print(ExpressionTree.children[1].children[1].operator)
    print(ExpressionTree.children[1].children[1].children[1].data)

    print(ExpressionTree.operator)

    print(ExpressionTree.children[0].children[1].children[0].children[0].children[0].attribute)
    print(ExpressionTree.children[0].children[1].children[0].children[0].operator)
    print(ExpressionTree.children[0].children[1].children[0].children[0].children[1].data)

    print(ExpressionTree.children[0].children[1].children[0].operator)
    
    print(ExpressionTree.children[0].children[1].children[0].children[1].children[0].attribute)
    print(ExpressionTree.children[0].children[1].children[0].children[1].operator)
    print(ExpressionTree.children[0].children[1].children[0].children[1].children[1].data)

    print(ExpressionTree.children[0].children[1].operator)

    print(ExpressionTree.children[0].children[1].children[1].children[0].attribute)
    print(ExpressionTree.children[0].children[1].children[1].operator)
    print(ExpressionTree.children[0].children[1].children[1].children[1].data)
    '''
    '''
    #test4.txt
    print(ExpressionTree.children[0].children[1].children[0].children[0].attribute)
    print(ExpressionTree.children[0].children[1].children[0].operator)
    print(ExpressionTree.children[0].children[1].children[0].children[1].data)
    print(ExpressionTree.children[0].children[1].operator)
    print(ExpressionTree.children[0].children[1].children[1].data)
    
    print(ExpressionTree.operator)

    print(ExpressionTree.children[1].children[0].attribute)
    print(ExpressionTree.children[1].operator)
    print(ExpressionTree.children[1].children[1].data)
    '''
    '''