Math Lexer

To use the math lexer, you should define a context first:

val context = Context()

Then, call the lexer with this context:

val result = MathLexer("1 + 2").execute(context) // 3

Thanks to the context, you can pass variables:

val context = Context(
    mapOf(
        "x" to IntegerFactory.instantiate(2)
    )
)
val result = MathLexer("x + 3").execute(context) // 5