                     else if c in '\'"'
                         # starting a string, keep track of what quote was used to start it.
                         stringDelimiter = c
+                        numConsecutiveStringDelimiters += 1
 
     return {} =
         openBracketStack: openBracketStack

                    isEscaped = false
                else
                    if c == stringDelimiter
                        # We are seeing the same quote that started the string, i.e. ' or ",
                        # so we are no longer in a string. Note that this will work perfectly
                        # well for triple quoted strings since there are an odd number of quotes
                        # at the beginning and ending. Someone had parsers in mind when they
                        # decided that...
                        stringDelimiter = []
                    else if c == '\\'
                        # We are seeing an unescaped backslash, the next character is escaped.
                        # Note that this is not exactly true in raw strings, HOWEVER, in raw strings

    # this is the row of the last function definition
    lastColonRow = NaN

    # true if we are in a triple quoted string
    inTripleQuotedString = false

    # If we have seen two of the same string delimiters in a row,
    # then we have to check the next character to see if it matches
    # in order to correctly parse triple quoted strings.
    checkNextCharForString = false

    # keep track of the number of consecutive string delimiter's we've seen
    # used to tell if we are in a triple quoted string
    numConsecutiveStringDelimiters = 0

    # NOTE: this parsing will only be correct if the python code is well-formed
    #       statements like "[0, (1, 2])" might break the parsing

