On 2018-07-28 16:59, Robert M. Münch wrote:
Hi, I'm seeking for ideas/comments/experiences how to best implement a
DSL in D.
What I would like to do is something like this:
... my D code ...
my-dsl {
... my multi-line DSL code ...
trade 100 shares(x) when (time < 20:00) and timingisright()
}
... my D code ...
Some things that circle in my head:
* Can the D parser somehow be missued for a DSL? So I can skip all the
generic features for types etc.?
Yes. But it would require your DSL to be syntactically valid D code (but
not semantically). DMD can be used as a library but is lacking quite a
bit i this regard. For example, you cannot get the original source code
from an AST node because the AST node only stores where in the source
code the node starts, not where it ends. Some AST nodes doesn't contain
location information at all. Also, unless you want to write the DSL in a
string literal you need to build some kind of pre-processor that
converts the DSL to valid D code.
--
/Jacob Carlborg