Oliver Becker, Mitarbeiter am Lehrstuhl Systemarchitektur im Institut für Informatik der HUB .

Dump-Ausgabe

Es kam der Wunsch auf nach einem ausführlicherem Beispiel für die Ausgabe der bereitgestellten dump-Funktion. Hier ist eins. Und gleichzeitig seht ihr mal, womit wir eure Lösungen der 3. Aufgabe so testen ... (Körper der Funktion prim)

Eingabe (prim.pps):

// Primzahlen

void main()
{
   number anzahl;
   anzahl = prim(30);
   print "Das waren " + anzahl + " Primzahlen\n";
}

number prim(n)
{
   string nl; 
   number prim; prim=3;
   print 2;
   while (prim<n) {
      number teiler;
      number flag;
      teiler = 3;
      flag = 0;
      while (teiler*teiler <= prim*(1-flag)) {
         number d;   
         number tmp; 
         d = 0;
         tmp = prim;
         while (teiler <= tmp) {
            d = d+1; tmp=tmp-teiler;
         }
         if (d*teiler==prim)
            flag = 1;
         teiler = teiler+2;
      }
      if (flag==0) 
         print ", "+prim;
      else
         print ", ..";
      prim = prim+2;
   }
   nl = "\n";
   print nl;
}

// sinnlose Funktionsdefinitionen

string foo1(a,b,c)
{ }

void foo2()
{ ; {} ; if (a > a and a < b) if (b!=b or !(b>=12)) ; else c=c; }

void foo3()
{ number x; }

Ausgabe (sortiert in der gleichen Reihenfolge wie oben die Funktionsdefinitionen, Leerzeilen per Hand eingefügt):


prim.pps:4: function `main':
  FUNC (on line 4)
   number: 0  [means: `void']
   a: 0
   b: BLOCK (on line 9)
       a: LIST (on line 7)
           a: DECL (on line 6)
               number: 1  [means: `number']
               a: LIST (on line 6)
                   a: STRING (on line 6)
                       string: "anzahl"
                   b: 0
           b: 0
       b: LIST (on line 9)
           a: ASSIGN (on line 7)
               string: "anzahl"
               a: CALL (on line 7)
                   string: "prim"
                   a: LIST (on line 7)
                       a: NUMBER (on line 7)
                           number: 30
                       b: 0
           b: LIST (on line 9)
               a: PRINT (on line 8)
                   a: ADD (on line 8)
                       a: ADD (on line 8)
                           a: STRING (on line 8)
                               string: "Das waren "
                           b: VAR (on line 8)
                               string: "anzahl"
                       b: STRING (on line 8)
                           string: " Primzahlen
"
               b: 0

prim.pps:11: function `prim':
  FUNC (on line 11)
   number: 1  [means: `number']
   a: LIST (on line 11)
       a: STRING (on line 11)
           string: "n"
       b: 0
   b: BLOCK (on line 41)
       a: LIST (on line 14)
           a: DECL (on line 13)
               number: 2  [means: `string']
               a: LIST (on line 13)
                   a: STRING (on line 13)
                       string: "nl"
                   b: 0
           b: LIST (on line 14)
               a: DECL (on line 14)
                   number: 1  [means: `number']
                   a: LIST (on line 14)
                       a: STRING (on line 14)
                           string: "prim"
                       b: 0
               b: 0
       b: LIST (on line 41)
           a: ASSIGN (on line 14)
               string: "prim"
               a: NUMBER (on line 14)
                   number: 3
           b: LIST (on line 41)
               a: PRINT (on line 15)
                   a: NUMBER (on line 15)
                       number: 2
               b: LIST (on line 41)
                   a: WHILE (on line 38)
                       a: LT (on line 16)
                           a: VAR (on line 16)
                               string: "prim"
                           b: VAR (on line 16)
                               string: "n"
                       b: BLOCK (on line 38)
                           a: LIST (on line 19)
                               a: DECL (on line 17)
                                   number: 1  [means: `number']
                                   a: LIST (on line 17)
                                       a: STRING (on line 17)
                                           string: "teiler"
                                       b: 0
                               b: LIST (on line 19)
                                   a: DECL (on line 18)
                                       number: 1  [means: `number']
                                       a: LIST (on line 18)
                                           a: STRING (on line 18)
                                               string: "flag"
                                           b: 0
                                   b: 0
                           b: LIST (on line 38)
                               a: ASSIGN (on line 19)
                                   string: "teiler"
                                   a: NUMBER (on line 19)
                                       number: 3
                               b: LIST (on line 38)
                                   a: ASSIGN (on line 20)
                                       string: "flag"
                                       a: NUMBER (on line 20)
                                           number: 0
                                   b: LIST (on line 38)
                                       a: WHILE (on line 32)
                                           a: LE (on line 21)
                                               a: MUL (on line 21)
                                                   a: VAR (on line 21)
                                                       string: "teiler"
                                                   b: VAR (on line 21)
                                                       string: "teiler"
                                               b: MUL (on line 21)
                                                   a: VAR (on line 21)
                                                       string: "prim"
                                                   b: SUB (on line 21)
                                                       a: NUMBER (on line 21)
                                                           number: 1
                                                       b: VAR (on line 21)
                                                           string: "flag"
                                           b: BLOCK (on line 32)
                                               a: LIST (on line 24)
                                                   a: DECL (on line 22)
                                                       number: 1  [means: `number']
                                                       a: LIST (on line 22)
                                                           a: STRING (on line 22)
                                                               string: "d"
                                                           b: 0
                                                   b: LIST (on line 24)
                                                       a: DECL (on line 23)
                                                           number: 1  [means: `number']
                                                           a: LIST (on line 23)
                                                               a: STRING (on line 23)
                                                                   string: "tmp"
                                                               b: 0
                                                       b: 0
                                               b: LIST (on line 32)
                                                   a: ASSIGN (on line 24)
                                                       string: "d"
                                                       a: NUMBER (on line 24)
                                                           number: 0
                                                   b: LIST (on line 32)
                                                       a: ASSIGN (on line 25)
                                                           string: "tmp"
                                                           a: VAR (on line 25)
                                                               string: "prim"
                                                       b: LIST (on line 32)
                                                           a: WHILE (on line 28)
                                                               a: LE (on line 26)
                                                                   a: VAR (on line 26)
                                                                       string: "teiler"
                                                                   b: VAR (on line 26)
                                                                       string: "tmp"
                                                               b: BLOCK (on line 28)
                                                                   a: 0
                                                                   b: LIST (on line 28)
                                                                       a: ASSIGN (on line 27)
                                                                           string: "d"
                                                                           a: ADD (on line 27)
                                                                               a: VAR (on line 27)
                                                                                   string: "d"
                                                                               b: NUMBER (on line 27)
                                                                                   number: 1
                                                                       b: LIST (on line 28)
                                                                           a: ASSIGN (on line 27)
                                                                               string: "tmp"
                                                                               a: SUB (on line 27)
                                                                                   a: VAR (on line 27)
                                                                                       string: "tmp"
                                                                                   b: VAR (on line 27)
                                                                                       string: "teiler"
                                                                           b: 0
                                                           b: LIST (on line 32)
                                                               a: IF (on line 31)
                                                                   a: EQ (on line 29)
                                                                       a: MUL (on line 29)
                                                                           a: VAR (on line 29)
                                                                               string: "d"
                                                                           b: VAR (on line 29)
                                                                               string: "teiler"
                                                                       b: VAR (on line 29)
                                                                           string: "prim"
                                                                   b: ASSIGN (on line 30)
                                                                       string: "flag"
                                                                       a: NUMBER (on line 30)
                                                                           number: 1
                                                                   c: 0
                                                               b: LIST (on line 32)
                                                                   a: ASSIGN (on line 31)
                                                                       string: "teiler"
                                                                       a: ADD (on line 31)
                                                                           a: VAR (on line 31)
                                                                               string: "teiler"
                                                                           b: NUMBER (on line 31)
                                                                               number: 2
                                                                   b: 0
                                       b: LIST (on line 38)
                                           a: IF (on line 36)
                                               a: EQ (on line 33)
                                                   a: VAR (on line 33)
                                                       string: "flag"
                                                   b: NUMBER (on line 33)
                                                       number: 0
                                               b: PRINT (on line 34)
                                                   a: ADD (on line 34)
                                                       a: STRING (on line 34)
                                                           string: ", "
                                                       b: VAR (on line 34)
                                                           string: "prim"
                                               c: PRINT (on line 36)
                                                   a: STRING (on line 36)
                                                       string: ", .."
                                           b: LIST (on line 38)
                                               a: ASSIGN (on line 37)
                                                   string: "prim"
                                                   a: ADD (on line 37)
                                                       a: VAR (on line 37)
                                                           string: "prim"
                                                       b: NUMBER (on line 37)
                                                           number: 2
                                               b: 0
                   b: LIST (on line 41)
                       a: ASSIGN (on line 39)
                           string: "nl"
                           a: STRING (on line 39)
                               string: "
"
                       b: LIST (on line 41)
                           a: PRINT (on line 40)
                               a: VAR (on line 40)
                                   string: "nl"
                           b: 0

prim.pps:45: function `foo1':
  FUNC (on line 45)
   number: 2  [means: `string']
   a: LIST (on line 45)
       a: STRING (on line 45)
           string: "a"
       b: LIST (on line 45)
           a: STRING (on line 45)
               string: "b"
           b: LIST (on line 45)
               a: STRING (on line 45)
                   string: "c"
               b: 0
   b: BLOCK (on line 46)
       a: 0
       b: 0

prim.pps:48: function `foo2':
  FUNC (on line 48)
   number: 0  [means: `void']
   a: 0
   b: BLOCK (on line 49)
       a: 0
       b: LIST (on line 49)
           a: 0
           b: LIST (on line 49)
               a: BLOCK (on line 49)
                   a: 0
                   b: 0
               b: LIST (on line 49)
                   a: 0
                   b: LIST (on line 49)
                       a: IF (on line 49)
                           a: AND (on line 49)
                               a: GT (on line 49)
                                   a: VAR (on line 49)
                                       string: "a"
                                   b: VAR (on line 49)
                                       string: "a"
                               b: LT (on line 49)
                                   a: VAR (on line 49)
                                       string: "a"
                                   b: VAR (on line 49)
                                       string: "b"
                           b: IF (on line 49)
                               a: OR (on line 49)
                                   a: NE (on line 49)
                                       a: VAR (on line 49)
                                           string: "b"
                                       b: VAR (on line 49)
                                           string: "b"
                                   b: NOT (on line 49)
                                       a: GE (on line 49)
                                           a: VAR (on line 49)
                                               string: "b"
                                           b: NUMBER (on line 49)
                                               number: 12
                               b: 0
                               c: ASSIGN (on line 49)
                                   string: "c"
                                   a: VAR (on line 49)
                                       string: "c"
                           c: 0
                       b: 0

prim.pps:51: function `foo3':
  FUNC (on line 51)
   number: 0  [means: `void']
   a: 0
   b: BLOCK (on line 52)
       a: LIST (on line 52)
           a: DECL (on line 52)
               number: 1  [means: `number']
               a: LIST (on line 52)
                   a: STRING (on line 52)
                       string: "x"
                   b: 0
           b: 0
       b: 0

© ob Wed, 13. Dec 2000, 09:54 .