@@ -243,23 +243,21 @@ public int firstStatement(String in) {
243
243
public String strip (String in ) {
244
244
// XXX: doesn't properly handle special single-quoted characters
245
245
// single-quoted character
246
- String p = "('.')" ;
247
-
248
- p += "|(' \\ \\ \" ')" ;
249
-
250
- // double-quoted string
251
- p += "|( \" (?:[^ \" \\ \\ ]| \\ \\ .)* \" )" ;
252
-
253
- // single and multi-line comment
254
- //p += "|" + "(//\\s*?$)|(/\\*\\s*?\\*/)" ;
255
- p += "|(//.*?$)|(/ \\ *[^*]*(?: \\ *(?!/)[^*]*)* \\ */)" ;
256
-
257
- // pre-processor directive
258
- p += "|" + "(^ \\ s*#.*?$)" ;
246
+ Pattern [] patterns = new Pattern [ 6 ] ;
247
+ patterns [ 5 ] = Pattern . compile ( "( \" (?:[^ \" \\ \\ ]| \\ \\ .)* \" )" , Pattern . MULTILINE );
248
+ patterns [ 4 ] = Pattern . compile ( "(^ \\ s*#.*?$)" , Pattern . MULTILINE ) ;
249
+ patterns [ 3 ] = Pattern . compile ( "(/ \\ *[^*]*(?: \\ *(?!/)[^*]*)* \\ */)" , Pattern . MULTILINE );
250
+ patterns [ 2 ] = Pattern . compile ( "(//.*?$)" , Pattern . MULTILINE );
251
+ patterns [ 1 ] = Pattern . compile ( "(' \ \\\ \" ')" , Pattern . MULTILINE ) ;
252
+ patterns [ 0 ] = Pattern . compile ( "('.')" , Pattern . MULTILINE );
253
+
254
+ String code = in ;
255
+ for ( Pattern p : patterns ) {
256
+ Matcher matcher = p . matcher ( code );
257
+ code = matcher . replaceAll ( " " );
258
+ }
259
259
260
- Pattern pattern = Pattern .compile (p , Pattern .MULTILINE );
261
- Matcher matcher = pattern .matcher (in );
262
- return matcher .replaceAll (" " );
260
+ return code ;
263
261
}
264
262
265
263
/**
0 commit comments