Python eval() equivalent in Dlang working in Runtime?

H. S. Teoh hsteoh at quickfur.ath.cx
Fri May 1 18:07:54 UTC 2020


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


More information about the Digitalmars-d-learn mailing list