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.
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)
)
)
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