digraph MLYacc {
  size="10,7";
  mkMakeLrTable [shape = diamond, kind = functor, file = "src/mklrtable.sml"];
    mkLalr -> mkMakeLrTable;
    mkLook -> mkMakeLrTable;
    ListOrdSet -> mkMakeLrTable;
    mkCore -> mkMakeLrTable;
    mkCoreUtils -> mkMakeLrTable;
    mkGraph -> mkMakeLrTable;
    LR_ERRS -> mkMakeLrTable;
    LR_TABLE -> mkMakeLrTable;
    INTGRAMMAR -> mkMakeLrTable;
    MAKE_LR_TABLE -> mkMakeLrTable;
  mkPrintStruct [shape = diamond, kind = functor, file = "src/mkprstruct.sml"];
    SHRINK_LR_TABLE -> mkPrintStruct;
    LR_TABLE -> mkPrintStruct;
    PRINT_STRUCT -> mkPrintStruct;
  ABSYN [shape = ellipse, kind = signature, file = "src/absyn.sig"];
  HASH [shape = ellipse, kind = signature, file = "src/utils.sig"];
  TABLE [shape = ellipse, kind = signature, file = "src/utils.sig"];
  ORDSET [shape = ellipse, kind = signature, file = "src/utils.sig"];
  Absyn [shape = box, kind = structure, file = "src/absyn.sml"];
    ABSYN -> Absyn;
  ExportParseGen [shape = box, kind = structure, file = "src/export.sml"];
    ParseGen -> ExportParseGen;
  mkGraph [shape = diamond, kind = functor, file = "src/graph.sml"];
    RbOrdSet -> mkGraph;
    CORE -> mkGraph;
    INTGRAMMAR -> mkGraph;
    LRGRAPH -> mkGraph;
    CORE_UTILS -> mkGraph;
  ParseGenParserFun [shape = diamond, kind = functor, file = "src/parse.sml"];
    HEADER -> ParseGenParserFun;
    ARG_PARSER -> ParseGenParserFun;
    PARSE_GEN_PARSER -> ParseGenParserFun;
  EquivFun [shape = diamond, kind = functor, file = "src/shrink.sml", range = "78:151"];
    MergeSortFun -> EquivFun;
    EQUIV_ARG -> EquivFun;
    EQUIV -> EquivFun;
  ShrinkLrTableFun [shape = diamond, kind = functor, file = "src/shrink.sml", range = "153:220"];
    EquivFun -> ShrinkLrTableFun;
    SHRINK_LR_TABLE -> ShrinkLrTableFun;
    LR_TABLE -> ShrinkLrTableFun;
  MergeSortFun [shape = diamond, kind = functor, file = "src/shrink.sml", range = "40:76"];
    SORT -> MergeSortFun;
    SORT_ARG -> MergeSortFun;
  SORT [shape = ellipse, kind = signature, file = "src/shrink.sml", range = "8:12"];
  EQUIV_ARG [shape = ellipse, kind = signature, file = "src/shrink.sml", range = "13:18"];
  SORT_ARG [shape = ellipse, kind = signature, file = "src/shrink.sml", range = "i3:7"];
  EQUIV [shape = ellipse, kind = signature, file = "src/shrink.sml", range = "14:38"];
  Stream [shape = box, kind = structure, file = "src/stream.sml"];
    STREAM -> Stream;
  Hash [shape = diamond, kind = functor, file = "src/utils.sml", range = "482:501"];
    Table -> Hash;
    HASH -> Hash;
  ListOrdSet [shape = diamond, kind = functor, file = "src/utils.sml", range = "8:149"];
    ORDSET -> ListOrdSet;
  Table [shape = diamond, kind = functor, file = "src/utils.sml", range = "383:477"];
    TABLE -> Table;
  RbOrdSet [shape = diamond, kind = functor, file = "src/utils.sml", range = "151:381"];
    ORDSET -> RbOrdSet;
  Mlyacc_TOKENS [shape = ellipse, kind = signature, file = "src/yacc-grm.sig", range = "1:46"];
    Header -> Mlyacc_TOKENS;
  Mlyacc_LRVALS [shape = ellipse, kind = signature, file = "src/yacc-grm.sig", range = "47:53"];
    Mlyacc_TOKENS -> Mlyacc_LRVALS;
    PARSER_DATA -> Mlyacc_LRVALS;
  IntGrammar [shape = box, kind = structure, file = "src/grammar.sml"];
    Table -> IntGrammar;
    Grammar -> IntGrammar;
    INTGRAMMAR -> IntGrammar;
  Grammar [shape = box, kind = structure, file = "src/grammar.sml"];
    LrTable -> Grammar;
    GRAMMAR  -> Grammar;
  LrTable [shape = box, kind = structure, file = "src/lrtable.sml"];
    LR_TABLE -> LrTable;
  LrParser [shape = box, kind = structure, file = "src/parser1.sml"];
    LrTable -> LrParser;
    Stream -> LrParser;
    LR_PARSER -> LrParser;
    TOKEN -> LrParser;
  mkVerbose [shape = diamond, kind = functor, file = "src/verbose.sml"];
    VERBOSE -> mkVerbose;
    LR_ERRS -> mkVerbose;
  MlyaccLrValsFun [shape = diamond, kind = functor, file = "src/yacc-grm.sml"];
    HEADER -> MlyaccLrValsFun;
    Mlyacc_TOKENS -> MlyaccLrValsFun;
    TOKEN -> MlyaccLrValsFun;
  LexMLYACC [shape = diamond, kind = functor, file = "src/yacc-lex.sml"];
    HEADER -> LexMLYACC;
    ARG_LEXER -> LexMLYACC;
    Mlyacc_TOKENS -> LexMLYACC;
  ARG_PARSER [shape = ellipse, kind = signature, file = "src/base.sig", range = "276:300"];
    TOKEN -> ARG_PARSER;
    STREAM -> ARG_PARSER;
  ARG_LEXER [shape = ellipse, kind = signature, file = "src/base.sig", range = "147:162"];
  LR_PARSER [shape = ellipse, kind = signature, file = "src/base.sig", range = "86:122"];
    LR_TABLE -> LR_PARSER;
    TOKEN -> LR_PARSER;
    STREAM -> LR_PARSER;
  LEXER [shape = ellipse, kind = signature, file = "src/base.sig", range = "124:145"];
  LR_TABLE [shape = ellipse, kind = signature, file = "src/base.sig", range = "16:48"];
  PARSER [shape = ellipse, kind = signature, file = "src/base.sig", range = "231:274"];
    TOKEN -> PARSER;
    STREAM -> PARSER;
  TOKEN [shape = ellipse, kind = signature, file = "src/base.sig", range = "51:84"];
    LR_TABLE -> TOKEN;
  STREAM [shape = ellipse, kind = signature, file = "src/base.sig", range = "7:14"];
  PARSER_DATA [shape = ellipse, kind = signature, file = "src/base.sig", range = "164:229"];
    LR_TABLE -> PARSER_DATA;
    TOKEN -> PARSER_DATA;
  mkCoreUtils [shape = diamond, kind = functor, file = "src/coreutils.sml"];
    ListOrdSet -> mkCoreUtils;
    CORE -> mkCoreUtils;
    CORE_UTILS -> mkCoreUtils;
  mkCore [shape = diamond, kind = functor, file = "src/core.sml"];
    ListOrdSet -> mkCore;
    CORE -> mkCore;
    INTGRAMMAR -> mkCore;
  HeaderFun [shape = diamond, kind = functor, file = "src/hdr.sml", range = "3:101"];
    HEADER -> HeaderFun;
  Header [shape = box, kind = structure, file = "src/hdr.sml", range = "103:103"];
    HeaderFun -> Header;
  Join [shape = diamond, kind = functor, file = "src/join.sml", range = "3:48"];
    LR_PARSER -> Join;
    LEXER -> Join;
    PARSER -> Join;
    PARSER_DATA -> Join;
  JoinWithArg [shape = diamond, kind = functor, file = "src/join.sml", range = "50:96"];
    ARG_PARSER -> JoinWithArg;
    ARG_LEXER -> JoinWithArg;
    LR_PARSER -> JoinWithArg;
    PARSER_DATA -> JoinWithArg;
  mkLalr [shape = diamond, kind = functor, file = "src/lalr.sml"];
    ListOrdSet -> mkLalr;
    RbOrdSet -> mkLalr;
    LOOK -> mkLalr;
    CORE -> mkLalr;
    INTGRAMMAR -> mkLalr;
    LRGRAPH -> mkLalr;
    LALR_GRAPH -> mkLalr;
  ParseGen [shape = box, kind = structure, file = "src/link.sml"];
    mkVerbose -> ParseGen;
    ParseGenFun -> ParseGen;
    JoinWithArg -> ParseGen;
    LexMLYACC -> ParseGen;
    mkPrintStruct -> ParseGen;
    ShrinkLrTableFun -> ParseGen;
    ParseGenParserFun -> ParseGen;
    MlyaccLrValsFun -> ParseGen;
    mkMakeLrTable -> ParseGen;
    Header -> ParseGen;
    LrTable -> ParseGen;
    LrParser -> ParseGen;
    IntGrammar -> ParseGen;
    Absyn -> ParseGen;
  mkLook [shape = diamond, kind = functor, file = "src/look.sml"];
    ListOrdSet -> mkLook;
    LOOK -> mkLook;
    INTGRAMMAR -> mkLook;
  HEADER [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "3:52"];
  SHRINK_LR_TABLE [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "367:381"];
    LR_TABLE -> SHRINK_LR_TABLE;
  PARSE_GEN [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "60:63"];
  LOOK [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "231:247"];
    INTGRAMMAR -> LOOK;
    GRAMMAR -> LOOK;
  VERBOSE [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "325:341"];
    LR_ERRS -> VERBOSE;
  LR_ERRS [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "278:306"];
    LR_TABLE -> LR_ERRS;
  CORE [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "133:174"];
    INTGRAMMAR -> CORE;
    GRAMMAR -> CORE;
  INTGRAMMAR [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "93:131"];
    TABLE -> INTGRAMMAR;
    GRAMMAR -> INTGRAMMAR;
  MAKE_LR_TABLE [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "343:365"];
    LR_TABLE -> MAKE_LR_TABLE;
    LR_ERRS -> MAKE_LR_TABLE;
    GRAMMAR -> MAKE_LR_TABLE;
  LRGRAPH [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "204:229"];
    CORE -> LRGRAPH;
    INTGRAMMAR -> LRGRAPH;
    GRAMMAR -> LRGRAPH;
  GRAMMAR [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "65:91"];
  CORE_UTILS [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "176:202"];
    CORE -> CORE_UTILS;
    INTGRAMMAR -> CORE_UTILS;
    GRAMMAR -> CORE_UTILS;
  PARSE_GEN_PARSER [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "54:58"];
    HEADER -> PARSE_GEN_PARSER;
  PRINT_STRUCT [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "308:323"];
    LR_TABLE -> PRINT_STRUCT;
  LALR_GRAPH [shape = ellipse, kind = signature, file = "src/sigs.sml", range = "249:276"];
    CORE -> LALR_GRAPH;
    INTGRAMMAR -> LALR_GRAPH;
    LRGRAPH -> LALR_GRAPH;
    GRAMMAR -> LALR_GRAPH;
  ParseGenFun [shape = diamond, kind = functor, file = "src/yacc.sml"];
    Hash -> ParseGenFun;
    Table -> ParseGenFun;
    PARSE_GEN -> ParseGenFun;
    VERBOSE -> ParseGenFun;
    MAKE_LR_TABLE -> ParseGenFun;
    ABSYN -> ParseGenFun;
    PARSE_GEN_PARSER -> ParseGenFun;
    PRINT_STRUCT -> ParseGenFun;
};
