Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei: tip58.html   Sprache: Unknown

Untersuchungsergebnis.sml Download desText {Text[196] Haskell[212] Fortran[319]}zum Wurzelverzeichnis wechseln

(* 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;

[ zur Elbe Produktseite wechseln0.106Quellennavigators  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik