11. Anlage
 
zurück
11.6.1 Bilden einer Musterzeichenkette (picture string formation)


Eine wohlgeformte Musterzeichenkette ist eine Zeichenkette, die den syntaktischen Regeln, den Einschränkungen bei der Zusammensetzung und den Vorschriften für die Zeichenwiederholung in dieser Klausel entspricht. Diese Regeln werden hier in der Backus-Naur-Form (BNF) dargestellt:

picture_string ::= fixed_$_picture_string | fixed_#_picture_string
| floating_currency_picture_string | non_currency_picture_string

fixed_$_picture_string ::= [fixed_LHS_sign] fixed_$_char {direct_insertion} [zero_suppression] number [RHS_sign]
| [fixed_LHS_sign {direct_insertion}] [zero_suppression]
number fixed_$_char {direct_insertion} [RHS_sign]
| floating_LHS_sign number fixed_$_char {direct_insertion} [RHS_sign]
| [fixed_LHS_sign] fixed_$_char {direct_insertion}
all_zero_suppression_number {direct_insertion} [RHS_sign]
| [fixed_LHS_sign {direct_insertion}] all_zero_suppression_number {direct_insertion} fixed_$_char {direct_insertion} [RHS_sign]
| all_sign_number {direct_insertion} fixed_$_char {direct_insertion} [RHS_sign]

fixed_#_picture_string ::= [fixed_LHS_sign] single_#_currency {direct_insertion} [zero_suppression] number [RHS_sign]
| [fixed_LHS_sign] multiple_#_currency {direct_insertion} zero_suppression number [RHS_sign]
| [fixed_LHS_sign {direct_insertion}] [zero_suppression]
number fixed_#_currency {direct_insertion} [RHS_sign]
| floating_LHS_sign number fixed_#_currency {direct_insertion} [RHS_sign]
| [fixed_LHS_sign] single_#_currency {direct_insertion}
all_zero_suppression_number {direct_insertion} [RHS_sign]
| [fixed_LHS_sign] multiple_#_currency {direct_insertion}
all_zero_suppression_number {direct_insertion} [RHS_sign]
| [fixed_LHS_sign {direct_insertion}] all_zero_suppression_number{direct_insertion}
fixed_#_currency {direct_insertion} [RHS_sign]
| all_sign_number {direct_insertion} fixed_#_currency {direct_insertion}[RHS_sign]

floating_currency_picture_string ::= [fixed_LHS_sign] {direct_insertion} floating_$_currency number [RHS_sign]
| [fixed_LHS_sign] {direct_insertion} floating_#_currency number [RHS_sign]
| [fixed_LHS_sign] {direct_insertion} all_currency_number {direct_insertion}[RHS_sign]

non_currency_picture_string ::= [fixed_LHS_sign {direct_insertion}] zero_suppression number [RHS_sign]
| [floating_LHS_sign] number [RHS_sign]
| [fixed_LHS_sign {direct_insertion}] all_zero_suppression_number {direct_insertion} [RHS_sign]
| all_sign_number {direct_insertion}
| fixed_LHS_sign direct_insertion {direct_insertion} number [RHS_sign]

fixed_LHS_sign ::= LHS_Sign

LHS_Sign ::= + | - | <

fixed_$_char ::= $

direct_insertion ::= simple_insertion

simple_insertion ::= _ | B | 0 | /

zero_suppression ::= Z {Z | context_sensitive_insertion} | fill_string

context_sensitive_insertion ::= simple_insertion

fill_string ::= * {* | context_sensitive_insertion}

number ::= fore_digits [radix [aft_digits] {direct_insertion}] | radix aft_digits {direct_insertion}

fore_digits ::= 9 {9 | direct_insertion}

aft_digits ::= {9 | direct_insertion} 9

radix ::= . | V

RHS_sign ::= + | - | > | CR | DB

floating_LHS_sign ::= LHS_Sign {context_sensitive_insertion} LHS_Sign {LHS_Sign | context_sensitive_insertion}

single_#_currency ::= #

multiple_#_currency ::= ## {#}

fixed_#_currency ::= single_#_currency | multiple_#_currency

floating_$_currency ::= $ {context_sensitive_insertion} $ {$ | context_sensitive_insertion}

floating_#_currency ::= # {context_sensitive_insertion} # {# | context_sensitive_insertion}

all_sign_number ::= all_sign_fore [radix [all_sign_aft]] [>]

all_sign_fore ::= sign_char {context_sensitive_insertion} sign_char {sign_char | context_sensitive_insertion}

all_sign_aft ::= {all_sign_aft_char} sign_char

all_sign_aft_char ::= sign_char | context_sensitive_insertion

sign_char ::= + | - | <

all_currency_number ::= all_currency_fore [radix [all_currency_aft]]

all_currency_fore ::= currency_char {context_sensitive_insertion}currency_char {currency_char | context_sensitive_insertion}

all_currency_aft ::= {all_currency_aft_char} currency_char

all_currency_aft_char ::= currency_char | context_sensitive_insertion

currency_char ::= $ | #

all_zero_suppression_number ::= all_zero_suppression_fore [ radix[all_zero_suppression_aft]]

all_zero_suppression_fore ::= zero_suppression_char {zero_suppression_char | context_sensitive_insertion}

all_zero_suppression_aft ::= {all_zero_suppression_aft_char} zero_suppression_char

all_zero_suppression_aft_char ::= zero_suppression_char | context_sensitive_insertion

zero_suppression_char ::= Z | *



Die folgenden Einschränkungen gelten für die Zusammensetzung der Musterzeichenketten:
  • In "floating_LHS_sign" treten keine unterschiedlichen "LHS_Sign"-Zeichen auf.
  • Wenn eine Musterzeichenkette "<" als "fixed_LHS_sign" hat, dann hat es ">" als "RHS_sign".
  • Wenn eine Musterzeichenkette "<" in "floating_LHS" oder in "all_sign_number" hat, dann tritt auch ">" auf.
  • Wenn eine Musterzeichenkette "+" oder "-" als "fixed_LHS_sign" in "floating_LHS_sign" oder in "all_sign_number" hat, dann hat sie kein "RHS_sign".
  • In einer Instanz von "all_sign_number" treten keine verschiedenen "sign_char"-Zeichen auf.
  • In einer Instanz von "all_currency_number" treten keine verschiedenen "currency_char"-Zeichen auf.
  • In einer Instanz von "all_zero_suppression_number" treten keine verschiedenen "zero_suppression_char"-Zeichen auf, mit Ausnahme von möglichen Fallunterscheidungen zwischen "Z" und "z".
Ein wiederholbares Zeichen (replicable Character) ist ein Zeichen, das gemäß den obigen Regeln an zwei aufeinanderfolgenden Positionen in einer Musterzeichenkette vorkommen kann.

Eine Zeichenwiederholung (Character replication) ist eine Zeichenkette

char & "(" & spaces & count_string & ")"

wobei "char" ein wiederholbares Zeichen ist, "spaces" eine Zeichenkette (womöglich leer), die nur Leerzeichen enthält und "count_string" eine Zeichenkette bestehend aus einer oder mehreren dezimalen Ziffern. Eine Zeichenwiederholung in einer Musterzeichenkette hat die gleiche Wirkung (und wird als äquivalent bezeichnet) wie eine Zeichenkette, in der n mal hintereinander "char" auftritt, wobei n=Integer’Value(count_string) ist.

Beispiel: Die Musterzeichenkette "Z(5)9" entspricht der Musterzeichenkette "ZZZZZ9".

Eine expandierte Musterzeichenkette ist eine Zeichenkette, die keine Zeichenwiederholungen enthält.
Obwohl ein Vorzeichen auf der linken Seite einer Zahl fließen kann, ist ein Vorzeichen rechts von der Zahl an einer festen Position.


 
zurück
 Index   Ada Tour - Dokumentation  
© 2003 Förderverein Ada Deutschland e.V.