digraph MaximaTopLevel {
 startup [label="user::run"];
 toplevel [label="macsyma-top-level"];
 replmain [label="continue\n1. dbm-read parses the input\n2. the eval path begins mathematical work."];
 dbmread [label="dbm-read"];
 firstevalcall [label="toplevel-macsyma-eval\nUsed in code via $% as set in\n (setq $% (toplevel-macsyma-eval $__))"];
 display [label="displa\nUses linear-displa if display2d is false"];
 startup -> toplevel;
 toplevel -> replmain;
 replmain -> dbmread [color=red, fontcolor=red, fontsize=10, label="Parse input"];
 dbmread -> replmain [color=blue, fontcolor=blue, fontsize=10,label="Return parsed input"];
 dbmread -> mread;
 mreadraw [label="mread-raw"];
 peekonetokeng [label="peek-one-token-g"];
 scanonetokeng [label="scan-one-token-g"];
 readcommandtoken [label="read-command-token"];
 gobblewhitespace [label="gobble-whitespace"];
 parsetyipeek [label="parse-tyipeek"];
 readcommandtokenaux [label="read-command-token-aux"];
 mread -> mreadraw;
 mreadraw -> peekonetokeng;
 peekonetokeng -> scanonetokeng;
 scanonetokeng -> readcommandtoken;
 readcommandtoken -> gobblewhitespace;
 gobblewhitespace -> parsetyipeek;
 gobblewhitespace -> readcommandtokenaux;
 replmain -> firstevalcall [color=red, fontcolor=red, fontsize=10, label="Do eval"];
 firstevalcall->replmain [color=blue, fontcolor=blue, fontsize=10, label="Return"];
 mevalmacro [label="meval*"];
 firstevalcall -> mevalmacro;
 mevalmacro -> meval;
 meval -> simplifya;
 simplifya -> meval1;
 replmain -> display [color=red, fontcolor=red, fontsize=10, label="Send to display"];
 display -> replmain [color=blue, fontcolor=blue, fontsize=10,label="Return after display"]; 
 display -> checkrat;
 display -> dimension;
 dimensionatom [label="dimension-atom"];
 dimensionparen [label="dimension-paren"];
 dimensionarray [label="dimension-array"];
 dimensionfunction [label="dimension-function"];
 dimension -> dimensionatom;
 dimension -> dimensionparen;
 dimension -> dimensionarray;
 dimension -> dimensionfunction;
 dimensionfunction -> dimension;
 display -> checkbreak;
 dimension -> checkbreak;
 display -> output;
 lineardisplay [label="linear-displa"];
 display -> lineardisplay;
 } 
