From fa4d0582970e50c574ecfdcdbcfeae3754ca2095 Mon Sep 17 00:00:00 2001 From: "David A. Mellis" Date: Sun, 3 Oct 2010 19:44:28 -0400 Subject: [PATCH] Reapplying Christian's regex patch. Revert "Revert "Removed dependencies from regex library oro.jar"" This reverts commit ed7795ef8dc89e2afa8c9a994c2f1ad4771f459c. --- app/build.xml | 2 +- app/lib/oro.jar | Bin 26707 -> 0 bytes .../app/preproc/PdePreprocessor.java | 125 ++++++++---------- build/build.xml | 1 - build/macosx/template.app/Contents/Info.plist | 2 +- build/windows/launcher/config.xml | 1 - todo.txt | 1 - 7 files changed, 56 insertions(+), 76 deletions(-) delete mode 100644 app/lib/oro.jar diff --git a/app/build.xml b/app/build.xml index eb1c313bf..e0f67e058 100644 --- a/app/build.xml +++ b/app/build.xml @@ -43,7 +43,7 @@ excludes="**/tools/format/**" encoding="UTF-8" includeAntRuntime="false" - classpath="../core/core.jar; ${env.JAVA_HOME}/lib/tools.jar; lib/ant.jar; lib/ant-launcher.jar; lib/apple.jar; lib/ecj.jar; lib/jna.jar; lib/oro.jar; lib/RXTXcomm.jar" /> + classpath="../core/core.jar; ${env.JAVA_HOME}/lib/tools.jar; lib/ant.jar; lib/ant-launcher.jar; lib/apple.jar; lib/ecj.jar; lib/jna.jar; lib/RXTXcomm.jar" /> diff --git a/app/lib/oro.jar b/app/lib/oro.jar deleted file mode 100644 index 667e86cb7a8a8eb6eb4974f252f58bfa43cd8c18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26707 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 prototypes; // these ones have the .* at the end, since a class name might be at the end // instead of .* which would make trouble other classes using this can lop // off the . and anything after it to produce a package name consistently. - ArrayList programImports; + List programImports; // imports just from the code folder, treated differently // than the others, since the imports are auto-generated. - ArrayList codeFolderImports; + List codeFolderImports; String indent; @@ -79,6 +80,14 @@ public class PdePreprocessor { indent = new String(indentChars); } + /** + * Writes out the head of the c++ code generated for a sketch. + * Called from processing.app.Sketch. + * @param program the concatenated code from all tabs containing pde-files + * @param buildPath the path into which the processed pde-code is to be written + * @param name the name of the sketch + * @param codeFolderPackages unused param (leftover from processing) + */ public int writePrefix(String program, String buildPath, String sketchName, String codeFolderPackages[]) throws FileNotFoundException { this.buildPath = buildPath; @@ -93,7 +102,7 @@ public class PdePreprocessor { // an OutOfMemoryError or NullPointerException will happen. // again, not gonna bother tracking this down, but here's a hack. // http://dev.processing.org/bugs/show_bug.cgi?id=16 - String scrubbed = Sketch.scrubComments(program); + Sketch.scrubComments(program); // If there are errors, an exception is thrown and this fxn exits. if (Preferences.getBoolean("preproc.substitute_unicode")) { @@ -117,14 +126,7 @@ public class PdePreprocessor { // } // } - prototypes = new ArrayList(); - - try { - prototypes = prototypes(program); - } catch (MalformedPatternException e) { - System.out.println("Internal error while pre-processing; " + - "not generating function prototypes.\n\n" + e); - } + prototypes = prototypes(program); // store # of prototypes so that line number reporting can be adjusted prototypeCount = prototypes.size(); @@ -193,7 +195,7 @@ public class PdePreprocessor { } // Write the pde program to the cpp file - protected void writeProgram(PrintStream out, String program, List prototypes) { + protected void writeProgram(PrintStream out, String program, List prototypes) { int prototypeInsertionPoint = firstStatement(program); out.print(program.substring(0, prototypeInsertionPoint)); @@ -216,7 +218,7 @@ public class PdePreprocessor { protected void writeFooter(PrintStream out) throws java.lang.Exception {} - public ArrayList getExtraImports() { + public List getExtraImports() { return programImports; } @@ -229,31 +231,23 @@ public class PdePreprocessor { * or a pre-processor directive. */ public int firstStatement(String in) { - PatternMatcherInput input = new PatternMatcherInput(in); - PatternCompiler compiler = new Perl5Compiler(); - PatternMatcher matcher = new Perl5Matcher(); - Pattern pattern = null; + // whitespace + String p = "\\s+"; - try { - pattern = compiler.compile( - // XXX: doesn't properly handle special single-quoted characters - // whitespace - "\\s+" + "|" + - // multi-line comment - "(/\\*[^*]*(?:\\*(?!/)[^*]*)*\\*/)" + "|" + - // single-line comment - "(//.*?$)" + "|" + - // pre-processor directive - "(#(?:\\\\\\n|.)*)", - Perl5Compiler.MULTILINE_MASK); - } catch (MalformedPatternException e) { - throw new RuntimeException("Internal error in firstStatement()", e); - } + // multi-line and single-line comment + //p += "|" + "(//\\s*?$)|(/\\*\\s*?\\*/)"; + p += "|(/\\*[^*]*(?:\\*(?!/)[^*]*)*\\*/)|(//.*?$)"; + + // pre-processor directive + p += "|(#(?:\\\\\\n|.)*)"; + Pattern pattern = Pattern.compile(p, Pattern.MULTILINE); + Matcher matcher = pattern.matcher(in); int i = 0; - while (matcher.matchesPrefix(input, pattern)) { - i = matcher.getMatch().endOffset(0); - input.setCurrentOffset(i); + while (matcher.find()) { + if (matcher.start()!=i) + break; + i = matcher.end(); } return i; @@ -265,31 +259,24 @@ public class PdePreprocessor { * @param in the String to strip * @return the stripped String */ - public String strip(String in) throws MalformedPatternException { - PatternCompiler compiler = new Perl5Compiler(); - PatternMatcher matcher = new Perl5Matcher(); - Pattern pattern = compiler.compile( - // XXX: doesn't properly handle special single-quoted characters - // single-quoted character - "('.')" + "|" + - // double-quoted string - "(\"(?:[^\"\\\\]|\\\\.)*\")" + "|" + - // multi-line comment - "(/\\*[^*]*(?:\\*(?!/)[^*]*)*\\*/)" + "|" + - // single-line comment - "(//.*?$)" + "|" + - // pre-processor directive - "(^\\s*#.*?$)", - Perl5Compiler.MULTILINE_MASK); - - while (matcher.contains(in, pattern)) { - MatchResult result = matcher.getMatch(); - // XXX: should preserve newlines in the result so that line numbers of - // the stripped string correspond to those in the original source. - in = in.substring(0, result.beginOffset(0)) + " " + in.substring(result.endOffset(0)); - } + public String strip(String in) { + // XXX: doesn't properly handle special single-quoted characters + // single-quoted character + String p = "('.')"; - return in; + // double-quoted string + p += "|(\"(?:[^\"\\\\]|\\\\.)*\")"; + + // single and multi-line comment + //p += "|" + "(//\\s*?$)|(/\\*\\s*?\\*/)"; + p += "|(//.*?$)|(/\\*[^*]*(?:\\*(?!/)[^*]*)*\\*/)"; + + // pre-processor directive + p += "|" + "(^\\s*#.*?$)"; + + Pattern pattern = Pattern.compile(p, Pattern.MULTILINE); + Matcher matcher = pattern.matcher(in); + return matcher.replaceAll(" "); } /** @@ -324,21 +311,17 @@ public class PdePreprocessor { return buffer.toString(); } - public List prototypes(String in) throws MalformedPatternException { + public ArrayList prototypes(String in) { in = collapseBraces(strip(in)); - PatternMatcherInput input = new PatternMatcherInput(in); - PatternCompiler compiler = new Perl5Compiler(); - PatternMatcher matcher = new Perl5Matcher(); // XXX: doesn't handle ... varargs // XXX: doesn't handle function pointers - Pattern pattern = compiler.compile( - "[\\w\\[\\]\\*]+\\s+[\\[\\]\\*\\w\\s]+\\([,\\[\\]\\*\\w\\s]*\\)(?=\\s*\\{)"); - List matches = new ArrayList(); + Pattern pattern = Pattern.compile("[\\w\\[\\]\\*]+\\s+[&\\[\\]\\*\\w\\s]+\\([&,\\[\\]\\*\\w\\s]*\\)(?=\\s*\\{)"); - while (matcher.contains(input, pattern)) { - matches.add(matcher.getMatch().group(0) + ";"); - } + ArrayList matches = new ArrayList(); + Matcher matcher = pattern.matcher(in); + while (matcher.find()) + matches.add(matcher.group(0) + ";"); return matches; } diff --git a/build/build.xml b/build/build.xml index 98d159853..479cc7e1b 100644 --- a/build/build.xml +++ b/build/build.xml @@ -19,7 +19,6 @@ - diff --git a/build/macosx/template.app/Contents/Info.plist b/build/macosx/template.app/Contents/Info.plist index c71eb638c..aaac7a7d7 100755 --- a/build/macosx/template.app/Contents/Info.plist +++ b/build/macosx/template.app/Contents/Info.plist @@ -72,7 +72,7 @@ - $JAVAROOT/pde.jar:$JAVAROOT/core.jar:$JAVAROOT/antlr.jar:$JAVAROOT/ecj.jar:$JAVAROOT/registry.jar:$JAVAROOT/quaqua.jar:$JAVAROOT/oro.jar:$JAVAROOT/RXTXcomm.jar + $JAVAROOT/pde.jar:$JAVAROOT/core.jar:$JAVAROOT/antlr.jar:$JAVAROOT/ecj.jar:$JAVAROOT/registry.jar:$JAVAROOT/quaqua.jar:$JAVAROOT/RXTXcomm.jar JVMArchs diff --git a/build/windows/launcher/config.xml b/build/windows/launcher/config.xml index 877e390a1..ba29d3a06 100755 --- a/build/windows/launcher/config.xml +++ b/build/windows/launcher/config.xml @@ -19,7 +19,6 @@ lib/core.jar lib/jna.jar lib/ecj.jar - lib/oro.jar lib/RXTXcomm.jar diff --git a/todo.txt b/todo.txt index 6cd76a762..9d05091ec 100644 --- a/todo.txt +++ b/todo.txt @@ -105,7 +105,6 @@ Sketch.java PreProcessor.java - split write() into writeHeader() and write() as in Processing? - add getExtraImports() function instead of having Sketch grab them directly. - - don't use oro.jar Base.java - add keywords from libraries to the syntax coloring