minor fix: using yield and wait_until macro to implement yield_wait_until

This commit is contained in:
fros4943 2009-01-08 17:47:37 +00:00
parent f296df8bca
commit 54b7875295

View File

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $Id: ScriptParser.java,v 1.1 2009/01/08 16:27:48 fros4943 Exp $ * $Id: ScriptParser.java,v 1.2 2009/01/08 17:47:37 fros4943 Exp $
*/ */
package se.sics.cooja.plugins; package se.sics.cooja.plugins;
@ -59,12 +59,12 @@ public class ScriptParser {
code = parseTimeoutWithAction(code); code = parseTimeoutWithAction(code);
code = replaceYieldThenWaitUntils(code);
code = replaceYields(code); code = replaceYields(code);
code = replaceWaitUntils(code); code = replaceWaitUntils(code);
code = replaceYieldThenWaitsUntils(code);
this.code = code; this.code = code;
} }
@ -179,7 +179,7 @@ public class ScriptParser {
return pattern.matcher(code).replaceAll("SCRIPT_SWITCH()"); return pattern.matcher(code).replaceAll("SCRIPT_SWITCH()");
} }
private String replaceYieldThenWaitsUntils(String code) throws ScriptSyntaxErrorException { private String replaceYieldThenWaitUntils(String code) throws ScriptSyntaxErrorException {
Pattern pattern = Pattern.compile( Pattern pattern = Pattern.compile(
"YIELD_THEN_WAIT_UNTIL\\(" + "YIELD_THEN_WAIT_UNTIL\\(" +
"(.*)" /* expression */ + "(.*)" /* expression */ +
@ -189,9 +189,7 @@ public class ScriptParser {
while (matcher.find()) { while (matcher.find()) {
code = matcher.replaceFirst( code = matcher.replaceFirst(
"do { " + "YIELD(); WAIT_UNTIL(" + matcher.group(1) + ")");
" SCRIPT_SWITCH();" +
"} while (!(" + matcher.group(1) + "))");
matcher.reset(code); matcher.reset(code);
} }
@ -209,7 +207,7 @@ public class ScriptParser {
while (matcher.find()) { while (matcher.find()) {
code = matcher.replaceFirst( code = matcher.replaceFirst(
"while (!(" + matcher.group(1) + ")) { " + "while (!(" + matcher.group(1) + ")) { " +
" SCRIPT_SWITCH()" + " SCRIPT_SWITCH(); " +
"}"); "}");
matcher.reset(code); matcher.reset(code);
} }