import re

test = """import (
    "github.com/user/qrt"

    "fmt"

    "github.com/user/zyx"
)

import "abcdef"

import "abzdef"
"""

BEGIN = 1
IMPORT = 2
DESCENT = 3


class Lexer(object):
    def __init__(self, text):
        self._rx = re.compile(r'(import|".*?"|\(|\))')
        self._text = text

    def __iter__(self):
        for m in self._rx.finditer(self._text):
            yield m.group(1)


class RecursiveDescent(object):
    state = BEGIN

    def __init__(self, lexer):
        self._lexer = lexer

    def __iter__(self):
        for token in self._lexer:
            if self.state == BEGIN:
                if token != 'import':
                    # Beginning of the program most likely
                    raise StopIteration
                self.state = IMPORT
            elif self.state == IMPORT:
                if token == '(':
                    self.state = DESCENT
                else:
                    self.state = BEGIN
                    yield token
            elif self.state == DESCENT:
                if token == ')':
                    self.state = BEGIN
                else:
                    yield token

for path in RecursiveDescent(Lexer(test)):
    print(path)
