functor LtlLrValsFun(structure Token : TOKEN)
: sig structure ParserData : PARSER_DATA
structure Tokens : Ltl_TOKENS
end
=
struct
structure ParserData=
struct
structure Header =
struct
(*#line 1.2 "ltl.yacc"*)open Ltl_Dt
(*#line 13.1 "ltl.yacc.sml"*)
end
structure LrTable = Token.LrTable
structure Token = Token
local open LrTable in
val table=let val actionRows =
"\
\\001 \000 \001 \000 \011 \000 \006 \000 \010 \000 \007 \000 \009 \000 \008 \000 \008 \000 \
\\009 \000 \007 \000 \010 \000 \006 \000 \015 \000 \005 \000 \017 \000 \004 \000 \000 \000 \
\\001 \000 \002 \000 \019 \000 \003 \000 \018 \000 \004 \000 \017 \000 \005 \000 \016 \000 \
\\011 \000 \015 \000 \012 \000 \014 \000 \013 \000 \013 \000 \014 \000 \012 \000 \
\\016 \000 \033 \000 \000 \000 \
\\001 \000 \018 \000 \000 \000 \000 \000 \
\\035 \000 \002 \000 \019 \000 \003 \000 \018 \000 \004 \000 \017 \000 \005 \000 \016 \000 \
\\011 \000 \015 \000 \012 \000 \014 \000 \013 \000 \013 \000 \014 \000 \012 \000 \000 \000 \
\\036 \000 \000 \000 \
\\037 \000 \000 \000 \
\\038 \000 \000 \000 \
\\039 \000 \000 \000 \
\\040 \000 \000 \000 \
\\041 \000 \000 \000 \
\\042 \000 \000 \000 \
\\043 \000 \011 \000 \015 \000 \012 \000 \014 \000 \013 \000 \013 \000 \014 \000 \012 \000 \000 \000 \
\\044 \000 \011 \000 \015 \000 \012 \000 \014 \000 \013 \000 \013 \000 \014 \000 \012 \000 \000 \000 \
\\045 \000 \002 \000 \019 \000 \003 \000 \018 \000 \011 \000 \015 \000 \012 \000 \014 \000 \
\\013 \000 \013 \000 \014 \000 \012 \000 \000 \000 \
\\046 \000 \002 \000 \019 \000 \003 \000 \018 \000 \004 \000 \017 \000 \011 \000 \015 \000 \
\\012 \000 \014 \000 \013 \000 \013 \000 \014 \000 \012 \000 \000 \000 \
\\047 \000 \013 \000 \013 \000 \014 \000 \012 \000 \000 \000 \
\\048 \000 \013 \000 \013 \000 \014 \000 \012 \000 \000 \000 \
\\049 \000 \000 \000 \
\\050 \000 \000 \000 \
\\051 \000 \000 \000 \
\"
val actionRowNumbers =
"\000\000\003\000\004\000\000\000\
\\000 \000 \000 \000 \000 \000 \006 \000 \
\\005 \000 \000 \000 \000 \000 \000 \000 \
\\000 \000 \000 \000 \000 \000 \000 \000 \
\\000 \000 \000 \000 \001 \000 \010 \000 \
\\009 \000 \008 \000 \007 \000 \018 \000 \
\\017 \000 \016 \000 \015 \000 \014 \000 \
\\013 \000 \012 \000 \011 \000 \019 \000 \
\\002 \000 "
val gotoT =
"\
\\001 \000 \032 \000 \002 \000 \001 \000 \000 \000 \
\\000 \000 \
\\000 \000 \
\\002 \000 \018 \000 \000 \000 \
\\002 \000 \019 \000 \000 \000 \
\\002 \000 \020 \000 \000 \000 \
\\002 \000 \021 \000 \000 \000 \
\\000 \000 \
\\000 \000 \
\\002 \000 \022 \000 \000 \000 \
\\002 \000 \023 \000 \000 \000 \
\\002 \000 \024 \000 \000 \000 \
\\002 \000 \025 \000 \000 \000 \
\\002 \000 \026 \000 \000 \000 \
\\002 \000 \027 \000 \000 \000 \
\\002 \000 \028 \000 \000 \000 \
\\002 \000 \029 \000 \000 \000 \
\\002 \000 \030 \000 \000 \000 \
\\000 \000 \
\\000 \000 \
\\000 \000 \
\\000 \000 \
\\000 \000 \
\\000 \000 \
\\000 \000 \
\\000 \000 \
\\000 \000 \
\\000 \000 \
\\000 \000 \
\\000 \000 \
\\000 \000 \
\\000 \000 \
\\000 \000 \
\"
val numstates = 33
val numrules = 17
val s = ref "" and index = ref 0
val string_to_int = fn () =>
let val i = !index
in index := i+2 ; Char.ord (String .sub (!s,i)) + Char.ord (String .sub (!s,i+1 )) * 256
end
val string_to_list = fn s' =>
let val len = String .size s'
fun f () =
if !index < len then string_to_int() :: f()
else nil
in index := 0 ; s := s'; f ()
end
val string_to_pairlist = fn (conv_key,conv_entry) =>
let fun f () =
case string_to_int()
of 0 => EMPTY
| n => PAIR(conv_key (n-1 ),conv_entry (string_to_int()),f())
in f
end
val string_to_pairlist_default = fn (conv_key,conv_entry) =>
let val conv_row = string_to_pairlist(conv_key,conv_entry)
in fn () =>
let val default = conv_entry(string_to_int())
val row = conv_row()
in (row,default)
end
end
val string_to_table = fn (convert_row,s') =>
let val len = String .size s'
fun f ()=
if !index < len then convert_row() :: f()
else nil
in (s := s'; index := 0; f ())
end
local
val memo = Array.array(numstates+numrules,ERROR)
val _ =let fun g i=(Array.update(memo,i,REDUCE(i-numstates)); g(i+1 ))
fun f i =
if i=numstates then g i
else (Array.update(memo,i,SHIFT (STATE i)); f (i+1 ))
in f 0 handle General.Subscript => ()
end
in
val entry_to_action = fn 0 => ACCEPT | 1 => ERROR | j => Array.sub (memo,(j-2 ))
end
val gotoT=Array.fromList(string_to_table(string_to_pairlist(NT,STATE),gotoT))
val actionRows=string_to_table(string_to_pairlist_default(T,entry_to_action),actionRows)
val actionRowNumbers = string_to_list actionRowNumbers
val actionT = let val actionRowLookUp=
let val a=Array.fromList(actionRows) in fn i=>Array.sub (a,i) end
in Array.fromList(List .map actionRowLookUp actionRowNumbers)
end
in LrTable.mkLrTable {actions=actionT,gotos=gotoT,numRules=numrules,
numStates=numstates,initialState=STATE 0 }
end
end
local open Header in
type pos = int
type arg = unit
structure MlyValue =
struct
datatype svalue = VOID | ntVOID of unit | IDENT of (string ) | formula of (string ltlc) | input of (string ltlc)
end
type svalue = MlyValue.svalue
type result = string ltlc
end
structure EC=
struct
open LrTable
infix 5 $$
fun x $$ y = y::x
val is_keyword =
fn _ => false
val preferred_change : (term list * term list ) list =
nil
val noShift =
fn (T 17 ) => true | _ => false
val showTerminal =
fn (T 0 ) => "NOT"
| (T 1 ) => "OR"
| (T 2 ) => "AND"
| (T 3 ) => "IMPL"
| (T 4 ) => "IFF"
| (T 5 ) => "TRUE"
| (T 6 ) => "FALSE"
| (T 7 ) => "NEXT"
| (T 8 ) => "FINAL"
| (T 9 ) => "GLOBAL"
| (T 10 ) => "UNTIL"
| (T 11 ) => "RELEASE"
| (T 12 ) => "WEAKUNTIL"
| (T 13 ) => "STRONGRELEASE"
| (T 14 ) => "LPAREN"
| (T 15 ) => "RPAREN"
| (T 16 ) => "IDENT"
| (T 17 ) => "EOF"
| (T 18 ) => "BAD_CHAR"
| _ => "bogus-term"
local open Header in
val errtermvalue=
fn _ => MlyValue.VOID
end
val terms : term list = nil
$$ (T 18 ) $$ (T 17 ) $$ (T 15 ) $$ (T 14 ) $$ (T 13 ) $$ (T 12 ) $$ (T 11 ) $$ (T 10 ) $$ (T 9 ) $$ (T 8 ) $$ (T 7 ) $$ (T 6 ) $$ (T 5 ) $$ (T 4 ) $$ (T 3 ) $$ (T 2 ) $$ (T 1 ) $$ (T 0 )end
structure Actions =
struct
exception mlyAction of int
local open Header in
val actions =
fn (i392,defaultPos,stack,
(()):arg) =>
case (i392,stack)
of ( 0 , ( ( _, ( MlyValue.formula formula, formula1left, formula1right)) :: rest671)) => let val result = MlyValue.input ((*#line 38.17 "ltl.yacc"*)formula(*#line 207.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 0 , ( result, formula1left, formula1right), rest671)
end
| ( 1 , ( ( _, ( MlyValue.IDENT IDENT, IDENT1left, IDENT1right)) :: rest671)) => let val result = MlyValue.formula ((*#line 40.41 "ltl.yacc"*)Prop_ltlc IDENT(*#line 211.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, IDENT1left, IDENT1right), rest671)
end
| ( 2 , ( ( _, ( _, TRUE1left, TRUE1right)) :: rest671)) => let val result = MlyValue.formula ((*#line 41.41 "ltl.yacc"*)True_ltlc(*#line 215.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, TRUE1left, TRUE1right), rest671)
end
| ( 3 , ( ( _, ( _, FALSE1left, FALSE1right)) :: rest671)) => let val result = MlyValue.formula ((*#line 42.41 "ltl.yacc"*)False_ltlc(*#line 219.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, FALSE1left, FALSE1right), rest671)
end
| ( 4 , ( ( _, ( MlyValue.formula formula, _, formula1right)) :: ( _, ( _, NOT1left, _)) :: rest671)) => let val result = MlyValue.formula ((*#line 43.41 "ltl.yacc"*)Not_ltlc formula(*#line 223.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, NOT1left, formula1right), rest671)
end
| ( 5 , ( ( _, ( MlyValue.formula formula, _, formula1right)) :: ( _, ( _, NEXT1left, _)) :: rest671)) => let val result = MlyValue.formula ((*#line 44.41 "ltl.yacc"*)Next_ltlc formula(*#line 227.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, NEXT1left, formula1right), rest671)
end
| ( 6 , ( ( _, ( MlyValue.formula formula, _, formula1right)) :: ( _, ( _, FINAL1left, _)) :: rest671)) => let val result = MlyValue.formula ((*#line 45.41 "ltl.yacc"*)Final_ltlc formula(*#line 231.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, FINAL1left, formula1right), rest671)
end
| ( 7 , ( ( _, ( MlyValue.formula formula, _, formula1right)) :: ( _, ( _, GLOBAL1left, _)) :: rest671)) => let val result = MlyValue.formula ((*#line 46.41 "ltl.yacc"*)Global_ltlc formula(*#line 235.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, GLOBAL1left, formula1right), rest671)
end
| ( 8 , ( ( _, ( MlyValue.formula formula2, _, formula2right)) :: _ :: ( _, ( MlyValue.formula formula1, formula1left, _)) :: rest671)) => let val result = MlyValue.formula ((*#line 47.41 "ltl.yacc"*)Or_ltlc (formula1, formula2)(*#line 239.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, formula1left, formula2right), rest671)
end
| ( 9 , ( ( _, ( MlyValue.formula formula2, _, formula2right)) :: _ :: ( _, ( MlyValue.formula formula1, formula1left, _)) :: rest671)) => let val result = MlyValue.formula ((*#line 48.41 "ltl.yacc"*)And_ltlc (formula1, formula2)(*#line 243.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, formula1left, formula2right), rest671)
end
| ( 10 , ( ( _, ( MlyValue.formula formula2, _, formula2right)) :: _ :: ( _, ( MlyValue.formula formula1, formula1left, _)) :: rest671)) => let val result = MlyValue.formula ((*#line 49.41 "ltl.yacc"*)Implies_ltlc (formula1, formula2)(*#line 247.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, formula1left, formula2right), rest671)
end
| ( 11 , ( ( _, ( MlyValue.formula formula2, _, formula2right)) :: _ :: ( _, ( MlyValue.formula formula1, formula1left, _)) :: rest671)) => let val result = MlyValue.formula ((*#line 50.41 "ltl.yacc"*)iff_ltlc formula1 formula2(*#line 251.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, formula1left, formula2right), rest671)
end
| ( 12 , ( ( _, ( MlyValue.formula formula2, _, formula2right)) :: _ :: ( _, ( MlyValue.formula formula1, formula1left, _)) :: rest671)) => let val result = MlyValue.formula ((*#line 51.41 "ltl.yacc"*)Until_ltlc (formula1, formula2)(*#line 255.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, formula1left, formula2right), rest671)
end
| ( 13 , ( ( _, ( MlyValue.formula formula2, _, formula2right)) :: _ :: ( _, ( MlyValue.formula formula1, formula1left, _)) :: rest671)) => let val result = MlyValue.formula ((*#line 52.41 "ltl.yacc"*)Release_ltlc (formula1, formula2)(*#line 259.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, formula1left, formula2right), rest671)
end
| ( 14 , ( ( _, ( MlyValue.formula formula2, _, formula2right)) :: _ :: ( _, ( MlyValue.formula formula1, formula1left, _)) :: rest671)) => let val result = MlyValue.formula ((*#line 53.41 "ltl.yacc"*)WeakUntil_ltlc (formula1, formula2)(*#line 263.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, formula1left, formula2right), rest671)
end
| ( 15 , ( ( _, ( MlyValue.formula formula2, _, formula2right)) :: _ :: ( _, ( MlyValue.formula formula1, formula1left, _)) :: rest671)) => let val result = MlyValue.formula ((*#line 54.41 "ltl.yacc"*)StrongRelease_ltlc (formula1, formula2)(*#line 267.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, formula1left, formula2right), rest671)
end
| ( 16 , ( ( _, ( _, _, RPAREN1right)) :: ( _, ( MlyValue.formula formula, _, _)) :: ( _, ( _, LPAREN1left, _)) :: rest671)) => let val result = MlyValue.formula ((*#line 55.41 "ltl.yacc"*)formula(*#line 271.1 "ltl.yacc.sml"*)
)
in ( LrTable.NT 1 , ( result, LPAREN1left, RPAREN1right), rest671)
end
| _ => raise (mlyAction i392)
end
val void = MlyValue.VOID
val extract = fn a => (fn MlyValue.input x => x
| _ => let exception ParseInternal
in raise ParseInternal end ) a
end
end
structure Tokens : Ltl_TOKENS =
struct
type svalue = ParserData.svalue
type ('a,' b) token = ('a,' b) Token.token
fun NOT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 0 ,(ParserData.MlyValue.VOID,p1,p2))
fun OR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 1 ,(ParserData.MlyValue.VOID,p1,p2))
fun AND (p1,p2) = Token.TOKEN (ParserData.LrTable.T 2 ,(ParserData.MlyValue.VOID,p1,p2))
fun IMPL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 3 ,(ParserData.MlyValue.VOID,p1,p2))
fun IFF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 4 ,(ParserData.MlyValue.VOID,p1,p2))
fun TRUE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 5 ,(ParserData.MlyValue.VOID,p1,p2))
fun FALSE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 6 ,(ParserData.MlyValue.VOID,p1,p2))
fun NEXT (p1,p2) = Token.TOKEN (ParserData.LrTable.T 7 ,(ParserData.MlyValue.VOID,p1,p2))
fun FINAL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 8 ,(ParserData.MlyValue.VOID,p1,p2))
fun GLOBAL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 9 ,(ParserData.MlyValue.VOID,p1,p2))
fun UNTIL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 10 ,(ParserData.MlyValue.VOID,p1,p2))
fun RELEASE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 11 ,(ParserData.MlyValue.VOID,p1,p2))
fun WEAKUNTIL (p1,p2) = Token.TOKEN (ParserData.LrTable.T 12 ,(ParserData.MlyValue.VOID,p1,p2))
fun STRONGRELEASE (p1,p2) = Token.TOKEN (ParserData.LrTable.T 13 ,(ParserData.MlyValue.VOID,p1,p2))
fun LPAREN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 14 ,(ParserData.MlyValue.VOID,p1,p2))
fun RPAREN (p1,p2) = Token.TOKEN (ParserData.LrTable.T 15 ,(ParserData.MlyValue.VOID,p1,p2))
fun IDENT (i,p1,p2) = Token.TOKEN (ParserData.LrTable.T 16 ,(ParserData.MlyValue.IDENT i,p1,p2))
fun EOF (p1,p2) = Token.TOKEN (ParserData.LrTable.T 17 ,(ParserData.MlyValue.VOID,p1,p2))
fun BAD_CHAR (p1,p2) = Token.TOKEN (ParserData.LrTable.T 18 ,(ParserData.MlyValue.VOID,p1,p2))
end
end
Messung V0.5 in Prozent C=90 H=100 G=95
¤ Dauer der Verarbeitung: 0.4 Sekunden
¤
*© Formatika GbR, Deutschland