arser collect the data for us into C++ structs as it traverses
        the input stream. Ideally, Spirit X3 grammars are fully attributed and declared
        in such a way that you do not have to add any imperative code and there should
        be no need for semantic actions at all. The parser simply works as declared
        and you get your data back as a result.
      </p>
<p>
        However, there are certain cases where there's no way to avoid introducing
        imperative code. But semantic action