|
|
@@ -82,8 +82,6 @@ Boolean function node_match(transf_model : Element, transf_elem : Element, host_
|
|
|
//NOTE maybe get rid of LHS postfix? maybe not
|
|
|
if (getTypeName(transf_model, transf_elem) != string_join(getTypeName(host_model, host_elem), "_LHS")):
|
|
|
return False
|
|
|
- //TODO check if still correct match!!
|
|
|
- //TODO semantic check (eg, call function that compares attributes)
|
|
|
return True
|
|
|
|
|
|
Integer function are_connected(model: Element, el1:Element, el2:Element):
|
|
|
@@ -115,7 +113,7 @@ Integer function are_connected(model: Element, el1:Element, el2:Element):
|
|
|
log("is_connected_to: unsupported type for first element")
|
|
|
log(string_join("type = ", el1_mmt))
|
|
|
return 0 // if the function doesn't support it, assume disconnected
|
|
|
-
|
|
|
+
|
|
|
|
|
|
Element function new_SearchState(OldSearchState : Element, TransfModel : Element, NewTransfElem: Element, HostModel : Element, NewHostElem : Element):
|
|
|
|
|
|
@@ -139,8 +137,8 @@ Element function new_SearchState(OldSearchState : Element, TransfModel : Element
|
|
|
dict_add(new_curmatch, oldkey, OldSearchState["curmatch"][oldkey]) //WARNING dict_read_node needed???
|
|
|
Element newPair // the new pair to be added
|
|
|
newPair = create_node()
|
|
|
- dict_add(newPair, "pn", newTransfElem) //PatternNode
|
|
|
- dict_add(newPair, "hn", newHostElem) // HostNode
|
|
|
+ dict_add(newPair, "pn", NewTransfElem) //PatternNode
|
|
|
+ dict_add(newPair, "hn", NewHostElem) // HostNode
|
|
|
Integer plabel
|
|
|
plabel = read_attribute(TransfModel, getName(TransfModel, NewTransfElem), "plabel")
|
|
|
dict_add(new_curmatch, plabel, newPair) //add pair to new curmatch
|
|
|
@@ -205,9 +203,9 @@ Element function new_SearchState(OldSearchState : Element, TransfModel : Element
|
|
|
if (connectedness == 0): // if not connected, keep in V
|
|
|
list_append(nl, elem)
|
|
|
elif (connectedness == 1): //if connected in outwards manner, don't keep in v and add to outlist
|
|
|
- list_add(nss["N_pattern_out"], elem)
|
|
|
+ list_append(nss["N_pattern_out"], elem)
|
|
|
elif (connectedness == 2): //if connected in inwards manner, don't keep in v and add to inlist
|
|
|
- list_add(nss["N_pattern_in"], elem)
|
|
|
+ list_append(nss["N_pattern_in"], elem)
|
|
|
else:
|
|
|
log("new_SearchState: unsupported connectedness value")
|
|
|
log(cast_i2s(connectedness))
|
|
|
@@ -217,7 +215,6 @@ Element function new_SearchState(OldSearchState : Element, TransfModel : Element
|
|
|
ol = OldSearchState["V_host"]
|
|
|
nl = create_node()
|
|
|
index = 0
|
|
|
- Integer connectedness
|
|
|
while (index < list_len(ol)): //loop trough old list
|
|
|
elem = list_read(ol, index)
|
|
|
index = index + 1
|
|
|
@@ -226,16 +223,16 @@ Element function new_SearchState(OldSearchState : Element, TransfModel : Element
|
|
|
if (connectedness == 0): // if not connected, keep in V
|
|
|
list_append(nl, elem)
|
|
|
elif (connectedness == 1): //if connected in outwards manner, don't keep in v and add to outlist
|
|
|
- list_add(nss["N_pattern_out"], elem)
|
|
|
+ list_append(nss["N_pattern_out"], elem)
|
|
|
elif (connectedness == 2): //if connected in inwards manner, don't keep in v and add to inlist
|
|
|
- list_add(nss["N_pattern_in"], elem)
|
|
|
+ list_append(nss["N_pattern_in"], elem)
|
|
|
else:
|
|
|
log("new_SearchState: unsupported connectedness value")
|
|
|
log(cast_i2s(connectedness))
|
|
|
dict_add(nss, "V_host", nl)
|
|
|
|
|
|
// copy pattern_size
|
|
|
- dict_add(nss, "pattern_size", dict_read(OldSearchState["pattern_size"])
|
|
|
+ dict_add(nss, "pattern_size", OldSearchState["pattern_size"])
|
|
|
|
|
|
return nss
|
|
|
|
|
|
@@ -244,8 +241,13 @@ Element function transf_vf2(SearchState: Element, transf_m : Element, host_m : E
|
|
|
Element current_match
|
|
|
current_match = SearchState["curmatch"]
|
|
|
|
|
|
+ //TODO semantic check (eg, call function that compares attributes)
|
|
|
+ // --> need to check with assistent
|
|
|
+
|
|
|
//if match is complete: add to matches and return
|
|
|
- if SearchState["pattern_size"] == list_len(current_match):
|
|
|
+ Integer pattern_size
|
|
|
+ pattern_size = SearchState["pattern_size"]
|
|
|
+ if pattern_size == list_len(current_match):
|
|
|
set_add(SearchState["matches"], SearchState["curmatch"])
|
|
|
return SearchState
|
|
|
|