[Allegro] (linux)avanti phpac: kleines problem bei d-khtm.apr

Bernhard Eversberg ev at biblio.tu-bs.de
Mi Jul 23 10:30:59 CEST 2014


Am 22.07.2014 18:30, schrieb Klaus Lehmann:


  Am 22.07.2014 13:18, schrieb Bernhard Eversberg:
> Richtig schwer ist das nicht.
> Hier haben Sie ein Beispiel aus cat.api:
> #u1 =mo e0     Feld zerlegen bei ;
> #-k
> !umo e";" y2 p{ 8 "|:M " }
> !umo +k b";" f" " =mo
>
>> Dieses Rezept können Sie leicht modifizieren.
>
> wo finde ich bitte im handbuch etwas dazu?
Verstreut an einigen Stellen, irgendwo ist jeder Befehl in seinem
Kontext beschrieben. Diese Methodik ergibt sich als Kombination
der einzelnen Teile - das Ganze ist mehr als die Summe seiner
Teile.

> das da oben ist -bestimmt nicht nur für mich- unverstehbar.
> sowas geht nicht in meinen kopf rein.
>
Das wollen wir doch mal sehen. Schritt für Schritt:

   Ziel ist:
   Das Datenfeld #u1 (aus einem ak-Befehl) soll am ';' zerlegt und dann
   jeweils ins Register 10 mit M  davor eingeordnet werden.
1.
#u1 =mo e0     Feld zerlegen bei ;
     =mo        Der Inhalt von #u1 wird in #umo kopiert,
     e0         aber nicht an dieser Stelle ausgegeben
2.
#-k            Sprungmarke als Schleifenanfang (s. 4.)

3.
!umo e";" y2 p{ 8 "|:M " }
      e";"      Ende bei ;
           y2        umcodieren mit q-Liste
              p{ 8 "|:M " }     Das Register-Präfix, '8' besagt, daß
                                hier ein weiterer Schlüssel beginnt

4.
!umo +k b";" f" " =mo
      +k        Wenn diese Zeile noch etwas ergibt (d.h. nach b";" noch
                was übrig ist), dann nach #-k springen
         b";"       Teil hinter dem nächsten ; nehmen
              f" "      Leerzeichen am Anfang (hinter ;) wegnehmen
                   =mo    den so verkürzten Teil wieder in #umo kopieren

Kurz: #umo (Kopie von #u1) wird schrittweise verkürzt und die
einzelnen Teile dann als je ein Schlüssel eingeordnet.
Sie modifizieren dann z.B. die Zeile 3, indem Sie die jeweils
passenden Prä- udn Postfixe mit p und P hinzufügen.
Die Schleife endet zwanglos, sobald kein ; mehr vorkommt (Zeile 4.
löst dann keinen Sprung aus)

B.E.





Mehr Informationen über die Mailingliste Allegro