abstract syntax graphs for domain specific languages