computerscare-vcv-modules

computerscare modules for VCV Rack
Log | Files | Refs

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:
Msrc/dtpulse.cpp | 17+++++++++--------
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()); }