summaryrefslogtreecommitdiff
path: root/dice-lang/src
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2017-03-10 08:45:19 -0500
committerbculkin2442 <bjculkin@mix.wvu.edu>2017-03-10 08:45:19 -0500
commit8bbe036d2b3cb6b8f65d9b417285665eaf23c202 (patch)
tree215e226cc2517b56cd04756926d034ab5af77719 /dice-lang/src
parent5c153ba37d3249593be598f6abf1c14a9559af7e (diff)
Parse string literals better
Diffstat (limited to 'dice-lang/src')
-rw-r--r--dice-lang/src/bjc/dicelang/DiceLangEngine.java25
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);