Compilador SAS

Preâmbulo

Desenvolva um compilador completo que traduza descrições de planejamento em PDDL para o formato SAS. Seu programa deverá receber como entrada dois arquivos PDDL: primeiro o arquivo de domínio, seguido pelo arquivo de problema.

Certifique-se de aplicar as mesmas técnicas de análise léxica e sintática utilizadas em exercícios anteriores. O compilador deve processar corretamente a estrutura dos arquivos e gerar a saída no formato adequado para SAS.

Entrada

domain.pddl

(define (domain d01)
	(:predicates
		(HelloWorld)
		(OlaMundo)
	)
	(:action falar_ola_mundo
		:parameters ()
		:precondition (not(HelloWorld))
		:effect (HelloWorld)
	)
)

problem.pddl

(define (problem p01)
	(:domain d01)
	(:init
		(not(HelloWorld))
		(not(OlaMundo))
	)
	(:goal
		(HelloWorld)
	)
)

Saída

O compilador deve imprimir na saída padrão o arquivo SAS válido equivalente aos arquivos PDDL passados como parâmetro.

Caso exista algum erro de sintaxe o compilador deverá imprimir na saída padrão: Rejected: <file> at line N . Trocando <file> pelo arquivo que contém o erro e N pelo número da linha na qual o primeiro erro foi encontrado.

Author: Bruno Ribas, Bruno Ribeiro, Carlos Alves, André Emanoel, Leonardo Gonçalves