Beispiel #1
0
void Action::parseConditions( Filereader & f, TokenStruct< std::string > & ts, Domain & d ) {
	f.next();
	f.assert( ":" );
	std::string s = f.getToken();
	if ( s == "PRECONDITION" ) {
		f.next();
		f.assert( "(" );
		if ( f.getChar() != ')' ) {
			pre = createCondition( f, d );
			pre->parse( f, ts, d );
		}
		else ++f.c;

		f.next();
		f.assert( ":" );
		s = f.getToken();
	}
	if ( s != "EFFECT" ) f.tokenExit( s );
		
	f.next();
	f.assert( "(" );
	if ( f.getChar() != ')' ) {
		eff = createCondition( f, d );
		eff->parse( f, ts, d );
	}
	else ++f.c;
	f.next();
	f.assert( ")" );
}
Beispiel #2
0
void Forall::SHOPparse( Filereader & f, TokenStruct< std::string > & ts, Domain & d ) {
	f.next();
	f.assert( "(" );

	TokenStruct< std::string > fs = f.parseTypedList( false );
	
	params = d.convertTypes( fs.types );
		
	TokenStruct< std::string > fstruct( ts );
	fstruct.append( fs );

	f.next();
	f.assert( "(" );
	if ( f.getChar() != ')' ) {
		cond = new And;
		cond->SHOPparse( f, fstruct, d );
	}
	else ++f.c;

	f.next();
	f.assert( "(" );
	if ( f.getChar() != ')' ) {
		cond1 = new And;
		cond1->SHOPparse( f, fstruct, d );
	}
	else ++f.c;

	f.next();
	f.assert( ")" );

}
Beispiel #3
0
void Action::parse( Filereader & f, TokenStruct< std::string > & ts, Domain & d ) {
	f.next();
	f.assert( ":PARAMETERS" );
	f.assert( "(" );

	TokenStruct< std::string > astruct = f.parseTypedList( true, d.types );
	params = d.convertTypes( astruct.types );

	parseConditions( f, astruct, d );
}
void Derived::parse( Filereader & f, TokenStruct< std::string > & ts, Domain & d ) {
	f.next();
	f.assert( "(" );
	name = f.getToken( d.preds );
	TokenStruct< std::string > dstruct = f.parseTypedList( true, d.types );
	params = d.convertTypes( dstruct.types );

	f.next();
	f.assert( "(" );
	cond = createCondition( f, d );
	cond->parse( f, dstruct, d );

	f.next();
	f.assert( ")" );
}
void HTNMethod::parseTaskList( Filereader & f, TokenStruct< std::string > & ts, Domain & d ) {
f.next();
f.assert( "(" );
for ( f.next(); f.getChar() != ')'; f.next() ) {
		f.assert( "(" );
		std::string s = f.getToken();

		Task * task = new Task(s);
		task->SHOPparse( f, ts, d );
		tasks.push_back( task );
		d.tasks.insert( task );
	}
	++f.c;
f.next();
f.assert( ")" );
}
Beispiel #6
0
void Forall::parse( Filereader & f, TokenStruct< std::string > & ts, Domain & d ) {
	f.next();
	f.assert( "(" );

	TokenStruct< std::string > fs = f.parseTypedList( true, d.types );
	params = d.convertTypes( fs.types );
		
	TokenStruct< std::string > fstruct( ts );
	fstruct.append( fs );

	f.next();
	f.assert( "(" );
	if ( f.getChar() != ')' ) {
		cond = createCondition( f, d );
		cond->parse( f, fstruct, d );
	}
	else ++f.c;

	f.next();
	f.assert( ")" );
}
void HTNMethod::parseSHOPConditions( Filereader & f, TokenStruct< std::string > & ts, Domain & d ) {
	f.next();
	f.assert( "(" );
	if ( f.getChar() != ')' ) {
			if(f.getChar() == '('){
				pre = new And;
			}
			else 
				pre = createSHOPCondition( f, d );
			
			pre->SHOPparse( f, ts, d );

	}
	else ++f.c;
}