commit d9f2fcd21eda66d4b440ede182c4b78327e731ab
parent 756d65ab603b5b7bea80c73f3c8a4ee699c48116
Author: Adam Malone <1319733+freddyz@users.noreply.github.com>
Date: Wed, 19 Dec 2018 15:53:24 -0600
fix the empty () crash, still doesnt handle dangling right parens properly
Diffstat:
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/src/dtpulse.cpp b/src/dtpulse.cpp
@@ -494,31 +494,31 @@ Parser::Parser(std::string expr) {
currentIndex=0;
tokens=tokenStack;
tokenStack = {};
- setForRandoms(tokens[0]);
+ setForRandoms(peekToken());
if(!inError) {
//printTokenVector(tokenStack);
currentIndex = 0;
tokens = tokenStack;
tokenStack={};
- setForInterleave(tokens[0]);
+ setForInterleave(peekToken());
if(!inError) {
//printTokenVector(tokenStack);
currentIndex = 0;
tokens = tokenStack;
tokenStack = {};
- setForAtExpand(tokens[0]);
+ setForAtExpand(peekToken());
if(!inError) {
currentIndex = 0;
tokens=tokenStack;
tokenStack = {};
- setForSquareBrackets(tokens[0]);
+ setForSquareBrackets(peekToken());
if(!inError) {
currentIndex = 0;
tokens=tokenStack;
tokenStack = {};
- setFinal(tokens[0]);
+ setFinal(peekToken());
}
}
}
@@ -658,15 +658,15 @@ void Parser::ParseInterleave(Token t) {
else if(t.type=="RightParen") {
//evaluate top of stack
tempStack = interleaveExpand(stackVec.back());
-
+ printTokenVector(tempStack);
//pop top of stack
- stackVec.pop_back();
+ stackVec.pop_back();
if(stackVec.size() > 0) {
//push this evaluated vector<Token> to new top
stackVec.back().push_back(tempStack);
}
else {
-
+ inError=true;
}
}
//Letter, ExactValue, or RandomSequence
@@ -675,6 +675,7 @@ void Parser::ParseInterleave(Token t) {
}
t=skipAndPeekToken();
}
+
output = interleaveExpand(stackVec.back());
tokenStack.insert(tokenStack.end(),output.begin(),output.end());
}