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
|
|