PreviousUpNext

15.3.36  src/app/yacc/src/lr-graph.api

#  (c) 1989, 1991 Andrew W. Appel, David R. Tarditi 

# Compiled by:
#     src/app/yacc/src/mythryl-yacc.lib

api Lr_Graph {

    package grammar:            Grammar;                # Grammar               is from   src/app/yacc/src/grammar.api
    package internal_grammar:   Internal_Grammar;       # Internal_Grammar      is from   src/app/yacc/src/internal-grammar.api
    package core:               Core;                   # Core                  is from   src/app/yacc/src/core.api

    sharing grammar == internal_grammar::grammar == core::grammar;
    sharing internal_grammar == core::internal_grammar;

    Graph;

    edges:  (core::Core, Graph) ->  List { edge: grammar::Symbol, to: core::Core };
    nodes:  Graph -> List( core::Core );
    shift:  Graph -> (Int, grammar::Symbol) -> Int; #  Int = state # 
    core:  Graph -> Int -> core::Core; #  get core for a state 

    #  make_graph_fn: compute the LR (0) sets of items 

    make_graph_fn:   grammar::Grammar ->
                     { graph:  Graph,
                      produces:  grammar::Nonterminal -> List( internal_grammar::Rule ),
                      rules:  List( internal_grammar::Rule ),
                      eps_prods: core::Core -> List( internal_grammar::Rule ) };

    pr_graph: ((grammar::Symbol -> String),(grammar::Nonterminal -> String) ,
                            (String -> Void)) -> Graph -> Void;
};


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext