# T.2. Tasks with Operators, Exceptions and OOP The programming tasks for this block are as follows: 1. ‹machine.*› – a simple register machine simulator [6pt], 2. ‹natural.*› – arbitrary-size natural numbers [9pt], 3. ‹parser.*› – parsing simplified XML [9pt], 4. ‹complex.*› – arbitrary-precision complex numbers [12pt]. The first task only relies on knowledge from the first block and you should be able to start working on it immediately. Tasks 2 and 4 additionally require operator overloading (chapter 5) and basic understanding of exceptions (chapter 6). Finally, task 3 needs ‹unique_ptr› (chapter 7) and virtual dispatch (chapter 8), but the parser itself (and hence ‹xml_validate›) can be implemented with knowledge from block 1 alone. The verity tests for ‹xml_validate› will run even if the sanity for ‹xml_parse› and/or ‹xml_print› fails, so that you can start working on the parser immediately.