diff --git a/xo-reader/CMakeLists.txt b/xo-reader/CMakeLists.txt index 0fb90c0c..8c88ff68 100644 --- a/xo-reader/CMakeLists.txt +++ b/xo-reader/CMakeLists.txt @@ -12,7 +12,7 @@ xo_cxx_toplevel_options3() # ---------------------------------------------------------------- # c++ settings -set(PROJECT_CXX_FLAGS "") +set(PROJECT_CXX_FLAGS "-ftemplate-backtrace-limit=0") #set(PROJECT_CXX_FLAGS "-fconcepts-diagnostics-depth=2") add_definitions(${PROJECT_CXX_FLAGS}) @@ -28,3 +28,5 @@ xo_export_cmake_config(${PROJECT_NAME} ${PROJECT_VERSION} ${PROJECT_NAME}Targets # must come after them # add_subdirectory(docs) + +# end CMakeLists.txt diff --git a/xo-reader/docs/README b/xo-reader/docs/README index ea8a9a25..6aff5d41 100644 --- a/xo-reader/docs/README +++ b/xo-reader/docs/README @@ -10,22 +10,22 @@ standalone build +------------------------------------------------->| .build/docs/Doxyfile | | +----------------------+ | ^ - | (cmake | + | (cmake) | | /------------/ | | - | +---------------------------------------+ +-----------------+ - +---->| doxygen |--->| .build/docs/dox | - | | $PREFIX/share/xo-macros/Doxyfile.in | | +- html/ | - | +---------------------------------------+ | +- xml/ | - | +-----------------+ - | | - | /------------/ - | | - | v - | +---------------------------------------+ +--------------------+ - \---->| sphinx |--->| .build/docs/sphinx | - | +- conf.py | | +- html/ | - | +- _static/ | +--------------------+ + | +---------------------------------------+ +-----------------+ + +---->| doxygen |--------->| .build/docs/dox | + | | $PREFIX/share/xo-macros/Doxyfile.in | (doxygen)| +- html/ | + | +---------------------------------------+ | +- xml/ | + | +-----------------+ + | | + | |(sphinx) + | | + | v + | +---------------------------------------+ +--------------------+ + \---->| sphinx |------->| .build/docs/sphinx | + | +- conf.py | | +- html/ | + | +- _static/ | +--------------------+ | +- *.rst | +---------------------------------------+ diff --git a/xo-reader/docs/install.rst b/xo-reader/docs/install.rst index b751ab10..0860150f 100644 --- a/xo-reader/docs/install.rst +++ b/xo-reader/docs/install.rst @@ -49,8 +49,8 @@ Minimal Dependencies .. _xo-subsys source: https://github.com/rconybea/subsys .. _xo-cmake source: https://github.com/rconybea/xo-cmake -Installing from source ----------------------- +Building from source +-------------------- Install scripts for XO libraries depend on helper scripts installed from `xo-cmake`. @@ -135,12 +135,11 @@ CMake Support To use built-in cmake support, when using ``xo-reader`` from another project: -Make sure ``PREFIX/lib/cmake`` is searched by cmake (if necessary, include it in ``CMAKE_PREFIX_PATH``) +Make sure ``PREFIX/lib/cmake`` is searched by cmake (for example include it in ``CMAKE_PREFIX_PATH``) Add to your ``CMakeLists.txt``: .. code-block:: cmake FindPackage(xo_reader CONFIG REQUIRED) - target_link_libraries(mytarget INTERFACE xo_reader) diff --git a/xo-reader/examples/exprreplxx/exprreplxx.cpp b/xo-reader/examples/exprreplxx/exprreplxx.cpp index b9770594..4b3660e4 100644 --- a/xo-reader/examples/exprreplxx/exprreplxx.cpp +++ b/xo-reader/examples/exprreplxx/exprreplxx.cpp @@ -61,6 +61,10 @@ int main() { using namespace replxx; using namespace xo::scm; + using xo::ast::Expression; + using xo::print::ppconfig; + using xo::print::ppstate_standalone; + using xo::rp; using namespace std; using span_type = xo::scm::span; @@ -92,7 +96,10 @@ main() { auto [expr, consumed, psz] = rdr.read_expr(input, eof); if (expr) { - cout << expr << endl; + ppconfig ppc; + ppstate_standalone pps(&cout, 0, &ppc); + + pps.prettyn(expr); } input = input.after_prefix(consumed); @@ -103,7 +110,10 @@ main() { auto [expr, _1, _2] = rdr.read_expr(input, true /*eof*/); if (expr) { - cout << expr << endl; + ppconfig ppc; + ppstate_standalone pps(&cout, 0, &ppc); + + pps.prettyn>(rp(expr)); } rx.history_save("repl_history.txt"); diff --git a/xo-reader/include/xo/reader/define_xs.hpp b/xo-reader/include/xo/reader/define_xs.hpp index 0c6d46c8..a2c2616a 100644 --- a/xo-reader/include/xo/reader/define_xs.hpp +++ b/xo-reader/include/xo/reader/define_xs.hpp @@ -8,6 +8,7 @@ #include "xo/expression/DefineExpr.hpp" #include "xo/expression/ConvertExpr.hpp" #include "exprstate.hpp" +#include "xo/indentlog/print/ppdetail_atomic.hpp" //#include namespace xo { @@ -117,6 +118,12 @@ namespace xo { rp cvt_expr_; }; } /*namespace scm*/ + +#ifndef ppdetail_atomic + namespace print { + PPDETAIL_ATOMIC(xo::scm::defexprstatetype); + } +#endif } /*namespace xo*/ diff --git a/xo-reader/include/xo/reader/exprstate.hpp b/xo-reader/include/xo/reader/exprstate.hpp index f6d592db..83b459c8 100644 --- a/xo-reader/include/xo/reader/exprstate.hpp +++ b/xo-reader/include/xo/reader/exprstate.hpp @@ -214,6 +214,13 @@ namespace xo { return os; }; } /*namespace scm*/ + +#ifndef ppdetail_atomic + namespace print { + PPDETAIL_ATOMIC(xo::scm::exprstatetype); + PPDETAIL_ATOMIC(xo::scm::exprstate); + } /*namespace print*/ +#endif } /*namespace xo*/ /** end exprstate.hpp **/ diff --git a/xo-reader/include/xo/reader/exprstatestack.hpp b/xo-reader/include/xo/reader/exprstatestack.hpp index b4e57449..ce7bdc1d 100644 --- a/xo-reader/include/xo/reader/exprstatestack.hpp +++ b/xo-reader/include/xo/reader/exprstatestack.hpp @@ -7,6 +7,7 @@ #include "exprstate.hpp" #include "xo/indentlog/print/vector.hpp" +#include "xo/indentlog/print/pretty.hpp" namespace xo { namespace scm { @@ -64,6 +65,21 @@ namespace xo { return os; } } /*namespace scm*/ + +#ifndef ppdetail_atomic + namespace print { + template <> + struct ppdetail { + static bool print_upto(ppstate * pps, const xo::scm::exprstatestack * x) { + return ppdetail_atomic::print_upto(pps, x); + } + static void print_pretty(ppstate * pps, const xo::scm::exprstatestack * x) { + ppdetail_atomic::print_pretty(pps, x); + } + }; + } +#endif + } /*namespace xo*/ diff --git a/xo-reader/include/xo/reader/parserstatemachine.hpp b/xo-reader/include/xo/reader/parserstatemachine.hpp index 7b6d485b..decc1e6c 100644 --- a/xo-reader/include/xo/reader/parserstatemachine.hpp +++ b/xo-reader/include/xo/reader/parserstatemachine.hpp @@ -87,6 +87,12 @@ namespace xo { return os; } } /*namespace scm*/ + +#ifndef ppdetail_atomic + namespace print { + PPDETAIL_ATOMIC(xo::scm::parserstatemachine); + } +#endif } /*namespace xo*/ diff --git a/xo-reader/include/xo/reader/progress_xs.hpp b/xo-reader/include/xo/reader/progress_xs.hpp index b162d3ef..47d4c89a 100644 --- a/xo-reader/include/xo/reader/progress_xs.hpp +++ b/xo-reader/include/xo/reader/progress_xs.hpp @@ -132,6 +132,12 @@ namespace xo { rp rhs_; }; } /*namespace scm*/ + +#ifndef ppdetail_atomic + namespace print { + PPDETAIL_ATOMIC(xo::scm::optype); + } +#endif } /*namespace xo*/ diff --git a/xo-reader/include/xo/reader/reader.hpp b/xo-reader/include/xo/reader/reader.hpp index b155f4db..841c3a4d 100644 --- a/xo-reader/include/xo/reader/reader.hpp +++ b/xo-reader/include/xo/reader/reader.hpp @@ -7,6 +7,7 @@ #include "parser.hpp" #include "xo/expression/Expression.hpp" +#include "xo/expression/pretty_expression.hpp" #include "xo/tokenizer/tokenizer.hpp" namespace xo { diff --git a/xo-reader/src/reader/define_xs.cpp b/xo-reader/src/reader/define_xs.cpp index 85614a5b..6a8f4c7c 100644 --- a/xo-reader/src/reader/define_xs.cpp +++ b/xo-reader/src/reader/define_xs.cpp @@ -6,6 +6,7 @@ #include "expect_symbol_xs.hpp" #include "expect_expr_xs.hpp" #include "expect_type_xs.hpp" +#include "pretty_expression.hpp" namespace xo { namespace scm { diff --git a/xo-reader/src/reader/expect_expr_xs.cpp b/xo-reader/src/reader/expect_expr_xs.cpp index ed7aea54..b318966e 100644 --- a/xo-reader/src/reader/expect_expr_xs.cpp +++ b/xo-reader/src/reader/expect_expr_xs.cpp @@ -13,6 +13,7 @@ #include "progress_xs.hpp" #include "xo/expression/Lambda.hpp" #include "xo/expression/Constant.hpp" +#include "xo/expression/pretty_expression.hpp" namespace xo { using xo::ast::Constant; diff --git a/xo-reader/src/reader/exprstate.cpp b/xo-reader/src/reader/exprstate.cpp index af3fc9ff..bf30134d 100644 --- a/xo-reader/src/reader/exprstate.cpp +++ b/xo-reader/src/reader/exprstate.cpp @@ -3,9 +3,11 @@ #include "exprstate.hpp" #include "exprstatestack.hpp" #include "parserstatemachine.hpp" +#include "pretty_expression.hpp" //#include "formal_arg.hpp" #include "xo/expression/Variable.hpp" #include "xo/indentlog/print/vector.hpp" +#include "xo/indentlog/print/pretty_vector.hpp" #include //#include "define_xs.hpp" //#include "progress_xs.hpp" diff --git a/xo-reader/src/reader/paren_xs.cpp b/xo-reader/src/reader/paren_xs.cpp index 8ac163ea..950a1547 100644 --- a/xo-reader/src/reader/paren_xs.cpp +++ b/xo-reader/src/reader/paren_xs.cpp @@ -5,6 +5,7 @@ #include "exprstatestack.hpp" #include "progress_xs.hpp" #include "expect_expr_xs.hpp" +#include "xo/expression/pretty_expression.hpp" namespace xo { namespace scm { diff --git a/xo-reader/src/reader/parser.cpp b/xo-reader/src/reader/parser.cpp index 45519df3..dfa34658 100644 --- a/xo-reader/src/reader/parser.cpp +++ b/xo-reader/src/reader/parser.cpp @@ -7,6 +7,7 @@ #include "parserstatemachine.hpp" #include "define_xs.hpp" #include "exprseq_xs.hpp" +#include "pretty_expression.hpp" #include "xo/expression/DefineExpr.hpp" #include "xo/expression/Constant.hpp" #include "xo/expression/ConvertExpr.hpp" diff --git a/xo-reader/src/reader/parserstatemachine.cpp b/xo-reader/src/reader/parserstatemachine.cpp index 005c1af7..34c7cbbe 100644 --- a/xo-reader/src/reader/parserstatemachine.cpp +++ b/xo-reader/src/reader/parserstatemachine.cpp @@ -5,6 +5,7 @@ #include "parserstatemachine.hpp" #include "exprstatestack.hpp" +#include "xo/expression/pretty_expression.hpp" namespace xo { using xo::ast::LocalEnv; diff --git a/xo-reader/src/reader/progress_xs.cpp b/xo-reader/src/reader/progress_xs.cpp index 5c98ed30..fea536a7 100644 --- a/xo-reader/src/reader/progress_xs.cpp +++ b/xo-reader/src/reader/progress_xs.cpp @@ -6,6 +6,7 @@ #include "parserstatemachine.hpp" #include "xo/expression/AssignExpr.hpp" #include "xo/expression/Apply.hpp" +#include "xo/expression/pretty_expression.hpp" namespace xo { using xo::ast::Expression; diff --git a/xo-reader/src/reader/sequence_xs.cpp b/xo-reader/src/reader/sequence_xs.cpp index 39e38365..365b9747 100644 --- a/xo-reader/src/reader/sequence_xs.cpp +++ b/xo-reader/src/reader/sequence_xs.cpp @@ -6,6 +6,7 @@ #include "let1_xs.hpp" #include "xo/expression/DefineExpr.hpp" #include "xo/expression/Sequence.hpp" +#include "xo/expression/pretty_expression.hpp" namespace xo { using xo::ast::DefineExpr;