HDF

Top  Previous  Next

Notation

 

Die Gramatik des HDF-Formats ist in einer an Backus-Naur angelehnten Form definiert. Zum besseren Verständnis kann die definition des Gramatik-Werkzeugs YACC dienen.

 

Schlüsselwörter sind in „“ eingefasst, die selbst in den HDF-Dateien nicht auftreten. Namen in <> werden an anderer Stelle erkärt. Mit „|“ aneinander gereihte Ausdrücke sind alternativen, von denen eine verwendet werden kann.

 

Die semantische Bedeutung ist den zu den entsprechenden Schlüsselworten korrespondierenden Einträgen der Objekte und Elemente in der Programmierreferenz zu entnehmen.

 

Die HDF-Dateien sind formatfrei. Zeilenumbrüche können an jeder Stelle stehen, die Leerzeichen enthalten darf.

 

Schlüsselwörter

 

"Begin",

"End",

"Object",

"Plan",

"InfoRecord",

"Segment",

"=",

"ID",

"Keys",

"(",

")",

"String",

"Symbol",

"Text",

"DKY",

"DKA",

"Position",

"LINK",

",",

"Name",

"Wert",

"Attribut",

"SYM",

"CLASS",

"Winkel",

"Scale",

"Hoehe",

"Art",

"Resolution",

"Xlow",

"Ylow",

"Xhigh",

"Yhigh",

"Textscale",

"Typ",

"Version",

"Raster",

"Flags",

"Size",

"MinScale",

"MaxScale",

"ColorTableLen",

"ColorTable",

"Origin",

"Clip",

"Datalen",

"Data",

"File",

"ATTRIBUTTEXT",

"Len",

"Fileformat",

"Mode",

"Passung",

"Set",

"Master",

"Member",

"Masters",

"Members"

 

Syntax

 

plan:                “Begin” “Plan” <pstatements> “End” “Plan” |

         “Begin” “Plan” “End” “Plan” ;

 

pstatements:   pstatement | pstatements pstatement;

 

Liste von einem oder mehreren Einträgen. Leerer Plan ist bereits durch die plan-Regel definiert.

 

pstatement:                infoRecStatement |

object |

“Resolution” “=” <Double> |

“Xlow” “=” <Double> |

“Ylow” “=” <Double> |

“Xhigh” „=” <Double> |

“Yhigh” „=“ <Double> |

“Textscale” „=“ <Double> |

“ID” „=“ <Double> |

“Typ” „=“ <integer> |

„Version“ „=“ <integer> |

„Name“ „=“ <string> |

„Segment“ „=“ <integer> ;

 

Alle Statements für Inhalte eines Plans können in freier Reihenfolge auftreten. Die object-Statements müssen nach den übrigen statements erfolgen.

 

infoRecStatement: “Begin” “InformationRecord” <infoStatements>

”End” “InformationRecord”;

 

Liste der Attribute für Element-Attribute und Plan-Attribute.

 

infoRecStatementSym: “Begin” “InformationRecord” <infoStatements>

“End” “InformationRecord”;

infoRecStatementTxt: “Begin” “InformationRecord” <infoStatements>

“End” “InformationRecord”;

infoRecStatementStr: “Begin” “InformationRecord” <infoStatements>

“End” “InformationRecord”;

infoRecStatementPnt: “Begin” “InformationRecord” <infoStatements>

“End” “InformationRecord”;

infoRecStatementsPnt:  infoRecStatementsPnt infoRecStatementPnt |

;

infoStatements: infoStatement infoStatements |

;

 

Liste, auch leer, von Inhalten einer Attributdefinition.

 

infoStatement: „Wert“ „=“ <stringSeq> |

“Name” „=“ <string> ;

 

Teile der Attributdefinition.

 

object: “Begin” “Object” <objectStatements> “End” “Object” ;

objectStatements: objectStatementList |;

objectStatementList: objectStatement | objectStatementList objectStatement;

objectStatement: “ID” „=“ <IDwert> |

„Keys“ „=“ „(“ <integerKeyList> „)“ |

„Flags“ „=“ <integer> |

<String> |

<Symbol> |

<Text> |

<Raster> |

<Set> |

<Master> |

<Member> |

<Attrib>;

 

Master:       “Begin” “Master” “End” “Master”;

 

Master-Elemente können zur Referenz im HDF erscheinen, sind allerdings nicht notwendig. Sie werden im Plan automatisch erzeugt, wenn das SET-Element zugegriffen wird.

 

Member:     “Begin” “Member” “End” “Member”;

 

Member-Elemente können zur Referenz im HDF erscheinen, sind allerdings nicht notwendig. Sie werden im Plan automatisch erzeugt, wenn das SET-Element zugegriffen wird.

 

Set:              “Begin” “Set” <setStatements> “End” “Set”;

String:         “Begin” “String” <stringStatements> “End” “String”;

Symbol:      “Begin” “Symbol” <symbolStatements> “End“ “Symbol”;

Text:            “Begin” “Text” <textStatements> “End” “Text”;

Raster:        “Begin” “Raster” <rasterStatements> “End” “Raster”;

Attrib:         “Begin” “Attribute” <attribStatements> “End” “Attribute”;

setStatements: <setStatement> <setStatements> |

;

stringStatements: <stringStatement> <stringStatements> |

;

symbolStatements: <symbolStatement> <symbolStatements> |

;

textStatements: <textStatement> <textStatements> |

;

rasterStatements: <rasterStatement> <rasterStatements> |

;

attribStatements: <attribStatement> <attribStatements> |

;

setStatement: “Name” <string> |

“Members” <setMember> <setMemberListe>;

setMemberListe:         <setMember> <setMemberListe> |

;

setMember:     <IDwert>;

rasterStatement: “Typ” „=“ <integer> |

“Flags“ „=“ <integer> |

“Size“ „=“ „(“ <Double> “,” <Double> “)” |

“MinScale” „=“ <Double> |

“MaxScale” „=“ <Double> |

“ColTabLen” „=“ <integer> |

„Datalen“ „=“ <integer> |

<Origin> |

<Clip> |

“DKY” „=“ <integer> |

“File” „=“ <string> |

“Format“ „=“ <string> |

„Data“ „=“ “(” <RasterData> “)”|

„ColTab“ „=“ „(“ <colData> „)“;

 

colData:      <Hex> <colData> |

;

 

RasterData:      <RasterData> <Hex>|

;

 

Origin:         “Begin” “Origin” <point> “End” “Origin” |

“Begin” “Origin” “End” “Origin”;

 

Clip:             “Begin” “Clip” <point1> <point2> “End” “Clip” |

“Begin” “Clip” <point1> “End” “Clip”;

 

attribStatement: “Name” „=“ <string> |

“Wert“ „=“ <stringSeq> |

„Len” „=“ <integer> |

“Typ” „=“ <integer> ;

 

infoRecStatements:  <infoRecStatements> <infoRecStatement> |

;

 

infoRecStatementsStr: <infoRecStatementsStr> <infoRecStatementStr> |

;

 

symbolStatement: “Symbol” „=“ <integer> |

„Winkel“ „=“ „(“ <Double> „)“ |

„Winkel“ „=“ „(“ <Double> “,” <Double> “)” |

“Scale” „=“ <Double> |

<infoRecStatementSym> |

<point> ;

 

textStatement: “Hoehe” „=“ <integer> |

“DKY” „=“ <integer> |

“DKA” „=“ <integer> |

“Text” „=“ <stringSeq> |

“Art” „=“ <integer> |

“ATX” |

“Mode” „=“ <integer> |

“Passung” „=“ <Double> |

“Winkel“ „=“ „(“ <Double> „)“ |

„Winkel“ „=“ „(“ <Double> „,“ <Double> „)“ |

<infoRecStatementTxt> |

<point> ;

 

stringStatement: “DKY” „=“ <integer>

“DKA” „=“ <integer>

                    <infoRecStatementsStr>

<pointString> ;

 

point1:        <point> ;

point2:        <point> ;

 

pointString: <pointStatementList> |

;

 

pointStatementList: <polygonPoint> |

<pointStatementList> <polygonPoint> ;

 

polygonPoint: “Begin” “Position” <point> <infoRecStatementsPnt> “End” “Position” |

<point>;

 

point: TOK_Position „=“ “(” <Double> “,” <Double> <posOptions> “)” ;

 

posOptions: <posOption> <posOptions> |

;

 

posOption: “,” <Double> |

“,” “SYM” „=“ <integer> |

“,” “CLASS” „=“ <integer> |

“,” “LINK” „=“ <NAME> ;

 

integerKeyList: <integer> <integerKeyList> |

;

 

integer:

<Number> ;

Double:

<Number> ;

 

Hex:

<Number> ;

 

IDwert:

<Number> ;

 

stringSeq:  <string> <stringSeq> |

;

 

Liste von Text-Strings. Wird bei langen Textinhalten verwendet, um eine Aufteilung auf mehrere Zeilen durchzuführen.

 

string:         “”” <Charactersequenz> “”” ;

 

Zeichenkette, mit doppelten Anführungszeichen umschlossen.

 

index:

<integer> |

;