Based on Building Expression Evaluator with Expression Trees in C# - Part 1 ff.
digraph Compiler {
Source -> Lexer
Lexer -> Tokens
Tokens -> Semantics
Semantics -> Parser
Parser -> ExpressionTree
ExpressionTree -> Optimizer -> ExpressionTree [style=dotted]
ExpressionTree -> Emitter
Emitter -> Output
Source [shape=box]
Tokens [shape=box]
ExpressionTree [shape=box]
Output [shape=box]
}