On Fri, May 01, 2020 at 05:44:27PM +0000, tsbockman via Digitalmars-d-learn 
wrote:
> On Friday, 1 May 2020 at 15:42:54 UTC, Baby Beaker wrote:
> > There is a Python eval() equivalent in Dlang working in Runtime?
> 
> No, and there almost certainly never will be due to fundamental
> differences between the languages. Depending on your goal, the closest
> alternatives are using the string mixin language feature, writing a
> parser (std.conv or certain DUB packages can help), or embedding a
> scripting engine such as AngelScript or Squirrel into your program.
[...]

Actually, if you're willing to ship a working copy of dmd with your
program, you *could* compile D code on-the-fly and dynamically load it
as a dll/shared library. (I have done this before in one of my projects,
which generates D code based on user input then invokes dmd to compile
it into a shared lib, then loads the shared lib and runs the compiled
code.)

It will be restricted to function calls and static variables, though; it
will not be possible to access local variables in the scope where the
eval() is called (unless you explicitly pass them through the dll/.so
interface, i.e., as function parameters), and it will not be possible to
eval() snippets smaller than a function.


T

-- 
The most powerful one-line C program: #include "/dev/tty" -- IOCCC

Reply via email to