Example #1
0
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;
	}
}
Example #3
0
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;
}