bool PdmsParser::parseSessionContent() { if(!session) return false; if(!PdmsCommands::ElementCreation::Initialize()) return false; if(!session->initializeSession()) { PdmsCommands::ElementCreation::Finalize(); return false; } while(session->gotoNextToken()) { if(!processCurrentToken()) { session->closeSession(true); PdmsCommands::ElementCreation::Finalize(); return false; } } //If the hierarchy root has not yet been computed, do it now. if(!root) root = currentItem->getRoot(); //else check that the current item doesn't belong to a new root else if(currentItem->getRoot()!=root) session->printWarning("there could be several hierarchy root specified in this file"); if(root) root->convertCoordinateSystem(); session->setLoadedObject(root); session->closeSession(false); PdmsCommands::ElementCreation::Finalize(); return true; }
void CSEMachine::evaluateTree() { createControlStructures(this->inputTree); Token envToken("env",envCounter); stack<Token> controlStack; stack<Token> executionStack; controlStack.push(envToken); envMap[0] = -1; //Set parent of env[0] to -1 vector<Token> delta0 = deltaMap[0]; int i=0; while(i<delta0.size()) { controlStack.push(delta0[i]); i++; } executionStack.push(envToken); int whileCount = 0; while(controlStack.size() != 1) { Token currToken = controlStack.top(); controlStack.pop(); processCurrentToken(currToken,controlStack,executionStack); } if(printCalled == false) { cout<<endl; } }
int main() { memset(bitCounts, 0, sizeof(bitCounts)); char buffer[2048]; double done = 0, prevDone = 0; int n, curLen = 0; while ((n = fread(buffer, 1, 1024, stdin)) > 0) { done += n; if (done > prevDone + pow(2, 30)) { printf("%.1lf MB read\n", done / pow(2, 20)); prevDone = done; printf("maxLen = %d\n", maxLen); for (int i = 1; i < 20; i++) printf("bitCounts[%2d] = %9d\n", i, bitCounts[i]); } for (int i = 0; i < n; i++) { if (buffer[i] == '<') { processCurrentToken(curLen); curLen = 1; if (buffer[i + 1] == '/') { curLen = 2; i++; } } else if (buffer[i] == '>') { curLen++; processCurrentToken(curLen); curLen = 0; } else if (((buffer[i] | 32) >= 'a') && ((buffer[i] | 32) <= 'z')) curLen++; else if ((buffer[i] >= '0') && (buffer[i] <= '9')) curLen++; // else if (buffer[i] < 0) // curLen++; else { processCurrentToken(curLen); curLen = 0; } } } processCurrentToken(curLen); printf("maxLen = %d\n", maxLen); for (int i = 1; i < 20; i++) printf("bitCounts[%2d] = %9d\n", i, bitCounts[i]); return 0; }