Relaxing white space requirements.
This commit is contained in:
		@@ -64,7 +64,8 @@ void Description::parseContent(utils::Parser &parser)
 | 
			
		||||
{
 | 
			
		||||
	std::cout << "Parsing file content" << std::endl;
 | 
			
		||||
 | 
			
		||||
	parser.expect<std::string>("(define");
 | 
			
		||||
	parser.expect<std::string>("(");
 | 
			
		||||
	parser.expect<std::string>("define");
 | 
			
		||||
	parseSection(parser);
 | 
			
		||||
	parser.expect<std::string>(")");
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -97,7 +97,8 @@ const std::vector<std::unique_ptr<Action>> &Domain::actions() const
 | 
			
		||||
 | 
			
		||||
void Domain::parseSection(utils::Parser &parser)
 | 
			
		||||
{
 | 
			
		||||
	parser.expect<std::string>("(:");
 | 
			
		||||
	parser.expect<std::string>("(");
 | 
			
		||||
	parser.expect<std::string>(":");
 | 
			
		||||
 | 
			
		||||
	const auto sectionIdentifier = parser.parseIdentifier(isIdentifier);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -39,8 +39,12 @@ Predicate &Predicate::parseDeclaration(utils::Parser &parser, Context &context)
 | 
			
		||||
 | 
			
		||||
	// Parse arguments
 | 
			
		||||
	while (parser.currentCharacter() != ')')
 | 
			
		||||
	{
 | 
			
		||||
		Variable::parseTyped(parser, context, predicate->m_arguments);
 | 
			
		||||
 | 
			
		||||
		parser.skipWhiteSpace();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	parser.expect<std::string>(")");
 | 
			
		||||
 | 
			
		||||
	const auto predicateArity = predicate->m_arguments.size();
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,7 @@ class PDDLParserTests : public ::testing::Test
 | 
			
		||||
		PDDLParserTests()
 | 
			
		||||
		:	m_blocksworldDomainFile(readFile("data/blocksworld-domain.pddl")),
 | 
			
		||||
			m_storageDomainFile(readFile("data/storage-domain.pddl")),
 | 
			
		||||
			m_whiteSpaceTestFile(readFile("data/white-space-test.pddl")),
 | 
			
		||||
			m_woodworkingDomainFile(readFile("data/woodworking-domain.pddl"))
 | 
			
		||||
		{
 | 
			
		||||
		}
 | 
			
		||||
@@ -35,6 +36,7 @@ class PDDLParserTests : public ::testing::Test
 | 
			
		||||
 | 
			
		||||
		std::stringstream m_blocksworldDomainFile;
 | 
			
		||||
		std::stringstream m_storageDomainFile;
 | 
			
		||||
		std::stringstream m_whiteSpaceTestFile;
 | 
			
		||||
		std::stringstream m_woodworkingDomainFile;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -191,3 +193,17 @@ TEST_F(PDDLParserTests, ParseConstants)
 | 
			
		||||
		FAIL() << e.what();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
TEST_F(PDDLParserTests, ParseWithWhiteSpace)
 | 
			
		||||
{
 | 
			
		||||
	try
 | 
			
		||||
	{
 | 
			
		||||
		ASSERT_NO_THROW(plasp::pddl::Description::fromStream(m_whiteSpaceTestFile));
 | 
			
		||||
	}
 | 
			
		||||
	catch (const std::exception &e)
 | 
			
		||||
	{
 | 
			
		||||
		FAIL() << e.what();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										215
									
								
								tests/data/white-space-test.pddl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										215
									
								
								tests/data/white-space-test.pddl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,215 @@
 | 
			
		||||
(define (domain woodworking)
 | 
			
		||||
  (:requirements :typing :durative-actions :numeric-fluents)
 | 
			
		||||
  (:types
 | 
			
		||||
      acolour awood woodobj machine 
 | 
			
		||||
      surface treatmentstatus - object
 | 
			
		||||
      highspeed-saw glazer grinder immersion-varnisher
 | 
			
		||||
      planer saw spray-varnisher - machine
 | 
			
		||||
      board part - woodobj)
 | 
			
		||||
 | 
			
		||||
  (:constants
 | 
			
		||||
              verysmooth smooth rough - surface
 | 
			
		||||
              varnished glazed untreated colourfragments - treatmentstatus
 | 
			
		||||
              natural - acolour)
 | 
			
		||||
 | 
			
		||||
  (:predicates 
 | 
			
		||||
            (idle ?machine - machine)
 | 
			
		||||
            (unused ?obj - part)
 | 
			
		||||
            (available ?obj - woodobj)
 | 
			
		||||
 | 
			
		||||
            (surface-condition ?obj - woodobj ?surface - surface)
 | 
			
		||||
            (treatment ?obj - part ?treatment - treatmentstatus)
 | 
			
		||||
            (colour ?obj - part ?colour - acolour)
 | 
			
		||||
            (wood ?obj - woodobj ?wood - awood)
 | 
			
		||||
 | 
			
		||||
            (in-highspeed-saw ?b - board ?m - highspeed-saw)
 | 
			
		||||
            (empty ?m - highspeed-saw)
 | 
			
		||||
            (has-colour ?machine - machine ?colour - acolour)
 | 
			
		||||
            (grind-treatment-change ?old ?new - treatmentstatus)
 | 
			
		||||
            (is-smooth ?surface - surface))
 | 
			
		||||
      
 | 
			
		||||
  (:functions
 | 
			
		||||
            (board-size ?board - board) 
 | 
			
		||||
            (goal-size ?obj - part))
 | 
			
		||||
 | 
			
		||||
  (:durative-action do-immersion-varnish
 | 
			
		||||
    :parameters (?x - part ?m - immersion-varnisher 
 | 
			
		||||
                 ?newcolour - acolour ?surface - surface)
 | 
			
		||||
    :duration (= ?duration 10)
 | 
			
		||||
    :condition (and
 | 
			
		||||
            (at start (idle ?m))
 | 
			
		||||
            (at start (available ?x))
 | 
			
		||||
            (at start (surface-condition ?x ?surface))
 | 
			
		||||
            (at start (is-smooth ?surface))
 | 
			
		||||
            (at start (has-colour ?m ?newcolour))
 | 
			
		||||
            (at start (treatment ?x untreated)))
 | 
			
		||||
    :effect (and 
 | 
			
		||||
            (at start (not (idle ?m)))
 | 
			
		||||
            (at start (not (available ?x)))
 | 
			
		||||
            (at start (not (treatment ?x untreated)))
 | 
			
		||||
            (at start (not (colour ?x natural)))
 | 
			
		||||
            (at end (idle ?m))
 | 
			
		||||
            (at end (available ?x))
 | 
			
		||||
            (at end (treatment ?x varnished))
 | 
			
		||||
            (at end (colour ?x ?newcolour))))
 | 
			
		||||
 | 
			
		||||
  (:durative-action do-spray-varnish
 | 
			
		||||
    :parameters (?x - part ?m - spray-varnisher 
 | 
			
		||||
                 ?newcolour - acolour ?surface - surface)
 | 
			
		||||
    :duration (= ?duration (goal-size ?x))
 | 
			
		||||
    :condition (and
 | 
			
		||||
            (at start (idle ?m))
 | 
			
		||||
            (at start (available ?x))
 | 
			
		||||
            (at start (surface-condition ?x ?surface))
 | 
			
		||||
            (at start (is-smooth ?surface))
 | 
			
		||||
            (at start (has-colour ?m ?newcolour))
 | 
			
		||||
            (at start (treatment ?x untreated)))
 | 
			
		||||
    :effect (and 
 | 
			
		||||
            (at start (not (idle ?m)))
 | 
			
		||||
            (at start (not (available ?x)))
 | 
			
		||||
            (at start (not (treatment ?x untreated)))
 | 
			
		||||
            (at start (not (colour ?x natural)))
 | 
			
		||||
            (at end (idle ?m))
 | 
			
		||||
            (at end (available ?x))
 | 
			
		||||
            (at end (treatment ?x varnished))
 | 
			
		||||
            (at end (colour ?x ?newcolour))))
 | 
			
		||||
 | 
			
		||||
  (:durative-action do-glaze
 | 
			
		||||
    :parameters (?x - part ?m - glazer 
 | 
			
		||||
                 ?newcolour - acolour)
 | 
			
		||||
    :duration (= ?duration (+ (goal-size ?x) 5))
 | 
			
		||||
    :condition (and
 | 
			
		||||
            (at start (idle ?m))
 | 
			
		||||
            (at start (available ?x))
 | 
			
		||||
            (at start (has-colour ?m ?newcolour))
 | 
			
		||||
            (at start (treatment ?x untreated)))
 | 
			
		||||
    :effect (and 
 | 
			
		||||
            (at start (not (idle ?m)))
 | 
			
		||||
            (at start (not (available ?x)))
 | 
			
		||||
            (at start (not (treatment ?x untreated)))
 | 
			
		||||
            (at start (not (colour ?x natural)))
 | 
			
		||||
            (at end (idle ?m))
 | 
			
		||||
            (at end (available ?x))
 | 
			
		||||
            (at end (treatment ?x glazed))
 | 
			
		||||
            (at end (colour ?x ?newcolour))))
 | 
			
		||||
 | 
			
		||||
  (:durative-action do-grind
 | 
			
		||||
    :parameters (?x - part ?m - grinder ?oldsurface - surface
 | 
			
		||||
                 ?oldcolour - acolour 
 | 
			
		||||
                 ?oldtreatment ?newtreatment - treatmentstatus) 
 | 
			
		||||
    :duration (= ?duration (* 3 (goal-size ?x)))
 | 
			
		||||
    :condition (and 
 | 
			
		||||
            (at start (idle ?m))
 | 
			
		||||
            (at start (available ?x))
 | 
			
		||||
            (at start (surface-condition ?x ?oldsurface))
 | 
			
		||||
            (at start (is-smooth ?oldsurface)) 
 | 
			
		||||
            (at start (colour ?x ?oldcolour))
 | 
			
		||||
            (at start (treatment ?x ?oldtreatment))
 | 
			
		||||
            (at start (grind-treatment-change ?oldtreatment ?newtreatment)))
 | 
			
		||||
    :effect (and
 | 
			
		||||
            (at start (not (idle ?m)))
 | 
			
		||||
            (at start (not (available ?x)))
 | 
			
		||||
            (at start (not (surface-condition ?x ?oldsurface)))
 | 
			
		||||
            (at start (not (treatment ?x ?oldtreatment)))
 | 
			
		||||
            (at start (not (colour ?x ?oldcolour)))
 | 
			
		||||
            (at end (idle ?m))
 | 
			
		||||
            (at end (available ?x))
 | 
			
		||||
            (at end (surface-condition ?x verysmooth))
 | 
			
		||||
            (at end (treatment ?x ?newtreatment))
 | 
			
		||||
            (at end (colour ?x natural))))
 | 
			
		||||
 | 
			
		||||
  (:durative-action do-plane
 | 
			
		||||
    :parameters (?x - part ?m - planer ?oldsurface - surface
 | 
			
		||||
                 ?oldcolour - acolour ?oldtreatment - treatmentstatus) 
 | 
			
		||||
    :duration (= ?duration (* 2 (goal-size ?x)))
 | 
			
		||||
    :condition (and 
 | 
			
		||||
            (at start (idle ?m))
 | 
			
		||||
            (at start (available ?x))
 | 
			
		||||
            (at start (surface-condition ?x ?oldsurface))
 | 
			
		||||
            (at start (treatment ?x ?oldtreatment))
 | 
			
		||||
            (at start (colour ?x ?oldcolour)))
 | 
			
		||||
    :effect (and
 | 
			
		||||
            (at start (not (idle ?m)))
 | 
			
		||||
            (at start (not (available ?x)))
 | 
			
		||||
            (at start (not (surface-condition ?x ?oldsurface)))
 | 
			
		||||
            (at start (not (treatment ?x ?oldtreatment)))
 | 
			
		||||
            (at start (not (colour ?x ?oldcolour)))
 | 
			
		||||
            (at end (idle ?m))
 | 
			
		||||
            (at end (available ?x))
 | 
			
		||||
            (at end (surface-condition ?x smooth))
 | 
			
		||||
            (at end (treatment ?x untreated))
 | 
			
		||||
            (at end (colour ?x natural))))
 | 
			
		||||
 | 
			
		||||
  (:durative-action load-highspeed-saw
 | 
			
		||||
    :parameters (?b - board ?m - highspeed-saw)
 | 
			
		||||
    :duration (= ?duration 30)
 | 
			
		||||
    :condition (and
 | 
			
		||||
            (at start (idle ?m))
 | 
			
		||||
            (at start (empty ?m))
 | 
			
		||||
            (at start (available ?b)))
 | 
			
		||||
    :effect (and
 | 
			
		||||
            (at start (not (idle ?m)))
 | 
			
		||||
            (at start (not (available ?b)))
 | 
			
		||||
            (at start (not (empty ?m)))
 | 
			
		||||
            (at end (idle ?m))
 | 
			
		||||
            (at end (in-highspeed-saw ?b ?m))))
 | 
			
		||||
            
 | 
			
		||||
  (:durative-action unload-highspeed-saw
 | 
			
		||||
    :parameters (?b - board ?m - highspeed-saw)
 | 
			
		||||
    :duration (= ?duration 10)
 | 
			
		||||
    :condition (and
 | 
			
		||||
            (at start (idle ?m))
 | 
			
		||||
            (at start (in-highspeed-saw ?b ?m)))
 | 
			
		||||
    :effect (and
 | 
			
		||||
            (at start (not (idle ?m)))
 | 
			
		||||
            (at end (available ?b))
 | 
			
		||||
            (at end (not (in-highspeed-saw ?b ?m)))
 | 
			
		||||
            (at end (empty ?m))
 | 
			
		||||
            (at end (idle ?m))))
 | 
			
		||||
            
 | 
			
		||||
  (:durative-action cut-board
 | 
			
		||||
    :parameters (?b - board ?p - part ?m - highspeed-saw ?w - awood
 | 
			
		||||
                 ?surface - surface)
 | 
			
		||||
    :duration (= ?duration 10)
 | 
			
		||||
    :condition (and
 | 
			
		||||
            (at start (idle ?m))
 | 
			
		||||
            (at start (unused ?p))
 | 
			
		||||
            (at start (in-highspeed-saw ?b ?m))
 | 
			
		||||
            (at start (wood ?b ?w))
 | 
			
		||||
            (at start (surface-condition ?b ?surface))
 | 
			
		||||
            (at start (>= (board-size ?b) (goal-size ?p))))
 | 
			
		||||
    :effect (and
 | 
			
		||||
            (at start (not (idle ?m)))
 | 
			
		||||
            (at start (not (unused ?p)))
 | 
			
		||||
            (at start (decrease (board-size ?b) (goal-size ?p)))
 | 
			
		||||
            (at end (idle ?m))
 | 
			
		||||
            (at end (available ?p))
 | 
			
		||||
            (at end (wood ?p ?w))
 | 
			
		||||
            (at end (surface-condition ?p ?surface))
 | 
			
		||||
            (at end (colour ?p natural)) 
 | 
			
		||||
            (at end (treatment ?p untreated)))) 
 | 
			
		||||
 | 
			
		||||
  (:durative-action do-saw
 | 
			
		||||
    :parameters (?b - board ?p - part ?m - saw ?w - awood
 | 
			
		||||
                 ?surface - surface)
 | 
			
		||||
    :duration (= ?duration 30)
 | 
			
		||||
    :condition (and 
 | 
			
		||||
            (at start (idle ?m))
 | 
			
		||||
            (at start (unused ?p))
 | 
			
		||||
            (at start (available ?b))
 | 
			
		||||
            (at start (wood ?b ?w))
 | 
			
		||||
            (at start (surface-condition ?b ?surface))
 | 
			
		||||
            (at start (>= (board-size ?b) (goal-size ?p))))
 | 
			
		||||
    :effect (and
 | 
			
		||||
            (at start (not (idle ?m)))
 | 
			
		||||
            (at start (not (unused ?p)))
 | 
			
		||||
            (at start (not (available ?b)))
 | 
			
		||||
            (at end (decrease (board-size ?b) (goal-size ?p)))
 | 
			
		||||
            (at end (idle ?m))
 | 
			
		||||
            (at end (available ?p))
 | 
			
		||||
            (at end (available ?b))
 | 
			
		||||
            (at end (wood ?p ?w))
 | 
			
		||||
            (at end (surface-condition ?p ?surface))
 | 
			
		||||
            (at end (colour ?p natural)) 
 | 
			
		||||
            (at end (treatment ?p untreated)))) 
 | 
			
		||||
)
 | 
			
		||||
		Reference in New Issue
	
	Block a user