--- /dev/null
+/* unvollendet
--- /dev/null
+method foo(x,y)
+end;
--- /dev/null
+method x()
+ this:=x;
+end;
--- /dev/null
+method x()
+ x:=x-x*x;
+end;
--- /dev/null
+method x()
+ if x<x or x=x then
+ end;
+end;
--- /dev/null
+method x()
+ x := x < x < x;
+end;
--- /dev/null
+method x()
+ x:=x(,x);
+end;
--- /dev/null
+method x()
+ var x.x:=x;
+end;
--- /dev/null
+method x()
+ ;
+end;
--- /dev/null
+method x()
+ x(x,,);
+end;
--- /dev/null
+method x()
+ x.this = x;
+end;
--- /dev/null
+method m()
+ return x;
+end;
--- /dev/null
+method m(x x)
+end;
--- /dev/null
+method m(x)
+ if x then
+ var x:=0;
+ end;
+end;
--- /dev/null
+method m()
+ while this do
+ var x:=this;
+ if this then
+ else
+ var x:=this;
+ end;
+ end;
+end;
+
--- /dev/null
+struct
+ a
+ a
+end;
--- /dev/null
+struct
+ a
+end;
+
+struct
+ a
+end;
--- /dev/null
+method m()
+ if this then
+ var x:=this;
+ else
+ return x;
+ end;
+end;
--- /dev/null
+method m()
+ x:=this;
+ var x:=0;
+end;
--- /dev/null
+method m()
+ a:=this;
+end;
+
+struct
+ a
+end;
--- /dev/null
+method m()
+ var x:=x;
+end;
--- /dev/null
+method m(x)
+ return this.x;
+end;
--- /dev/null
+struct a d end;
+method f(b c s)
+ var t := 0;
+ /* lesender feldzugriff */
+ b := c*(s.a - 1);
+ b := c*(s.d - 1);
+ b := c*(t.a - 1);
+ /* Zusatz zu lewurm_05.0: ungültig, da c keine Feldvariable ist */
+ b := c*(t.c - 1);
+end;
--- /dev/null
+method test(arg1)
+ arg1.a := 10; /* undefined field */
+end;
+
+struct a end;
--- /dev/null
+method test(arg1)
+ var b := arg1.a; /* undefined field */
+end;
+
+struct a end;
--- /dev/null
+/* multiple field definition on "doubletrouble" here */
+struct doubletrouble foo end;
+method test(a b c)
+end;
+struct bar doubletrouble end;
--- /dev/null
+/* multiple variable definition in param list */
+method test(a b c a)
+end;
--- /dev/null
+/* fieldnames are NOT visible everywhere, but only after their definition */
+method foobar(a)
+ a.youdontseemeyet := 31337;
+end;
+
+struct youdontseemeyet end;
--- /dev/null
+method f(a b c)
+ /* x nicht deklariert */
+ if a < x then
+ c := 0x1;
+ end;
+end;
--- /dev/null
+method f(a b c)
+ if a < b then
+ var x := 0;
+ c := 1;
+ end;
+ /* x ist nicht im scope */
+ x := x - 1;
+end;
--- /dev/null
+method f(a b c)
+ /* x ist (noch) nicht im scope */
+ var x := x - 1;
+end;
--- /dev/null
+method f(b)
+ var t := 0;
+ /* identifier doppelt vorhanden */
+ var b := 0;
+end;
--- /dev/null
+struct mystruct
+end
--- /dev/null
+method testit()
+ var b := 10 - d * 20; /* should raise an error, since '(' ')' are missing */
+end;
--- /dev/null
+method abc(arg1 arg2)
+ if arg1 = arg2 then
+ var a := 42;
+ end;
+
+ var b := a - -1;
+end;
--- /dev/null
+struct a b c end;
+method test(arg1 arg2)
+ arg1.a := 10;
+end;
+
+struct c d e end;
--- /dev/null
+method abc(arg1 arg2)
+ var arg2 := 10; /* detect duplicates and fail */
+end;
--- /dev/null
+struct
+ a b c
+end;
+
+method bar(d e f)
+ var foo := a;
+ foo := b - c;
+ var bar := d - (e * f);
+
+ if(4 = 2) then
+ var x := 1;
+ var hiho := 0;
+ else
+ var hiho := 0x1f;
+ end;
+
+ var hiho := 2;
+
+ while 0 < hiho do
+ if (42) then
+ var hiho := 0xff; /* hiho existiert bereits */
+ hiho := hiho - 1;
+ end;
+ end;
+
+ return 0;
+end;
+
+struct
+ g
+ h
+end;
--- /dev/null
+struct
+ a b c
+end;
+
+method bar(d e f)
+ var foo := a;
+ foo := b - c;
+ var bar := d - (e * f);
+
+ if(4 = 2) then
+ var x := 1;
+ var hiho := 0;
+ else
+ var hiho := 0x1f;
+ end;
+
+ var hiho := 2;
+
+ while 0 < hiho do
+ if (42) then
+ hiho := hiho - 1;
+ else
+ hiho := hiho - (0 - g); /* g existiert noch nicht */
+ end;
+ end;
+
+ return 0;
+end;
+
+struct
+ g
+ h
+end;
--- /dev/null
+struct
+ a b c
+end;
+
+method bar(d e f)
+ var foo := a;
+ foo := b - c;
+ var bar := d - (e * f);
+
+ if(4 = 2) then
+ var x := 1;
+ var hiho := 0;
+ else
+ var hiho := 0x1f;
+ end;
+
+ var hiho := 2;
+
+ while 0 < hiho do
+ if (42) then
+ hiho := hiho - 1;
+ else
+ hiho := hiho - (0 - a);
+ end;
+ end;
+
+ var e := 22; /* e existiert bereits */
+ return 0;
+end;
+
+struct
+ g
+ h
+end;
--- /dev/null
+struct
+ a b c
+end;
+
+method bar(d e f)
+ var foo := a;
+ foo := b - c;
+ var bar := d - (e * f);
+
+ if(4 = 2) then
+ var x := 1;
+ var hiho := 0;
+ else
+ var hiho := 0x1f;
+ end;
+
+ if(9 < 8) then
+ var hohi := 12;
+ else
+ var hiho := 2;
+ end;
+
+
+ return hiho; /* hiho existiert nicht */
+end;
+
+struct
+ g
+ h
+end;
--- /dev/null
+struct g1 g2 g3 g4 end;
+struct g5 g6 end;
+
+method foo(p1 p2 p3)
+ var l1 := 0;
+ var l2 := g6;
+
+ g1.g2.l1 := 0xDEAD; /* l1 kein feld */
+end;
--- /dev/null
+struct g1 g2 g3 g4 end;
+struct g5 g6 end;
+
+method foo(p1 p2 p3)
+ var l1 := 0;
+ var l2 := g6;
+
+ g1.g2.p1 := 0xDEAD; /* p1 kein feld */
+end;
--- /dev/null
+struct g1 g2 g3 g4 end;
+struct g5 g6 end;
+
+method foo(p1 p2 p3)
+ var l1 := 0;
+ var l2 := g6;
+
+ g1.l2.g2 := 0xDEAD; /* l2 kein feld */
+end;
--- /dev/null
+struct g1 g2 g3 g4 end;
+struct g5 g6 end;
+
+method foo(p1 p2 p3)
+ var l1 := 0;
+ var l2 := g6;
+
+ g1.p3.g6:= 0xDEAD; /* p3 kein feld */
+end;
--- /dev/null
+struct
+ one struct_not defined
+end;
+
+method main(a b)
+ var something := 0x42;
+ var the := 0x42;
+ the.one.missing_struct := something;
+end;
--- /dev/null
+method foo ( )
+ if 1 then
+ var v1 := 1;
+ else
+ v1 := 2;
+ end;
+end;
--- /dev/null
+method foo ( p1 )
+ var p1 := 1;
+end;
--- /dev/null
+method foo ( )
+ if 1 then
+ var v1 := 1;
+ end;
+
+ return v1;
+end;
--- /dev/null
+method foo ( )
+ v1 := 1;
+ var v1 := 1;
+ return v1;
+end;
--- /dev/null
+struct f1 end;
+
+method foo ( )
+
+ var v1 := 1;
+
+ /* Bei einem Variablen/Feldzugriff muss eine Variable oder ein Feld mit dem Namen sichtbar sein */
+ f1 := f1;
+ v1 := v1;
+
+ /* Bei einem Feldzugriff muss ein Feld mit dem Namen sichtbar sein */
+ this.f1 := this.f1;
+ this.v1 := this.v1;
+
+ return v1;
+end;