SM update and fixes
git-svn-id: https://projects.brucker.ch/su4sml/svn/infsec-import/trunk/src/su4sml@4320 3260e6d1-4efc-4170-b0a7-36055960796d
This commit is contained in:
parent
71c7e39694
commit
dfe13bc7ac
|
@ -261,6 +261,8 @@ fun transform_guard t (XMI.mk_Guard g) =
|
|||
fun transform_event t (XMI.CallEvent ev) =
|
||||
Rep.CallEvent (find_operation t (#operation ev),
|
||||
map (transform_parameter t) (#parameter ev))
|
||||
| transform_event t (XMI.SignalEvent ev) =
|
||||
Rep.SignalEvent []
|
||||
|
||||
fun transform_proc t (XMI.mk_Procedure proc) =
|
||||
Rep.Proc_mk { proc_id = #xmiid proc,
|
||||
|
|
|
@ -243,6 +243,8 @@ fun insert_state table (XMI.CompositeState st) =
|
|||
|
||||
fun insert_event table (e as XMI.CallEvent ev) =
|
||||
HashTable.insert table (#xmiid ev, Event e)
|
||||
| insert_event table (e as XMI.SignalEvent ev) =
|
||||
HashTable.insert table (#xmiid ev, Event e)
|
||||
|
||||
fun insert_transition table (XMI.mk_Transition trans) =
|
||||
HashTable.insert table (#xmiid trans, Transition (XMI.mk_Transition trans))
|
||||
|
|
|
@ -63,7 +63,7 @@ datatype Guard = mk_Guard of {xmiid : string,
|
|||
body : string option,
|
||||
expression : XMI_OCL.OCLExpression option}
|
||||
|
||||
datatype Event = SignalEvent of Parameter list
|
||||
datatype Event = SignalEvent of {xmiid : string, parameter: Parameter list}
|
||||
| CallEvent of { xmiid : string,
|
||||
name: string,
|
||||
operation: string, (* xmi.idref *)
|
||||
|
|
|
@ -433,7 +433,8 @@ val filterPackages = fn trees => append (XmlTree.filter "UML:Package" trees
|
|||
(XmlTree.filter "UML:Model" trees)
|
||||
val filterStateMachines = XmlTree.filter "UML:StateMachine"
|
||||
val filterActivityGraphs= XmlTree.filter "UML:ActivityGraph"
|
||||
val filterEvents = XmlTree.filter "UML:CallEvent" (* add SignalEvents? *)
|
||||
val filterEvents = fn x => append (XmlTree.filter "UML:CallEvent" x)
|
||||
(XmlTree.filter "UML:SignalEvent" x)(* add SignalEvents? *)
|
||||
|
||||
(* there may be other kinds of dependencies, but we do not parse them atm *)
|
||||
val filterDependencies = XmlTree.filter "UML:Abstraction"
|
||||
|
@ -619,20 +620,20 @@ fun mkGuard tree =
|
|||
let val getExpr = XmlTree.node_children_of o (XmlTree.find "UML:Guard.expression")
|
||||
val getBoolExpr = XmlTree.attributes_of o (XmlTree.find "UML:BooleanExpression") o
|
||||
XmlTree.node_children_of o (XmlTree.find "UML:Guard.expression")
|
||||
val getOclExpr = (XmlTree.find "UML:ExpressionInOcl") o
|
||||
val getOclExpr = (XmlTree.find "UML15OCL:Expressions.ExpressionInOcl") o
|
||||
XmlTree.node_children_of o (XmlTree.find "UML:Guard.expression")
|
||||
fun f atts trees = XMI.mk_Guard{
|
||||
xmiid = getXmiId atts,
|
||||
name = getMaybeEmptyName atts,
|
||||
isSpecification = getBoolAtt "isSpecification" atts,
|
||||
visibility = getVisibility atts,
|
||||
language = if XmlTree.exists "UML:ExpressionInOCL" (getExpr trees)
|
||||
language = if XmlTree.exists "UML15OCL:Expressions.ExpressionInOcl" (getExpr trees)
|
||||
then getLang(XmlTree.attributes_of (getOclExpr trees))
|
||||
else getLang(getBoolExpr trees),
|
||||
body = if XmlTree.exists "UML:ExpressionInOCL" (getExpr trees)
|
||||
else "blubb"(* getLang(getBoolExpr trees)*),
|
||||
body = if XmlTree.exists "UML15OCL:Expressions.ExpressionInOCL" (getExpr trees)
|
||||
then NONE
|
||||
else SOME (getBody (getBoolExpr trees)) ,
|
||||
expression = if XmlTree.exists "UML:ExpressionInOCL" (getExpr trees)
|
||||
else SOME "blah"(*(getBody (getBoolExpr trees))*) ,
|
||||
expression = if XmlTree.exists "UML15OCL:Expressions.ExpressionInOcl" (getExpr trees)
|
||||
then SOME (mkOCLExpression (getOclExpr trees))
|
||||
else NONE}
|
||||
in XmlTree.apply_on "UML:Guard" f tree
|
||||
|
@ -815,6 +816,7 @@ and mkStateMachine tree =
|
|||
(trees)}
|
||||
in XmlTree.apply_on "UML:StateMachine" f tree
|
||||
handle XmlTree.IllFormed msg => raise IllFormed ("in mkStateMachine: "^msg)
|
||||
| IllFormed msg => raise IllFormed ("in mkStateMachine: "^msg)
|
||||
| _ => raise IllFormed ("Error in mkStateMachine")
|
||||
end;
|
||||
|
||||
|
@ -1070,6 +1072,9 @@ fun mkCallEvent atts trees =
|
|||
trees))
|
||||
}
|
||||
|
||||
fun mkSignalEvent atts trees = XMI.SignalEvent {xmiid = getXmiId atts,
|
||||
parameter = []}
|
||||
|
||||
(* TODO: mkSignalEvent, etc ? *)
|
||||
fun mkEvent tree =
|
||||
let val elem = XmlTree.tagname_of tree
|
||||
|
@ -1077,6 +1082,7 @@ fun mkEvent tree =
|
|||
val trees = XmlTree.node_children_of tree
|
||||
in
|
||||
case elem of "UML:CallEvent" => mkCallEvent atts trees
|
||||
| "UML:SignalEvent" => mkSignalEvent atts trees
|
||||
| _ => raise IllFormed ("in mkEvent: found unexpected element "^elem)
|
||||
end
|
||||
handle _ => raise IllFormed ("Error in mkEvent")
|
||||
|
|
Loading…
Reference in New Issue