def parseFamily(elem) : assert elem.tagName == "family" return { "category" : "family", "typename" : lib.textValue(lib.selectChild(elem, "typename")), "members" : map(lib.textValue, lib.selectChildren(lib.selectChild(elem, "members"), "typename")) }
def parseEntry(entryElem) : child = { "count" : lib.textValue(lib.selectChild(entryElem, "count")), "typename" : lib.textValue(lib.selectChild(entryElem, "typename")) } if len(lib.selectChildren(entryElem, "label")) > 0 : child["label"] = lib.textValue(lib.selectChild(entryElem, "label")) return child
def parseTree(elem) : def parseEntry(entryElem) : child = { "count" : lib.textValue(lib.selectChild(entryElem, "count")), "typename" : lib.textValue(lib.selectChild(entryElem, "typename")) } if len(lib.selectChildren(entryElem, "label")) > 0 : child["label"] = lib.textValue(lib.selectChild(entryElem, "label")) return child assert elem.tagName == "tree" return { "category" : "tree", "typename" : lib.textValue(lib.selectChild(elem, "typename")), "layout" : map(parseEntry, lib.selectChildren(elem, "entry")) }
def parseTerminal(elem) : assert elem.tagName == "terminal" return { "category" : "terminal", "typename" : lib.textValue(lib.selectChild(elem, "typename")) }