[C++] Introduce FindOutsideParen
diff --git a/parser.cc b/parser.cc
index 208cf4d..ab8a185 100644
--- a/parser.cc
+++ b/parser.cc
@@ -373,33 +373,10 @@
   }
 
   StringPiece RemoveComment(StringPiece line) {
-    bool prev_backslash = false;
-    stack<char> paren_stack;
-    for (size_t i = 0; i < line.size(); i++) {
-      char c = line[i];
-      switch (c) {
-        case '(':
-          paren_stack.push(')');
-          break;
-        case '{':
-          paren_stack.push('}');
-          break;
-
-        case ')':
-        case '}':
-          if (!paren_stack.empty() && c == paren_stack.top()) {
-            paren_stack.pop();
-          }
-          break;
-
-        case '#':
-          if (paren_stack.empty() && !prev_backslash)
-            return line.substr(0, i);
-
-      }
-      prev_backslash = c == '\\' && !prev_backslash;
-    }
-    return line;
+    size_t i = FindOutsideParen(line, '#');
+    if (i == string::npos)
+      return line;
+    return line.substr(0, i);
   }
 
   StringPiece GetDirective(StringPiece line) {