

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.amigaos.net/w/index.php?action=history&amp;feed=atom&amp;title=TREE_IFF_Tree_Data_Structure</id>
	<title>TREE IFF Tree Data Structure - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.amigaos.net/w/index.php?action=history&amp;feed=atom&amp;title=TREE_IFF_Tree_Data_Structure"/>
	<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=TREE_IFF_Tree_Data_Structure&amp;action=history"/>
	<updated>2026-05-06T17:08:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.amigaos.net/w/index.php?title=TREE_IFF_Tree_Data_Structure&amp;diff=2130&amp;oldid=prev</id>
		<title>Steven Solie: Created page with &quot;= TREE =  &lt;pre&gt; Storage of arbitrary data structures as trees (or nested lists).  Date Submitted:	23-JUN-92 Submitted by:	Stefan Reisner 		sr@ph-cip.Uni-Koeln.DE 		Aachener St...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.amigaos.net/w/index.php?title=TREE_IFF_Tree_Data_Structure&amp;diff=2130&amp;oldid=prev"/>
		<updated>2012-05-10T19:59:05Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= TREE =  &amp;lt;pre&amp;gt; Storage of arbitrary data structures as trees (or nested lists).  Date Submitted:	23-JUN-92 Submitted by:	Stefan Reisner 		sr@ph-cip.Uni-Koeln.DE 		Aachener St...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= TREE =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Storage of arbitrary data structures as trees (or nested lists).&lt;br /&gt;
&lt;br /&gt;
Date Submitted:	23-JUN-92&lt;br /&gt;
Submitted by:	Stefan Reisner&lt;br /&gt;
		sr@ph-cip.Uni-Koeln.DE&lt;br /&gt;
		Aachener Straße 399&lt;br /&gt;
		5000 Köln 41&lt;br /&gt;
		Germany&lt;br /&gt;
		Phone 0221 / 40 59 16&lt;br /&gt;
&lt;br /&gt;
IDEA / MOTIVATION&lt;br /&gt;
=================&lt;br /&gt;
&lt;br /&gt;
This IFF FORM format was defined as the basic filing and clipping&lt;br /&gt;
format for QED and its successors.&lt;br /&gt;
&lt;br /&gt;
QED is mainly a symbolic math (formula) editor, but can be thought&lt;br /&gt;
of (and be configured) more generally as an editor that can process&lt;br /&gt;
ANY formally defined data structure representable as a tree (or&lt;br /&gt;
equivalently as nested lists) of symbols (such as letters, words,&lt;br /&gt;
numbers etc.).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;representation as nested lists&amp;quot; issue is obvious&lt;br /&gt;
(at least to those who are familiar with Lisp).&lt;br /&gt;
&lt;br /&gt;
This approach to data abstraction tries to represent any object with&lt;br /&gt;
a particular data structure by an instance of one same class, the&lt;br /&gt;
class of trees (or nested lists).&lt;br /&gt;
&lt;br /&gt;
It should work as long as the object in question can be decomposed&lt;br /&gt;
into irreducible (atomic) pieces of information that are small enough&lt;br /&gt;
to be represented by textual symbols.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
Consider a C-style structure:&lt;br /&gt;
&lt;br /&gt;
	struct&lt;br /&gt;
	{&lt;br /&gt;
		some_type field_1;&lt;br /&gt;
		...&lt;br /&gt;
		some_type field_n;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
or a vector&lt;br /&gt;
&lt;br /&gt;
	some_type vector[n];&lt;br /&gt;
&lt;br /&gt;
Both are basically just lists of their components. The components&lt;br /&gt;
are possibly structures or vectors themselves, and so on. Finally,&lt;br /&gt;
&amp;quot;atomic&amp;quot; components (scalar types char, word, long, float, double)&lt;br /&gt;
will appear.&lt;br /&gt;
&lt;br /&gt;
The tree structure can even represent data structures that are not&lt;br /&gt;
as rigid as C-style structures or vectors. This can be achieved by&lt;br /&gt;
placing a field identifier symbol in front of each field,&lt;br /&gt;
eliminating the need of a fixed order of fields.&lt;br /&gt;
&lt;br /&gt;
Further examples: see the Lisp language.&lt;br /&gt;
&lt;br /&gt;
CHUNKS&lt;br /&gt;
======&lt;br /&gt;
&lt;br /&gt;
The only new chunk to be defined here is FORM TREE.&lt;br /&gt;
&lt;br /&gt;
There are two possible shapes a FORM TREE can have: the terminal (leaf)&lt;br /&gt;
shape and the non-terminal shape.&lt;br /&gt;
&lt;br /&gt;
Terminal (leaf) shape of a FORM TREE:&lt;br /&gt;
&lt;br /&gt;
The terminal shape of a FORM TREE consists of exactly one TEXT chunk&lt;br /&gt;
(unformatted ASCII text), containing the terminal symbol.&lt;br /&gt;
&lt;br /&gt;
Non-terminal shape of a FORM TREE:&lt;br /&gt;
&lt;br /&gt;
The non-terminal shape of a FORM TREE consists of exactly one LIST TREE&lt;br /&gt;
chunk containing itself any number (including zero) of FORM TREEs.&lt;br /&gt;
&lt;br /&gt;
Thus we have the following syntax:&lt;br /&gt;
&lt;br /&gt;
tree         ::= &amp;quot;FORM&amp;quot; #{ &amp;quot;TREE&amp;quot; ( terminal | non-terminal ) }&lt;br /&gt;
terminal     ::= &amp;quot;TEXT&amp;quot; #{ symbol string }&lt;br /&gt;
non-terminal ::= &amp;quot;LIST&amp;quot; #{ &amp;quot;TREE&amp;quot; tree* }&lt;br /&gt;
&lt;br /&gt;
The absence of PROP chunks is intentional, because they are unnecessary:&lt;br /&gt;
Any such information can and should be stored as part of the actual data&lt;br /&gt;
structure.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Steven Solie</name></author>
	</entry>
</feed>