diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2017-03-10 08:45:19 -0500 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2017-03-10 08:45:19 -0500 |
| commit | 8bbe036d2b3cb6b8f65d9b417285665eaf23c202 (patch) | |
| tree | 215e226cc2517b56cd04756926d034ab5af77719 /dice-lang/src/bjc/dicelang/DiceLangEngine.java | |
| parent | 5c153ba37d3249593be598f6abf1c14a9559af7e (diff) | |
Parse string literals better
Diffstat (limited to 'dice-lang/src/bjc/dicelang/DiceLangEngine.java')
| -rw-r--r-- | dice-lang/src/bjc/dicelang/DiceLangEngine.java | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/dice-lang/src/bjc/dicelang/DiceLangEngine.java b/dice-lang/src/bjc/dicelang/DiceLangEngine.java index b0235e6..cd613b5 100644 --- a/dice-lang/src/bjc/dicelang/DiceLangEngine.java +++ b/dice-lang/src/bjc/dicelang/DiceLangEngine.java @@ -12,6 +12,7 @@ import bjc.utils.funcdata.IList; import bjc.utils.funcdata.IMap; import bjc.utils.funcutils.ListUtils; import bjc.utils.funcutils.NeoTokenSplitter; +import bjc.utils.funcutils.StringUtils; import java.util.Comparator; import java.util.Deque; @@ -283,20 +284,20 @@ public class DiceLangEngine { * Destring command */ IMap<String, String> stringLiterals = new FunctionalMap<>(); - Matcher quoteMatcher = quotePattern.matcher(newComm); + List<String> destringedParts = StringUtils.removeDQuotedStrings(newComm); StringBuffer destringedCommand = new StringBuffer(); - while(quoteMatcher.find()) { - /* - * @TODO interpolate dquoted literals - */ - String stringLit = quoteMatcher.group(1); - - String litName = "stringLiteral" + nextLiteral++; - stringLiterals.put(litName, stringLit); - - quoteMatcher.appendReplacement(destringedCommand, " " + litName + " "); + for(String part : destringedParts) { + if(part.startsWith("\"") && part.endsWith("\"")) { + String litName = "stringLiteral" + nextLiteral; + String litVal = part.substring(1, part.length() - 1); + stringLiterals.put(litName, StringUtils.descapeString(litVal)); + nextLiteral += 1; + + destringedCommand.append(" " + litName + " "); + } else { + destringedCommand.append(part); + } } - quoteMatcher.appendTail(destringedCommand); if(debugMode) { System.out.println("\tCommand after destringing: " + destringedCommand); |
