Parse d source file by using compiler
ZombineDev via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Nov 9 02:10:46 PST 2015
On Monday, 9 November 2015 at 05:49:25 UTC, tcak wrote:
> I checked for a flag in this page
> http://dlang.org/dmd-linux.html , but couldn't have found any
> for this purpose.
>
> Is there a way to parse a d source file so it generates a tree
> in JSON, XML, or something-that-can-be-processed-easily file
> format?
>
> ---
>
> My real purpose:
>
> I need to generate hash code (e.g. MD5) for a part of source
> code (let's say a class, struct, or a function). So whether the
> codes are changed or not can be detected. As you will guess,
> comments, text formatting etc. shouldn't affect the hash result.
>
>
> Use-Case:
>
> I am writing a code generator/back up system. It will check the
> last available code file. If important changes are done in a
> specific part of code, it will increase version number by 1.
You're use case is really interesting! AFAIK, currently, the
lexer part of the DMD frontend is the only part that can be
easily used standalone. Daniel Murphy (who drove a lot of the
work towards DDMD) published the lexer on DUB:
http://code.dlang.org/packages/ddmd. However the package is
outdated, because it is based on DMD v2.067.
As the whole frontend is now in D, you should be able to import
any of the D modules and work with them, but it may not be as
easy, as their API is geared only towards the DMD driver.
I personally want to help refactor DDMD to be usable as a
library, so you can use for all sorts of cool things (like
runtime JIT, IDE support, REPL, and so on), but I'm quite busy at
the moment :(
More information about the Digitalmars-d-learn
mailing list