Query Parser Callstack

Gary Willoughby via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Sep 2 11:10:18 PDT 2014


On Monday, 1 September 2014 at 21:00:46 UTC, Nordlöw wrote:
> Are there some nice traits or internals to query the current 
> call stack for address or perhaps even their (mangled) names. 
> I'm mostly interested in using this to detect infinite 
> recursions in my recursive descent parser. This provided that 
> my parser slice hasn't changed since last call to the same 
> function.

I've no idea how it is used but '_d_traceContext' might be of use:

import std.stdio;

int foo(int n)
{
	writefln("&foo: 0x%X", &foo);
	writefln("%s", _d_traceContext(&foo));

	return n;
}

extern(C) Throwable.TraceInfo _d_traceContext(void* ptr = null);

void main(string[] args)
{
	auto x = foo(100);
}

Found in object_.d in the druntime repo.


More information about the Digitalmars-d-learn mailing list