Evaluating variables
So far, our parser can evaluate static expressions, starting with simple ones such as 3 (which evaluates, what a surprise, to 3) up to arbitrarily complicated ones such as (5 + 3.14) * (14 + (29 - 2 * 3.918)) (which, by the way, evaluates to 286.23496). However, all of these expressions are static; they will always evaluate to the same result.
In order to make this more dynamic, we will now extend our grammar to allow variables. An example of an expression with variables is 3 + a, which could then be evaluated multiple times with different values for a.
This time, let's start by modifying the object model for the syntax tree. First, we'll need a new node type, Packt\Chp8\DSL\AST\Variable, allowing for example the 3 + a expression ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access