X-Git-Url: http://git.megacz.com/?p=org.ibex.core.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Futil%2FPreprocessor.java;h=a226731e722ce455326890252cf37a6d178c6037;hp=0b6e1efe4c99f045ceac6e47c0b31d0bba69456f;hb=01732f3955ae92c0520283b44f52d1ec69f9f9f2;hpb=3591b88b94a6bb378af3d4abe6eb5233ce583104 diff --git a/src/org/ibex/util/Preprocessor.java b/src/org/ibex/util/Preprocessor.java index 0b6e1ef..a226731 100644 --- a/src/org/ibex/util/Preprocessor.java +++ b/src/org/ibex/util/Preprocessor.java @@ -7,6 +7,7 @@ package org.ibex.util; +import gnu.regexp.*; import java.util.*; import java.io.*; @@ -29,6 +30,16 @@ import java.io.*; */ public class Preprocessor { + public static String replaceAll(String source, String regexp, String replaceWith) { + try { + RE re = new RE(regexp, 0, RESyntax.RE_SYNTAX_PERL5); + return (String)re.substituteAll(source, replaceWith); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); @@ -56,6 +67,7 @@ public class Preprocessor { private int enumSwitch = 0; // number appended to variable used in switch implementation + public Preprocessor(Reader reader, Writer writer) { setReader(reader); setWriter(writer); @@ -121,7 +133,7 @@ PROCESS: String val = trimmed.substring(keyEnd).trim(); replace.put(key, val); } - out.println(); // preserve line numbers + out.print("\n"); // preserve line numbers } else if (trimmed.startsWith("//#repeat ")) { trimmed = trimmed.substring(9); @@ -129,7 +141,7 @@ PROCESS: String s2 = in.readLine().trim(); if (s2.startsWith("//")) s2 = s2.substring(2).trim(); trimmed = trimmed.substring(0, trimmed.length() - 1) + " " + s2; - out.println(); // preserve line numbers + out.print("\n"); // preserve line numbers } StringTokenizer st = new StringTokenizer(trimmed, " "); repeatreplace = (Hashtable)replace.clone(); @@ -140,13 +152,13 @@ PROCESS: repeatreplace.put(key, val); } sinceLastRepeat = new Vector(); - out.println(); // preserve line numbers + out.print("\n"); // preserve line numbers } else if (trimmed.startsWith("//#end")) { if (sinceLastRepeat == null) { err.add(new Warning("#end orphaned")); continue PROCESS; } Hashtable save = replace; replace = repeatreplace; - out.println(); + out.print("\n"); for(int i=0; i