public string FindEffectiveStatementAtOffset(string line, int offsetInLine, out int beginOfStatement) { var endOfStatement = offsetInLine - 1; var parenthesisLevel = 0; int i; var statement = new StringBuilder(); for (i = endOfStatement; i >= 0; i--) { var c = line[i]; if (c == ')') { if (statement.Length == 0) { break; } parenthesisLevel++; } else if (parenthesisLevel > 0) { //next if (c == '(') { parenthesisLevel--; } } else { if (FortranParseHelper.IsNonStatementCharacter(c)) { break; } else { statement.Insert(0, c); } } } beginOfStatement = i + 1; var originalBegin = beginOfStatement; for (int j = 0; j < statement.Length; j++) { var c = statement[j]; if (FortranParseHelper.IsWhiteSpace(c)) { beginOfStatement++; } else { break; } } return(statement.ToString().Substring(beginOfStatement - originalBegin)); }