Boost logo

Boost Users :

Subject: [Boost-users] How to implement a visitor pattern over an AST
From: Michael Powell (mwpowellhtx_at_[hidden])
Date: 2018-12-10 19:04:13


Hello,

I have an AST successfully building, generating text file, and
subsequently Spirit Qi parsing for verification purposes.

Now I want to implement a visitor pattern over that AST, somehow...
For "calculators" and such, "evaluating" those expressions is one
thing; however, this AST is not that. It is closer akin to a parsed
Xml or Json model/tree.

In other words, I'd like for it to feel sort of like an iterator if
that's even possible. It should have contextual awareness where it is
at all times, etc, perhaps "incrementing" is a depth first analysis.

In particular I have in mind to iterate the expected and actual AST
results in order to perform the verification. In other words, I might
do something like this:

auto expected_it = ast_visitor{&expected};
auto actual_it = ast_visitor{&actual};

REQUIRE(expected_it);
REQUIRE(actual_it);

REQUIRE(*expected_it == *actual_it);

// Rinse and repeat
++expected_it;
++actual_it;
REQUIRE(*expected_it == *actual_it);

I wonder if something like this is even possible from the Boost
libraries? Or interested to hear any insights on the subject.

For that matter, I wonder it is more appropriate to simply implement
the logical operators.

Thanks!

Michael Powell


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net