This preview has intentionally blurred parts. Sign up to view the full document

View Full Document

Unformatted Document Excerpt

Get_Tree global_procedure ( alters Text& tree_as_text, produces Tree_Of_Character& t ); /*! requires there exists x, y: string of character, t1: tree of character (#tree_as_text = x * y and x = PREFIX_DISPLAY (t1)) ensures #tree_as_text = PREFIX_DISPLAY (t) * tree_as_text !*/ { object Character x; t.Clear() object Character t2; if(tree-as-text.Length() > 0) { tree-as-text.Remove(0, x); if(x =='(') { if(tree-as-text.Length() > 0) { tree-as-text.Remove(0, x); if(x != '(' and ')') { t2[current] &= x; t.Add(0, t2); } } else if(x == '(') { if(tree-as-text.Length() > 0) { tree-as-text.Remove(0, x); if(x == ')') { if(tree-as-text.Length() > 0) { tree-as-text.Remove(0, x); if(x = ! '(' and ')') { t2[current] &= x; t.Add(0, t2); } } } } } else { t[current] &= x; } Get_Tree(tree-as-text, t2); t.Add(0, t2); } } global_procedure Put_Tree ( preserves Tree_Of_Character& t, alters Character_OStream& outs, preserves Integer indentation_factor ); /*! requires outs.is_open = true ensures outs.is_open = true and outs.ext_name = #outs.ext_name and outs.content = #outs.content * MULTILINE_DISPLAY (t, indentation_factor) !*/ { object Integer pos; outs << t[current] << '\n' << '\t'; while(pos < t.Number_Of_Children) { object Tree_Of_Character t2; t.Remove(pos, t2); Put_Tree(t2, outs, indentation_factor); t.Add(pos, t2); pos++; } } ... View Full Document

End of Preview

Sign up now to access the rest of the document