Examples

See xo-reader/examples for built examples

 1 #include "xo/reader/reader.h"
 2
 3 int
 4 main() {
 5     using namespace xo::scm;
 6     using namespace std;
 7
 8     reader rdr;
 9     rdr.begin_translation_unit();
10
11     bool eof = false;
12     while (!eof) {
13         auto input = ins.read_some();
14
15         eof = ins.eof();
16
17         for (auto rem = input; !rem.empty();) {
18             // res: (parsed-expr, used)
19             auto [expr, rem2, _] = rdr.read_expr(rem, eof);
20
21             if (expr) {
22                  cout << expr << endl;
23             }
24
25             rem = rem.suffix_after(rem2);
26         }
27     }
28
29     if (rdr.has_prefix()) {
30         cout << "error: unparsed input after expression" << endl;
31     }
32 }