Book Image

C++17 By Example

By : Stefan Björnander
Book Image

C++17 By Example

By: Stefan Björnander

Overview of this book

<p>C++ is a general-purpose programming language built with a bias towards embedded programming and systems programming. Over the years, C++ has evolved and is used to develop software for many different sectors. Given its versatility and robustness, C++is a wonderful language to start your coding journey with. This book covers exciting projects built in C++ that show how to implement the language in different scenarios. While developing these projects, you will not only learn the language constructs but also how you can use C++ to meet your software requirements.</p> <p>The book starts with a brief introduction to C++ language constructs where you will learn essential concepts that are required to understand the projects covered in the book. The first module will build a library management system that will teach you how to perform efficient file handling and use pointers in your software. To give you a taste of GUI programming, the next module will build graphical applications using Qt 5. You will then be introduced to game design in C++ and build two interesting games. The final module will teach you how C++ can be used to create a Domain Specific Language.</p> <p>After reading this book, you will have mastered core programming concepts in C++, and how to implement them effectively.</p>
Table of Contents (17 chapters)
Title Page
Dedication
Packt Upsell
Contributors
Preface
Index

The evaluator


The evaluator evaluates a sequence of directives and generates a list of actions that are later read and executed by the viewer. The evaluation starts with the directive on the first line, which is a jump to the start address of the main function. The evaluation stops when it encounters a return directive without a return address. In that case, we have reached the end of main and the execution shall be finished.

The evaluator works against a stack of values. Each time a value has been evaluated it is pushed on the stack, and each time values are needed to evaluate an expression they are popped from the stack.

Evaluator.h:

#ifndef EVALUATOR_H 
#define EVALUATOR_H 
 
#include <QtWidgets> 
 
#include "Error.h" 
#include "Directive.h" 
#include "Action.h" 
#include "Function.h" 

The constructor of the Evaluator class evaluates the directive list with the help of the functions map:

class Evaluator { 
  public: 
    Evaluator(const QList<Directive>& directiveList, 
  ...