/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 * 
 * File:   aux.h
 * Author: pgess <v.melnychenko@xreate.org>
 *
 * Created on June 26, 2016, 6:49 PM
 */

#ifndef AUX_H
#define AUX_H

#include "ast.h"
#include "transcendlayer.h"

#include <list>
#include <boost/format.hpp>

namespace xreate { namespace analysis {

/**
 * \brief Compiles Xreate expression into ASP format recognizable by an external ASP solver.
 * @param e expression
 * @return textual expression's representation in an ASP format.
 */
std::list<std::string> compile(const Expression &e);
std::list<std::string> compileNeg(const Expression &e);
std::list<std::string> multiplyLists(std::list<std::list<std::string>> &&lists);

boost::format writeSymbolNode(const SymbolNode& symbol);

}} //end of xreate::analysis

#endif /* AUX_H */

