blob: ff61bb86ea4f1a9b7f2534a195587b5e18ec524c [file] [log] [blame]
/*=============================================================================
Copyright (c) 2001-2010 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
=============================================================================*/
#include <boost/config/warning_disable.hpp>
#include <input/sexpr.hpp>
#include <input/parse_sexpr_impl.hpp>
#include <utree/io.hpp>
#include <iostream>
#include <fstream>
inline std::ostream& println(std::ostream& out, scheme::utree const& val)
{
out << val << std::endl;
return out;
}
void test(std::string const& in, std::string const& file)
{
scheme::utree result;
if (scheme::input::parse_sexpr(in, result, file))
{
std::cout << "success: ";
println(std::cout, result);
std::cout << std::endl;
}
else
{
std::cout << "parse error" << std::endl;
}
}
///////////////////////////////////////////////////////////////////////////////
// Main program
///////////////////////////////////////////////////////////////////////////////
int main()
{
test("(abc def)", "ok.sexpr");
test("(abc (123 456) def)", "ok.sexpr");
test("(abc \n(\"a string\" 456) \ndef)", "ok.sexpr");
test("(abc \n(\"a string\" 456 \ndef)", "missing close paren.sexpr");
test("(abc \n(\"a string 456) \ndef)", "missing double quote.sexpr");
test("(abc \n(\"a string\" 0xggg) \ndef)", "erronoeus hex.sexpr");
test("(abc \n(\"a \\zstring\" 999) \ndef)", "erronoeus escape.sexpr");
test("(abc \n(\"a \\uzstring\" 999) \ndef)", "erronoeus escape.sexpr");
return 0;
}