I've opted for a different solution in the meantime but here's what I had in mind earlier:
I'd parse the script into structures similar to this:
struct FUNCTION_CALL {
string: NameOfTheFunctionToCall;
strings[]: Parameters;
};
I'd look up the address (untyped pointer), parameter list and parameter types of the FUNCTION_CALL.NameOfTheFunctionToCall from a list of funcs available to script.
Finally I would convert the parameters from that array of strings I parsed from the file and put them into registers prior to calling the function via assembler.
No RTTI was involved in this option, but I've opted for RTTI in current implementation with classes and inheritance and I can do a lot more and with less code. It's more of compiled code and potentially slower but fuck it.
Asus, B550, 3700X, 3060, 32GB.