昨日書いたこのコード、非末尾再帰からループにした形だけど、うまくESP/EBPを使ってくれるなら、呼び出しが無い分早く動くと思った。フィボナッチ数列をアセンブラcall無しで書ける予感。
#!/usr/bin/dmd -run import std.stdio,std.cstream,std.stream,std.string; void main(){ writefln("digraph G {"); // writefln("graph [concentrate = true];"); // writefln("node [shape=box]"); // writefln("graph [rankdir = LR];"); string parents[]=["global"]; int n=0; foreach(char[] s;din){ if(!s.length)break; int x; for(;s[x] == ' ';x++){} n = x/4; if(parents.length <= n){ writefln(parents[n-1], " -> ", s[x..$].idup.split("(")[0]); parents ~= s[x..$].idup.split("(")[0]; }else{ writefln(parents[n], " -> ", s[x..$].idup.split("(")[0]); parents = parents[0..n+1] ~ s[x..$].idup.split("(")[0]; } } writefln("}"); }