Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/HOL/TPTP/TPTP_Parser/ml-yacc/lib/   (Beweissystem Isabelle Version 2025-1©)  Datei vom 16.11.2025 mit Größe 1 kB image not shown  

Quelle  lrtable.sml

  Sprache: SML
 

(* ML-Yacc Parser Generator (c) 1989 Andrew W. Appel, David R. Tarditi *)
structure LrTable : LR_TABLE = 
    struct
 open Array List
 infix 9 sub
 datatype ('a,'b) pairlist = EMPTY
      | PAIR of 'a * 'b * ('a,'b) pairlist
 datatype term = T of int
 datatype nonterm = NT of int
 datatype state = STATE of int
 datatype action = SHIFT of state
   | REDUCE of int (* rulenum from grammar *)
   | ACCEPT
   | ERROR
 exception Goto of state * nonterm
 type table = {states: int, rules : int,initialState: state,
        action: ((term,action) pairlist * action) array,
        goto :  (nonterm,state) pairlist array}
 val numStates = fn ({states,...} : table) => states
 val numRules = fn ({rules,...} : table) => rules
 val describeActions =
    fn ({action,...} : table) => 
            fn (STATE s) => action sub s
 val describeGoto =
    fn ({goto,...} : table) =>
            fn (STATE s) => goto sub s
 fun findTerm (T term,row,default) =
     let fun find (PAIR (T key,data,r)) =
         if key < term then find r
         else if key=term then data
         else default
     | find EMPTY = default
     in find row
     end
 fun findNonterm (NT nt,row) =
     let fun find (PAIR (NT key,data,r)) =
         if key < nt then find r
         else if key=nt then SOME data
         else NONE
     | find EMPTY = NONE
     in find row
     end
 val action = fn ({action,...} : table) =>
  fn (STATE state,term) =>
    let val (row,default) = action sub state
    in findTerm(term,row,default)
    end
 val goto = fn ({goto,...} : table) =>
   fn (a as (STATE state,nonterm)) =>
     case findNonterm(nonterm,goto sub state)
     of SOME state => state
      | NONE => raise (Goto a)
 val initialState = fn ({initialState,...} : table) => initialState
 val mkLrTable = fn {actions,gotos,initialState,numStates,numRules} =>
      ({action=actions,goto=gotos,
        states=numStates,
        rules=numRules,
               initialState=initialState} : table)
end;

Messung V0.5 in Prozent
C=89 H=84 G=86

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet am  2026-05-03) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.