digraph { gfe [label = "file.gfe", style = "dashed", shape = "ellipse"]; gfe -> gf1 [label = " MkConcrete", style = "dashed"]; gf1 [label = "file.gf", style = "solid", shape = "ellipse"]; gf1 -> gf2 [label = " LexGF", style = "solid"]; gf2 [label = "token list", style = "solid", shape = "plaintext"]; gf2 -> gf3 [label = " ParGF", style = "solid"]; gf3 [label = "source tree", style = "solid", shape = "plaintext"]; gf3 -> gf4 [label = " SourceToGrammar", style = "solid"]; cf [label = "file.cf", style = "dashed", shape = "ellipse"]; cf -> gf4 [label = " CF.PPrCF", style = "dashed"]; ebnf [label = "file.ebnf", style = "dashed", shape = "ellipse"]; ebnf -> gf4 [label = " CF.EBNF", style = "dashed"]; gf4 [label = "GF tree", style = "solid", shape = "plaintext"]; gf4 -> gf5 [label = " Extend", style = "solid"]; gf5 [label = "inheritance-linked GF tree", style = "solid", shape = "plaintext"]; gf5 -> gf6 [label = " Rename", style = "solid"]; gf6 [label = "name-resolved GF tree", style = "solid", shape = "plaintext"]; gf6 -> gf7 [label = " CheckGrammar", style = "solid"]; gf7 [label = "type-annotated GF tree", style = "solid", shape = "plaintext"]; gf7 -> gf8 [label = " Optimize", style = "solid"]; gf8 [label = "optimized GF tree", style = "solid", shape = "plaintext"]; gf8 -> gf9 [label = " GrammarToCanon", style = "solid"]; gf9 [label = "GFC tree", style = "solid", shape = "plaintext"]; gf9 -> gfc [label = " BackOpt", style = "solid"]; gfc [label = "optimized GFC tree", style = "solid", shape = "box"]; gfc -> gf11 [label = " PrintGFC", style = "solid"]; gf11 [label = "file.gfc", style = "solid", shape = "ellipse"]; gfcc [label = "file.gfcc", style = "solid", shape = "ellipse"]; gfc -> gfcc [label = " CanonToGFCC", style = "solid"]; mcfg [label = "file.gfcm", style = "dashed", shape = "ellipse"]; gfc -> mcfg [label = " PrintGFC", style = "dashed"]; bnf [label = "file.cf", style = "dashed", shape = "ellipse"]; gfc -> bnf [label = " CF.PrLBNF", style = "dashed"]; happy [label = "file.y (Happy)", style = "dashed", shape = "ellipse"]; bnf -> happy [label = " bnfc", style = "dashed"]; bison [label = "file.y (Bison)", style = "dashed", shape = "ellipse"]; bnf -> bison [label = " bnfc", style = "dashed"]; cup [label = "parser.java (CUP)", style = "dashed", shape = "ellipse"]; bnf -> cup [label = " bnfc", style = "dashed"]; xml [label = "file.dtd (XML)", style = "dashed", shape = "ellipse"]; bnf -> xml [label = " bnfc", style = "dashed"]; cfg [label = "CFG tree", style = "solid", shape = "plaintext"]; gfc -> cfg [label = " Conversions.GFC", style = "dashed"]; cfgm [label = "file.cfgm", style = "dashed", shape = "ellipse"]; cfg -> cfgm [label = " Conversions.GFC", style = "dashed"]; srg [label = "Non-LR CFG", style = "solid", shape = "plaintext"]; cfg -> srg [label = " Speech.SRG", style = "dashed"]; gsl [label = "file.gsl", style = "dashed", shape = "ellipse"]; srg -> gsl [label = " Speech.PrGSL", style = "dashed"]; jsgf [label = "file.jsgf", style = "dashed", shape = "ellipse"]; srg -> jsgf [label = " Speech.PrJSGF", style = "dashed"]; fa [label = "DFA", style = "solid", shape = "plaintext"]; cfg -> fa [label = " Speech.CFGToFiniteState", style = "dashed"]; slf [label = "file.slf", style = "dashed", shape = "ellipse"]; fa -> slf [label = " Speech.PrSLF", style = "dashed"]; }