doc: paulchen beispiele {code{a,b},gesamt} entpackt (jedes mal entpacken nervt langsa...
authorBernhard Urban <lewurm@gmail.com>
Wed, 5 May 2010 18:45:27 +0000 (20:45 +0200)
committerBernhard Urban <lewurm@gmail.com>
Wed, 5 May 2010 18:45:27 +0000 (20:45 +0200)
875 files changed:
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/all-wcprops [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/entries [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/format [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/code.bfe.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/symbol_table.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/symbol_table.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/tree.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/tree.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/Makefile.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/code.bfe.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/code_gen.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/code_gen.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/parser.y.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/scanner.lex.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/symbol_table.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/symbol_table.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/tree.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/tree.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/Makefile [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/code.bfe [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/code_gen.c [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/code_gen.h [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/parser.y [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/scanner.lex [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/symbol_table.c [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/symbol_table.h [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/tree.c [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/tree.h [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/all-wcprops [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/entries [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/format [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/code.bfe.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/symbol_table.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/symbol_table.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/tree.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/tree.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/Makefile.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/code.bfe.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/code_gen.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/code_gen.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/parser.y.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/scanner.lex.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/symbol_table.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/symbol_table.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/test.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/test.input.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/tree.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/tree.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/Makefile [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/code.bfe [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/code_gen.c [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/code_gen.h [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/parser.y [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/scanner.lex [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/symbol_table.c [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/symbol_table.h [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/test.c [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/test.input [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/all-wcprops [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/entries [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/format [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_b.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_e.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_g.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_h.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_i.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_j.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_k.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebra.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebra.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebra1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebra1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran2.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran2.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran3.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran3.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran4.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran4.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f10.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f10.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f2.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f2.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f3.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f3.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f4.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f4.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f5.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f5.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f6.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f6.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f7.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f7.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f8.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f8.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f9.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f9.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/fib.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/fib.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_04.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_05.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_06.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_07.2.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_08.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_04.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_05.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_06.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_07.2.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_08.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g10.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g10.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g11.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g11.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g12.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g12.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g2.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g2.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g3.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g3.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g4.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g4.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g5.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g5.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g6.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g6.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g7.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g7.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g8.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g8.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g9.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g9.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h10.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h10.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h11.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h11.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h12.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h12.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h13.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h13.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h14.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h14.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h15.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h15.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h16.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h16.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h17.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h17.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h18.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h18.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h19.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h19.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h2.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h2.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h20.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h20.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h21.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h21.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h22.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h22.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h23.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h23.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h24.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h24.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h3.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h3.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h4.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h4.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h5.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h5.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h6.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h6.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h7.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h7.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h8.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h8.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h9.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h9.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/local01.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/localx01.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro01.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro02.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro03.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro04.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro05.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro06.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro07.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro09.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro10.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro11.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro12.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro13.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro14.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro15.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro16.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_a.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_a.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_b.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_b.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_c.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_c.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_d.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_d.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_e.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_e.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_f.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_f.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_g.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_g.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_h.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_h.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_i.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_j.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_j.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_k.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_k.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_l.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_l.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/negterm.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/negterm.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/negterm1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/negterm1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter2.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter2.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter3.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter3.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter4.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter4.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter5.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter5.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter6.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter6.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/regfehler.4.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/test1.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/test2.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/test3.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/test4.2.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/testscriptx03.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefemax.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefemax.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefen.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefen.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefen1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefen1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_b.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_e.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_g.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_h.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_i.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_j.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_k.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebra.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebra.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebra1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebra1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran2.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran2.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran3.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran3.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran4.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran4.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f10.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f10.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f2.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f2.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f3.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f3.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f4.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f4.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f5.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f5.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f6.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f6.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f7.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f7.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f8.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f8.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f9.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f9.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/fib.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/fib.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_04.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_05.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_06.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_07.2 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_08.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_04.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_05.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_06.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_07.2 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_08.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g10.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g10.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g11.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g11.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g12.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g12.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g2.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g2.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g3.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g3.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g4.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g4.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g5.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g5.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g6.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g6.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g7.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g7.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g8.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g8.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g9.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g9.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h10.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h10.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h11.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h11.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h12.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h12.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h13.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h13.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h14.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h14.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h15.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h15.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h16.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h16.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h17.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h17.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h18.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h18.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h19.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h19.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h2.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h2.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h20.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h20.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h21.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h21.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h22.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h22.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h23.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h23.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h24.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h24.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h3.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h3.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h4.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h4.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h5.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h5.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h6.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h6.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h7.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h7.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h8.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h8.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h9.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h9.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/local01.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/localx01.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro01.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro02.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro03.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro04.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro05.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro06.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro07.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro09.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro10.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro11.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro12.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro13.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro14.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro15.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro16.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_a.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_a.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_b.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_b.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_c.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_c.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_d.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_d.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_e.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_e.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_f.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_f.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_g.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_g.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_h.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_h.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_i.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_j.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_j.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_k.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_k.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_l.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_l.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/negterm.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/negterm.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/negterm1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/negterm1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter2.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter2.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter3.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter3.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter4.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter4.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter5.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter5.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter6.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter6.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/regfehler.4 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/test1.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/test2.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/test3.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/test4.2 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/testscriptx03.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefemax.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefemax.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefen.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefen.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefen1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefen1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/tree.c [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/tree.h [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/all-wcprops [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/entries [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/format [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/code.bfe.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/symbol_table.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/symbol_table.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/tree.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/tree.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/Makefile.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/code.bfe.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/code_gen.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/code_gen.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/parser.y.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/scanner.lex.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/symbol_table.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/symbol_table.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/test.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/test.input.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/tree.c.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/tree.h.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/Makefile [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/code.bfe [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/code_gen.c [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/code_gen.h [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/optfib.s [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/parser.y [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/scanner.lex [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/symbol_table.c [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/symbol_table.h [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/test.c [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/test.input [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/all-wcprops [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/entries [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/format [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_b.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_e.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_g.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_h.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_i.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_j.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_k.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebra.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebra.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebra1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebra1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran2.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran2.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran3.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran3.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran4.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran4.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/blubb1.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/blubb2.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f10.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f10.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f2.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f2.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f3.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f3.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f4.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f4.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f5.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f5.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f6.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f6.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f7.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f7.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f8.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f8.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f9.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f9.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/fib.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/fib.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/fib2.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/fib2.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_04.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_05.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_06.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_07.2.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_08.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_04.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_05.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_06.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_07.2.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_08.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g10.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g10.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g11.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g11.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g12.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g12.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g2.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g2.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g3.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g3.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g4.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g4.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g5.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g5.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g6.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g6.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g7.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g7.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g8.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g8.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g9.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g9.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h10.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h10.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h11.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h11.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h12.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h12.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h13.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h13.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h14.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h14.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h15.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h15.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h16.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h16.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h17.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h17.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h18.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h18.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h19.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h19.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h2.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h2.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h20.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h20.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h21.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h21.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h22.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h22.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h23.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h23.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h24.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h24.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h3.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h3.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h4.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h4.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h5.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h5.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h6.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h6.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h7.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h7.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h8.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h8.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h9.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h9.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/local01.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/localx01.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro01.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro02.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro03.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro04.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro05.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro06.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro07.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro09.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro10.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro11.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro12.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro13.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro14.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro15.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro16.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_a.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_a.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_b.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_b.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_c.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_c.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_d.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_d.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_e.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_e.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_f.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_f.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_g.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_g.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_h.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_h.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_i.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_j.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_j.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_k.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_k.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_l.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_l.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/negterm.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/negterm.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/negterm1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/negterm1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter2.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter2.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter3.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter3.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter4.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter4.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter5.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter5.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter6.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter6.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/regfehler.4.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/test1.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/test2.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/test3.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/test4.2.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/testscriptx03.3.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefemax.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefemax.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefen.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefen.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefen1.0.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefen1.call.svn-base [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_b.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_e.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_g.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_h.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_i.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_j.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_k.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebra.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebra.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebra1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebra1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran2.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran2.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran3.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran3.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran4.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran4.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/blubb1 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/blubb2 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f10.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f10.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f2.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f2.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f3.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f3.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f4.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f4.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f5.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f5.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f6.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f6.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f7.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f7.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f8.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f8.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f9.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f9.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/fib.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/fib.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/fib2.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/fib2.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_04.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_05.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_06.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_07.2 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_08.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_04.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_05.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_06.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_07.2 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_08.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g10.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g10.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g11.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g11.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g12.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g12.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g2.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g2.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g3.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g3.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g4.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g4.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g5.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g5.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g6.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g6.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g7.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g7.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g8.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g8.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g9.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g9.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h10.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h10.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h11.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h11.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h12.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h12.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h13.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h13.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h14.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h14.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h15.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h15.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h16.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h16.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h17.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h17.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h18.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h18.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h19.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h19.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h2.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h2.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h20.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h20.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h21.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h21.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h22.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h22.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h23.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h23.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h24.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h24.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h3.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h3.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h4.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h4.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h5.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h5.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h6.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h6.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h7.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h7.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h8.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h8.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h9.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h9.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/local01.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/localx01.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro01.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro02.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro03.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro04.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro05.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro06.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro07.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro09.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro10.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro11.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro12.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro13.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro14.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro15.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro16.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_a.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_a.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_b.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_b.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_c.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_c.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_d.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_d.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_e.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_e.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_f.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_f.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_g.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_g.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_h.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_h.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_i.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_j.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_j.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_k.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_k.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_l.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_l.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/negterm.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/negterm.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/negterm1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/negterm1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter2.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter2.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter3.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter3.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter4.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter4.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter5.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter5.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter6.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter6.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/regfehler.4 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/test1.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/test2.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/test3.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/test4.2 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/testscriptx03.3 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefemax.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefemax.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefen.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefen.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefen1.0 [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefen1.call [new file with mode: 0644]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/tree.c [new file with mode: 0755]
aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/tree.h [new file with mode: 0755]

diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/all-wcprops b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/all-wcprops
new file mode 100644 (file)
index 0000000..5e0caab
--- /dev/null
@@ -0,0 +1,65 @@
+K 25
+svn:wc:ra_dav:version-url
+V 38
+/svn/private/!svn/ver/759/ublu08/codea
+END
+scanner.lex
+K 25
+svn:wc:ra_dav:version-url
+V 50
+/svn/private/!svn/ver/683/ublu08/codea/scanner.lex
+END
+tree.c
+K 25
+svn:wc:ra_dav:version-url
+V 45
+/svn/private/!svn/ver/736/ublu08/codea/tree.c
+END
+symbol_table.h
+K 25
+svn:wc:ra_dav:version-url
+V 53
+/svn/private/!svn/ver/683/ublu08/codea/symbol_table.h
+END
+parser.y
+K 25
+svn:wc:ra_dav:version-url
+V 47
+/svn/private/!svn/ver/744/ublu08/codea/parser.y
+END
+code_gen.c
+K 25
+svn:wc:ra_dav:version-url
+V 49
+/svn/private/!svn/ver/759/ublu08/codea/code_gen.c
+END
+code.bfe
+K 25
+svn:wc:ra_dav:version-url
+V 47
+/svn/private/!svn/ver/780/ublu08/codea/code.bfe
+END
+tree.h
+K 25
+svn:wc:ra_dav:version-url
+V 45
+/svn/private/!svn/ver/744/ublu08/codea/tree.h
+END
+code_gen.h
+K 25
+svn:wc:ra_dav:version-url
+V 49
+/svn/private/!svn/ver/744/ublu08/codea/code_gen.h
+END
+Makefile
+K 25
+svn:wc:ra_dav:version-url
+V 47
+/svn/private/!svn/ver/683/ublu08/codea/Makefile
+END
+symbol_table.c
+K 25
+svn:wc:ra_dav:version-url
+V 53
+/svn/private/!svn/ver/781/ublu08/codea/symbol_table.c
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/entries b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/entries
new file mode 100644 (file)
index 0000000..b144cad
--- /dev/null
@@ -0,0 +1,153 @@
+8
+
+dir
+771
+http://localhost/svn/private/ublu08/codea
+http://localhost/svn/private
+
+
+
+2008-04-09T16:55:17.545963Z
+759
+paulchen
+
+
+svn:special svn:externals svn:needs-lock
+
+
+
+
+
+
+
+
+
+
+
+95840bc9-f7e0-4b9f-abbd-54bb5795df2f
+\f
+scanner.lex
+file
+
+
+
+
+2008-04-04T21:11:26.000000Z
+e5193bdf0f2e3175afb5173efc7ac4ec
+2008-04-04T21:10:31.347771Z
+683
+paulchen
+\f
+tree.c
+file
+
+
+
+
+2008-04-08T17:40:32.000000Z
+685018af3da8e73474391babdd351b88
+2008-04-08T17:48:59.604714Z
+736
+paulchen
+has-props
+\f
+symbol_table.h
+file
+
+
+
+
+2008-04-04T21:11:26.000000Z
+493b0c6d4a6b1f2b370fe1935e7b0706
+2008-04-04T21:10:31.347771Z
+683
+paulchen
+has-props
+\f
+parser.y
+file
+
+
+
+
+2008-04-13T09:53:12.000000Z
+82f5823d7ea48eb83ee4cf4c4056968b
+2008-04-08T22:39:27.776788Z
+744
+paulchen
+\f
+code_gen.c
+file
+
+
+
+
+2008-04-09T16:52:54.000000Z
+54532af314cac61a7b06519105ee632a
+2008-04-09T16:55:17.545963Z
+759
+paulchen
+\f
+code.bfe
+file
+780
+
+
+
+2008-04-12T23:25:30.000000Z
+ccc378cc28365656fe4510c7f2b0ac6e
+2008-04-12T23:25:36.662708Z
+780
+paulchen
+has-props
+\f
+tree.h
+file
+
+
+
+
+2008-04-08T22:36:56.000000Z
+25e9af1aa16f43c9a4881d3117aebef9
+2008-04-08T22:39:27.776788Z
+744
+paulchen
+has-props
+\f
+code_gen.h
+file
+
+
+
+
+2008-04-08T22:38:16.000000Z
+e083019b07480ef42ad0535a35907722
+2008-04-08T22:39:27.776788Z
+744
+paulchen
+\f
+Makefile
+file
+
+
+
+
+2008-04-04T21:11:26.000000Z
+ee3c37f22722c18807f0ab93a5ab4b70
+2008-04-04T21:10:31.347771Z
+683
+paulchen
+\f
+symbol_table.c
+file
+781
+
+
+
+2008-04-13T09:52:22.000000Z
+5f1213508c4c3e3866cadfb1ea8beb48
+2008-04-13T09:53:06.620369Z
+781
+paulchen
+has-props
+\f
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/format b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/format
new file mode 100644 (file)
index 0000000..45a4fb7
--- /dev/null
@@ -0,0 +1 @@
+8
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/code.bfe.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/code.bfe.svn-base
new file mode 100644 (file)
index 0000000..a669705
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 0
+
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/symbol_table.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/symbol_table.c.svn-base
new file mode 100644 (file)
index 0000000..a669705
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 0
+
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/symbol_table.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/symbol_table.h.svn-base
new file mode 100644 (file)
index 0000000..a669705
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 0
+
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/tree.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/tree.c.svn-base
new file mode 100644 (file)
index 0000000..a669705
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 0
+
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/tree.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/prop-base/tree.h.svn-base
new file mode 100644 (file)
index 0000000..a669705
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 0
+
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/Makefile.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/Makefile.svn-base
new file mode 100644 (file)
index 0000000..b7134d4
--- /dev/null
@@ -0,0 +1,38 @@
+all: codea
+
+scanner.c: oxout.l
+       flex -oscanner.c oxout.l
+
+scanner.o: scanner.c parser.h symbol_table.h
+       gcc -g -c -ansi -pedantic scanner.c -D_GNU_SOURCE
+
+codea: scanner.o parser.o symbol_table.o code_gen.o tree.o code.o
+       gcc -o codea symbol_table.o scanner.o parser.o code_gen.o tree.o code.o -lfl
+
+tree.o: tree.c tree.h
+       gcc -g -c -ansi -pedantic -Wall tree.c
+
+code_gen.o: code_gen.c code_gen.h
+       gcc -g -c -ansi -pedantic -Wall code_gen.c -D_GNU_SOURCE
+
+symbol_table.o: symbol_table.c symbol_table.h
+       gcc -g -c -ansi -pedantic -Wall symbol_table.c -D_GNU_SOURCE
+
+parser.o: parser.c symbol_table.h code_gen.h tree.h
+       gcc -g -c -ansi -pedantic parser.c
+
+parser.c parser.h: oxout.y
+       yacc -d oxout.y -o parser.c
+
+oxout.y oxout.l: parser.y scanner.lex
+       ox parser.y scanner.lex
+
+code.o: code.c tree.h
+       gcc -g -ansi -c code.c
+
+code.c: code.bfe
+       bfe < code.bfe | iburg > code.c
+
+clean:
+       rm -f codea scanner.o scanner.c parser.h parser.c parser.o oxout.y oxout.l symbol_table.o code_gen.o tree.o code.c code.o
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/code.bfe.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/code.bfe.svn-base
new file mode 100644 (file)
index 0000000..074bae2
--- /dev/null
@@ -0,0 +1,70 @@
+%{
+/* vim: filetype=c
+ */
+#define CODE
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#include "tree.h"
+#include "code_gen.h"
+
+/* TODO (-a)+b */
+/* TODO func f(a,a) return a; end; shall do the same as func f(b,a) return a; end; */
+%}
+
+%start stat
+%term OP_Not=1 OP_Negation=2 OP_Addition=3 OP_Multiplication=4 OP_Disjunction=5 OP_Greater=6 OP_Equal=7 OP_ID=8 OP_Number=9 OP_Field=10 OP_Return=11 OP_Zero=12 OP_One=13 OP_Exprs=14 OP_Call=15
+
+%%
+
+stat:  ret                                     # 0 #
+
+ret:   OP_Return(expr)                         # 1 # move(bnode->reg, "rax"); ret(); 
+
+expr:  OP_ID                                   # 1 # if(bnode->value<0) move(get_param_reg(-bnode->value), bnode->reg);
+expr:  imm                                     # 1 # printf("\tmovq $%li, %%%s\n", bnode->value, bnode->reg);
+expr:  call                                    # 0 #
+expr:  OP_Negation(expr)                       # 1 # printf("\tnegq %%%s\n", bnode->reg);
+expr:  OP_Addition(expr,expr)                  # 1 # printf("\taddq %%%s, %%%s\n", bnode->kids[0]->reg, bnode->kids[1]->reg);
+expr:  OP_Addition(imm,expr)                   # 1 # printf("\taddq $%li, %%%s\n", bnode->kids[0]->value, bnode->kids[1]->reg);
+expr:  OP_Addition(expr,imm)                   # 1 # if(bnode->kids[0]->op=OP_ID) { move(bnode->kids[0]->reg, bnode->reg); printf("\taddq $%li, %%%s\n", bnode->kids[1]->value, bnode->reg); } else { printf("\tadd $%li, %%%s\n", bnode->kids[1]->value, bnode->kids[0]->reg); }
+expr:  OP_Multiplication(expr,expr)            # 1 # printf("\timulq %%%s, %%%s\n", bnode->kids[0]->reg, bnode->kids[1]->reg);
+expr:  OP_Multiplication(imm,expr)             # 1 # printf("\timulq $%li, %%%s\n", bnode->kids[0]->value, bnode->kids[1]->reg);
+expr:  OP_Multiplication(expr,imm)             # 1 # if(bnode->kids[0]->op=OP_ID) { move(bnode->kids[0]->reg, bnode->reg); printf("\timulq $%li, %%%s\n", bnode->kids[1]->value, bnode->reg); } else { printf("\tadd $%li, %%%s\n", bnode->kids[1]->value, bnode->kids[0]->reg); }
+expr:  OP_Field(expr,OP_ID)                    # 2 # printf("\tmovq %li(%%%s), %%%s\n", 8*bnode->value, bnode->kids[0]->reg, bnode->reg);
+expr:  OP_Field(imm,OP_ID)                     # 1 # printf("\tmovq %li, %%%s\n", bnode->kids[0]->value+bnode->value*8, bnode->reg);
+expr:  OP_Addition(expr, OP_Negation(expr))    # 1 # printf("\tsubq %%%s, %%%s\n", bnode->kids[0]->reg, bnode->kids[1]->kids[0]->reg);
+expr:  OP_Addition(OP_Negation(expr), OP_Negation(expr))       # 1 # printf("\taddq %%%s, %%%s\n\tneg %%%s\n", bnode->kids[0]->kids[0]->reg, bnode->kids[1]->kids[0]->reg, bnode->kids[1]->kids[0]->reg);
+expr:  OP_Multiplication(OP_Negation(expr), OP_Negation(expr)) # 1 # printf("\timulq %%%s, %%%s\n", bnode->kids[0]->reg, bnode->kids[1]->reg);
+
+call:  OP_Call(OP_ID,exprs)                    # 0 # /* ignore at the moment */
+
+exprs: expr                                    # 0 #
+exprs: OP_Exprs(exprs,expr)                    # 0 #
+
+zero:  OP_Negation(zero)                       # 0 #
+zero:  OP_Zero                                 # 0 #
+zero:  OP_Multiplication(zexpr,zero)           # 0 #
+zero:  OP_Multiplication(zero,zexpr)           # 0 #
+
+zexpr: zero                                    # 0 #
+zexpr: imm                                     # 0 #
+zexpr: OP_Negation(zexpr)                      # 0 #
+zexpr: OP_Addition(zexpr,zexpr)                # 0 #
+zexpr: OP_Multiplication(zexpr,zexpr)          # 0 #
+zexpr: OP_Field(zexpr,OP_ID)                   # 0 #
+zexpr: OP_ID                                   # 0 #
+
+imm:   zero                                    # 0 #
+imm:   OP_Negation(imm)                        # 0 # bnode->value=-bnode->kids[0]->value;
+imm:   OP_Addition(imm,imm)                    # 0 # bnode->value=bnode->kids[0]->value+bnode->kids[1]->value;
+imm:   OP_Multiplication(imm,imm)              # 0 # bnode->value=bnode->kids[0]->value*bnode->kids[1]->value;
+imm:   OP_Number                               # 0 # 
+imm:   OP_Zero                                 # 0 # 
+imm:   OP_One                                  # 0 # 
+
+%%
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/code_gen.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/code_gen.c.svn-base
new file mode 100644 (file)
index 0000000..09c43a9
--- /dev/null
@@ -0,0 +1,43 @@
+#include <stdio.h>
+#include <string.h>
+#include "code_gen.h"
+
+void function_header(char *name) {
+       printf("\t.globl %s\n\t.type %s, @function\n%s:\n", name, name, name);
+}
+
+char *get_next_reg(char *name, int skip_reg) {
+       char *reg_names[]={"rax", "r10", "r11", "r9", "r8", "rcx", "rdx", "rsi", "rdi"};
+       int index, a;
+       if(name==(char *)NULL) {
+               index=0;
+       }
+       else {
+               for(a=0;a<9;a++) {
+                       if(!strcmp(name,reg_names[a])) {
+                               index=a+1;
+                               break;
+                       }
+               }
+       }
+       if(skip_reg) {
+               index++;
+       }
+       return reg_names[index];
+}
+
+char *get_param_reg(long number) {
+       char *reg_names[]={"rdi", "rsi", "rdx", "rcx", "r8", "r9"};
+       return reg_names[number-1];
+}
+
+void ret(void) {
+       printf("\tret\n");
+}
+
+void move(char *src, char *dst) {
+       if(strcmp(src,dst)) {
+               printf("\tmovq %%%s, %%%s\n",src,dst);
+       }
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/code_gen.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/code_gen.h.svn-base
new file mode 100644 (file)
index 0000000..7dcbc5a
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef _CODE_GEN_H_
+#define _CODE_GEN_H_
+
+void function_header(char *name);
+char *get_next_reg(char *name, int skip_reg);
+char *get_param_reg(long number);
+void ret(void);
+void move(char *src, char *dest);
+
+#endif /* _CODE_GEN_H_ */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/parser.y.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/parser.y.svn-base
new file mode 100644 (file)
index 0000000..869143b
--- /dev/null
@@ -0,0 +1,345 @@
+%{
+       #include <stdio.h>
+       #include <stdlib.h>
+       #include <string.h>
+       #include "symbol_table.h"
+       #include "code_gen.h"
+       #include "tree.h"
+%}
+
+%start         Input
+%token         FUNC END STRUCT VAR IF THEN ELSE WHILE DO RETURN OR NOT
+%token         ID NUM ASSIGN GREATER
+
+@autoinh symbols stack_offset all_pars
+@autosyn node defined_vars immediate
+
+@attributes    { char *name; } ID
+@attributes    { long value; } NUM
+@attributes    { struct symbol_t *fields; struct symbol_t *symbols; } Program
+@attributes    { struct symbol_t *fields; } Structdef
+@attributes    { struct symbol_t *fields; int offset; } Ids
+@attributes    { struct symbol_t *pars; int num_pars; int all_pars; } Pars
+@attributes    { struct symbol_t *symbols; int defined_vars; } Funcdef 
+@attributes    { struct symbol_t *symbols; int defined_vars; int stack_offset; } Stats
+@attributes    { struct symbol_t *symbols; treenode *node; int immediate; } Expr Term Plusterm Malterm
+@attributes    { struct symbol_t *symbols; treenode *node; } Bool Call Lexpr Field Bterm Orterm Exprs
+@attributes    { struct symbol_t *in_symbols; struct symbol_t *out_symbols; treenode *node; int defined_vars; int stack_offset; } Stat
+
+@traversal @postorder check
+@traversal @preorder reg
+@traversal @postorder codegen
+
+%%
+
+Input:           Program
+               @{
+                  @i @Program.symbols@ = @Program.fields@;
+
+                  @codegen @revorder(1) printf("\t.text\n");
+               @}
+
+               ;
+
+Program:         Funcdef ';' Program
+               @{
+                  @i @Program.fields@ = @Program.1.fields@;
+               @}
+
+               | Structdef ';' Program
+               @{
+                  @i @Program.fields@ = table_merge(@Structdef.fields@, @Program.1.fields@, 1);
+                  @i @Program.1.symbols@ = @Program.0.symbols@;
+               @}
+
+               |
+               @{ @i @Program.fields@ = new_table(); @}
+
+               ;
+Funcdef:         FUNC ID '(' Pars ')' Stats END
+                       @{
+                  @i @Stats.symbols@ = table_merge(@Funcdef.symbols@, @Pars.pars@, 0);
+                  @i @Stats.stack_offset@ = 0;
+                  @i @Pars.all_pars@ = @Pars.num_pars@;
+
+                  @codegen @revorder(1) function_header(@ID.name@);
+               @}
+
+               | FUNC ID '(' ')' Stats END
+                       @{
+                  @i @Stats.symbols@ = table_merge(@Funcdef.symbols@, new_table(), 0);
+                  @i @Stats.stack_offset@ = 0;
+
+                  @codegen @revorder(1) function_header(@ID.name@);
+               @}
+
+               ;  
+Structdef:       STRUCT Ids END
+               @{
+                  @i @Structdef.fields@ = @Ids.fields@;
+                  @i @Ids.offset@ = 0;
+               @}
+
+               ;  
+
+Ids:             ID Ids
+               @{
+                  @i @Ids.fields@ = table_add_symbol(@Ids.1.fields@, @ID.name@, SYMBOL_TYPE_FIELD, 1, @Ids.offset@);
+                  @i @Ids.1.offset@ = @Ids.offset@ + 1;
+               @}
+
+               |
+               @{ @i @Ids.fields@ = new_table(); @}
+
+               ;
+
+Pars:            Pars ',' ID
+               @{
+                   @i @Pars.pars@ = table_add_symbol(@Pars.1.pars@, @ID.name@, SYMBOL_TYPE_PARAM, 0, -@Pars.num_pars@);
+                  @i @Pars.num_pars@ = @Pars.1.num_pars@ + 1;
+                @}
+
+               | ID
+               @{
+                   @i @Pars.pars@ = table_add_symbol(new_table(), @ID.name@, SYMBOL_TYPE_PARAM, 0, -1);
+                   @i @Pars.num_pars@ = 1;
+                @}
+
+               ; 
+Stats:           Stat ';' Stats
+               @{
+                  @i @Stat.in_symbols@ = @Stats.symbols@;
+                  @i @Stats.1.symbols@ = @Stat.out_symbols@;
+                  @i @Stats.defined_vars@ = @Stat.defined_vars@ + @Stats.1.defined_vars@;
+                  @i @Stats.1.stack_offset@ = @Stats.stack_offset@ + @Stat.defined_vars@ * 8;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               |
+               @{ @i @Stats.defined_vars@ = 0; @}
+
+               ;  
+Stat:            VAR ID ASSIGN Expr
+               @{
+                  @i @Stat.out_symbols@ = table_add_symbol(clone_table(@Stat.in_symbols@), @ID.name@, SYMBOL_TYPE_VAR, 0, 0);
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+                  @i @Stat.defined_vars@ = 1;
+               @}
+
+               | Lexpr ASSIGN Expr
+               @{
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Lexpr.symbols@ = @Stat.in_symbols@;
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+                  @i @Stat.defined_vars@ = 0;
+               @}
+
+               | IF Bool THEN Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+               @}
+
+               | IF Bool THEN Stats ELSE Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.1.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+                  @i @Stat.defined_vars@ = @Stats.defined_vars@ + @Stats.1.defined_vars@;
+               @}
+
+               | WHILE Bool DO Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+               @}
+
+               | Call
+               @{
+                  @i @Call.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+                  @i @Stat.defined_vars@ = 0;
+               @}
+
+               | RETURN Expr
+               @{
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Return, @Expr.node@, (treenode *)NULL);
+
+                  @reg @Stat.node@->reg = get_next_reg((char *)NULL, 0); @Expr.node@->reg = @Stat.node@->reg;
+                  @i @Stat.defined_vars@ = 0;
+               @}
+
+               ;
+Lexpr:           ID
+               @{
+                  @i @Lexpr.node@ = (treenode *)NULL;
+                  @check check_variable(@Lexpr.symbols@, @ID.name@);
+               @}
+
+               | Field
+               ;
+Expr:            '-' Term
+               @{
+                  @i @Expr.node@ = new_node(OP_Negation, @Term.node@, (treenode *)NULL);
+
+                  @reg @Term.node@->reg = @Expr.node@->reg;
+               @}
+
+               | Term
+               @{ @reg @Term.node@->reg = @Expr.node@->reg; @}
+
+               | Term Plusterm
+               @{
+                  @i @Expr.node@ = new_node(OP_Addition, @Term.node@, @Plusterm.node@);
+                  @i @Expr.immediate@ = @Term.immediate@ && @Plusterm.immediate@;
+
+                  @reg if(!@Plusterm.immediate@) { @Plusterm.node@->reg = @Expr.node@->reg; @Term.node@->reg = (@Term.node@->op==OP_ID && table_lookup(@Term.symbols@, @Term.node@->name)->type==SYMBOL_TYPE_PARAM) ? get_param_reg(-table_lookup(@Term.symbols@, @Term.node@->name)->stack_offset) : get_next_reg(@Plusterm.node@->reg, @Expr.node@->skip_reg); @Plusterm.node@->skip_reg = 1; } else { @Term.node@->reg = @Expr.node@->reg; @Plusterm.node@->reg = get_next_reg(@Term.node@->reg, @Expr.node@->skip_reg); }
+               @}
+
+               | Term Malterm
+               @{
+                  @i @Expr.node@ = new_node(OP_Multiplication, @Term.node@, @Malterm.node@);
+                  @i @Expr.immediate@ = @Term.immediate@ && @Malterm.immediate@;
+
+                  @reg if(!@Malterm.immediate@) { @Malterm.node@->reg = @Expr.node@->reg; @Term.node@->reg = (@Term.node@->op==OP_ID && table_lookup(@Term.symbols@, @Term.node@->name)->type==SYMBOL_TYPE_PARAM) ? get_param_reg(-table_lookup(@Term.symbols@, @Term.node@->name)->stack_offset) : get_next_reg(@Malterm.node@->reg, @Expr.node@->skip_reg); @Malterm.node@->skip_reg = 1; } else { @Term.node@-> reg = @Expr.node@->reg; @Malterm.node@->reg = get_next_reg(@Term.node@->reg, @Expr.node@->skip_reg); }
+               @}
+
+               ;
+
+Plusterm:        '+' Term Plusterm
+               @{
+                  @i @Plusterm.node@ = new_node(OP_Addition, @Term.node@, @Plusterm.1.node@);
+                  @i @Plusterm.immediate@ = @Term.immediate@ && @Plusterm.1.immediate@;
+
+                  @reg @Plusterm.1.node@->reg = @Plusterm.node@->reg; @Term.node@->reg = (@Term.node@->op==OP_ID && table_lookup(@Term.symbols@, @Term.node@->name)->type==SYMBOL_TYPE_PARAM) ? get_param_reg(-table_lookup(@Term.symbols@, @Term.node@->name)->stack_offset) : get_next_reg(@Plusterm.1.node@->reg, @Plusterm.node@->skip_reg); 
+               @}
+
+               | '+' Term
+               @{ @reg @Term.node@->reg = @Plusterm.node@->reg; @}
+
+               ;
+
+Malterm:         '*' Term Malterm
+               @{
+                  @i @Malterm.node@ = new_node(OP_Multiplication, @Term.node@, @Malterm.1.node@);
+                  @i @Malterm.immediate@ = @Term.immediate@ && @Malterm.1.immediate@;
+
+                  @reg @Malterm.1.node@->reg = @Malterm.node@->reg; @Term.node@->reg = (@Term.node@->op==OP_ID && table_lookup(@Term.symbols@, @Term.node@->name)->type==SYMBOL_TYPE_PARAM) ? get_param_reg(-table_lookup(@Term.symbols@, @Term.node@->name)->stack_offset) : get_next_reg(@Malterm.1.node@->reg, @Malterm.node@->skip_reg); 
+               @}
+
+                       | '*' Term
+               @{ @reg @Term.node@->reg = @Malterm.node@->reg; @}
+
+               ;
+Term:            '(' Expr ')'
+               @{ @reg @Expr.node@->reg = @Term.node@->reg; @}
+
+               | ID
+               @{
+                  @i @Term.node@ = new_named_leaf_value(OP_ID, @ID.name@, (table_lookup(@Term.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Term.symbols@, @ID.name@)->stack_offset);
+                  @i @Term.immediate@ = 0;
+
+                  @check check_variable(@Term.symbols@, @ID.name@);
+               @}
+
+               | NUM
+               @{
+                  @i @Term.node@ = new_number_leaf(@NUM.value@);
+                  @i @Term.immediate@ = 1;
+               @}
+
+               | Call
+               @{ @i @Term.immediate@ = 0; @}
+
+               | Field
+               @{
+                  @i @Term.immediate@ = 0;
+
+                  @reg @Field.node@->reg = @Term.node@->reg;
+               @}
+
+               ;
+
+Bool:            Bterm
+               | Bterm Orterm
+               @{ @i @Bool.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.node@); @}
+
+               | NOT Bterm
+               @{ @i @Bool.node@ = new_node(OP_Not, @Bterm.node@, (treenode *)NULL); @}
+
+               ;
+
+Orterm:                  OR Bterm Orterm
+               @{ @i @Orterm.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.1.node@); @}
+
+               | OR Bterm
+               ;
+
+Bterm:           Term GREATER Term
+               @{ @i @Bterm.node@ = new_node(OP_Greater, @Term.node@, @Term.1.node@); @}
+
+               | Term '=' Term
+               @{ @i @Bterm.node@ = new_node(OP_Equal, @Term.node@, @Term.1.node@); @}
+
+               | '(' Bool ')'
+               ;
+
+Field:           Term '.' ID
+               @{
+                  @i @Field.node@ = new_node_value(OP_Field, @Term.node@, new_named_leaf(OP_ID, @ID.name@), table_lookup(@Field.symbols@, @ID.name@)==(struct symbol_t *)NULL ? 0 : table_lookup(@Field.symbols@, @ID.name@)->stack_offset);
+
+                  @check check_field(@Field.symbols@, @ID.name@);
+
+                  @reg @Term.node@->reg = @Field.node@->reg; @Field.node@->kids[1]->reg = get_next_reg(@Field.node@->reg, 0); 
+               @}
+
+               ;
+
+Call:            ID '(' Exprs ')'
+               @{ @i @Call.node@ = new_node(OP_Call, new_named_leaf(OP_ID, @ID.name@), @Exprs.node@); @}
+
+               | ID '(' ')'
+               @{ @i @Call.node@ = new_node(OP_Call, new_named_leaf(OP_ID, @ID.name@), NULL); @}
+
+               ;
+
+Exprs:           Expr
+               | Exprs ',' Expr
+               @{ @i @Exprs.node@ = new_node(OP_Exprs, @Exprs.1.node@, @Expr.node@); @}
+
+               ;
+
+%%
+
+extern int yylex();
+extern int yylineno;
+
+int yyerror(char *error_text) {
+       fprintf(stderr,"Line %i: %s\n",yylineno, error_text);
+       exit(2);
+}
+
+int main(int argc, char **argv) {
+       yyparse();
+       return 0;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/scanner.lex.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/scanner.lex.svn-base
new file mode 100644 (file)
index 0000000..5cf6520
--- /dev/null
@@ -0,0 +1,67 @@
+       #include <stdio.h>
+       #include <stdlib.h>
+       #include <string.h>
+       #include "parser.h"
+       #include "tree.h"
+
+KEYWORD                func|end|struct|var|if|then|else|while|do|return|or|not
+IDENTIFIER     [[:alpha:]_][[:alnum:]_]*
+NUMBER_HEX     [0-9][0-9A-Fa-f]*H
+NUMBER_DEC     [0-9]+
+WHITESPACE     [\t\n\r ]
+COMMENT_START  \(\*
+COMMENT_END    \*\)
+
+%x COMMENT
+%option yylineno
+%%
+
+{COMMENT_START}                        BEGIN(COMMENT);
+
+<COMMENT>{COMMENT_END}         BEGIN(INITIAL);
+
+<COMMENT>{COMMENT_START}       fprintf(stderr, "Possibly nested comment on line %i\n", yylineno);
+
+<COMMENT><<EOF>>               { fprintf(stderr, "Unterminated comment.\n"); exit(1); }
+
+<COMMENT>{WHITESPACE}          /* ignore */
+
+<COMMENT>.                     /* ignore everything inside comment */
+
+func                           return(FUNC);
+end                            return(END);
+struct                         return(STRUCT);
+var                            return(VAR);
+if                             return(IF);
+then                           return(THEN);
+else                           return(ELSE);
+while                          return(WHILE);
+do                             return(DO);
+return                         return(RETURN);
+or                             return(OR);
+not                            return(NOT);
+
+{IDENTIFIER}                   return(ID); @{ @ID.name@=strdup(yytext); @}
+
+{NUMBER_DEC}                   return(NUM); @{ @NUM.value@=strtol(yytext,(char **)NULL,10); @}
+{NUMBER_HEX}                   return(NUM); @{ yytext[strlen(yytext)-1]='\0'; @NUM.value@=strtol(yytext,(char **)NULL,16); @}
+                               
+\:=                            return(ASSIGN);
+>=                             return(GREATER);
+\;                             return(';');
+\.                             return('.');
+\(                             return('(');
+\)                             return(')');
+\,                             return(',');
+\-                             return('-');
+\+                             return('+');
+\*                             return('*');
+=                              return('=');
+
+{WHITESPACE}                   /* ignore */
+
+.                              { fprintf(stderr, "Lexical error on line %i\n", yylineno); exit(1); }
+
+%%
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/symbol_table.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/symbol_table.c.svn-base
new file mode 100644 (file)
index 0000000..1d4fa5e
--- /dev/null
@@ -0,0 +1,154 @@
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "symbol_table.h"
+
+struct symbol_t *new_table(void) {
+       return (struct symbol_t *)NULL;
+}
+
+struct symbol_t *clone_table(struct symbol_t *table) {
+       struct symbol_t *element;
+       struct symbol_t *new_tablex;
+
+       element=table;
+       new_tablex=new_table();
+       while((struct symbol_t *)NULL!=element) {
+               /* check return value */
+               new_tablex=table_add_symbol(new_tablex,element->identifier,element->type,0,element->stack_offset);
+               element=element->next;
+       }
+
+       return new_tablex;
+}
+
+struct symbol_t *table_add_symbol(struct symbol_t *table, char *identifier, short type, short check, int stack_offset) {
+       struct symbol_t *element;
+       struct symbol_t *new_element;
+
+       if(table_lookup(table,identifier)!=(struct symbol_t *)NULL) {
+               if(check) {
+                       fprintf(stderr,"Duplicate field %s.\n",identifier);
+                       exit(3);
+               }
+
+               table=table_remove_symbol(table,identifier);
+       }
+       
+       new_element=(struct symbol_t *)malloc(sizeof(struct symbol_t));
+       new_element->next=(struct symbol_t *)NULL;
+       new_element->identifier=strdup(identifier);
+       new_element->type=type;
+       new_element->stack_offset=stack_offset;
+
+       if((struct symbol_t *)NULL==table) {
+               return new_element;
+       }
+       element=table;
+
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+       }
+
+       element->next=new_element;
+       
+       return table;
+}
+
+struct symbol_t *table_lookup(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element;
+
+       element=table;
+
+       if((struct symbol_t *)NULL==table) {
+               return (struct symbol_t *)NULL;
+       }
+       
+       if(strcmp(element->identifier,identifier)==0) {
+               return element;
+       }
+       
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+               if(strcmp(element->identifier,identifier)==0) {
+                       return element;
+               }
+       }
+
+       return (struct symbol_t *)NULL;
+}
+
+struct symbol_t *table_merge(struct symbol_t *table, struct symbol_t *to_add, short check) {
+       struct symbol_t *element;
+       struct symbol_t *new_table=clone_table(table);
+       
+       element=to_add;
+       while(element!=(struct symbol_t *)NULL) {
+               printf("%s\n",element->identifier);
+               new_table=table_add_symbol(new_table,element->identifier,element->type,check,element->stack_offset);
+               element=element->next;
+       }
+
+       return new_table;
+}
+
+struct symbol_t *table_remove_symbol(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element;
+       struct symbol_t *previous_element;
+       struct symbol_t *new_element;
+
+       if((struct symbol_t *)NULL==table) {
+               return table;
+       }
+
+       previous_element=(struct symbol_t *)NULL;
+       element=table;
+
+       while((struct symbol_t *)NULL!=element) {
+               if(strcmp(element->identifier,identifier)==0) {
+                       if((struct symbol_t *)NULL==previous_element) {
+                               new_element=element->next;
+                       }
+                       else {
+                               previous_element->next=element->next;
+                               new_element=table;
+                       }
+                       (void)free(element->identifier);
+                       (void)free(element);
+                       return new_element;
+               }
+               previous_element=element;
+               element=element->next;
+       }
+
+       return table;
+}
+
+void check_variable(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element=table_lookup(table,identifier);
+       if(element!=(struct symbol_t *)NULL) {
+               if(element->type!=SYMBOL_TYPE_VAR && element->type!=SYMBOL_TYPE_PARAM) {
+                       fprintf(stderr,"Identifier %s not a variable.\n",identifier);
+                       exit(3);
+               }
+       }
+       else {
+               fprintf(stderr,"Unknown identifier %s.\n",identifier);
+               exit(3);
+       }
+}
+
+void check_field(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element=table_lookup(table,identifier);
+       if(element!=(struct symbol_t *)NULL) {
+               if(element->type!=SYMBOL_TYPE_FIELD) {
+                       fprintf(stderr,"Identifier %s not a variable.\n",identifier);
+                       exit(3);
+               }
+       }
+       else {
+               fprintf(stderr,"Unknown identifier %s.\n",identifier);
+               exit(3);
+       }
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/symbol_table.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/symbol_table.h.svn-base
new file mode 100644 (file)
index 0000000..bf8262b
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef SYMBOL_TABLE_H
+#define SYMBOL_TABLE_H
+
+#define SYMBOL_TYPE_FIELD 1
+#define SYMBOL_TYPE_VAR 2
+#define SYMBOL_TYPE_PARAM 3
+
+struct symbol_t {
+       char *identifier;
+       struct symbol_t *next;
+       short type;
+       int stack_offset;
+};
+
+struct symbol_t *clone_table(struct symbol_t *table);
+struct symbol_t *new_table(void);
+struct symbol_t *table_add_symbol(struct symbol_t *table, char *identifier, short type, short check, int stack_offset);
+struct symbol_t *table_lookup(struct symbol_t *table, char *identifier);
+struct symbol_t *table_remove_symbol(struct symbol_t *table, char *identifier);
+struct symbol_t *table_merge(struct symbol_t *table, struct symbol_t *to_add, short check);
+void check_variable(struct symbol_t *table, char *identifier);
+void check_field(struct symbol_t *table, char *identifier);
+
+#endif /* SYMBOL_TABLE_H */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/tree.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/tree.c.svn-base
new file mode 100644 (file)
index 0000000..72c7377
--- /dev/null
@@ -0,0 +1,155 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "tree.h"
+#include "code_gen.h"
+
+/* new_node: create "standard node" with one or two children and
+ * given operation
+ */
+treenode *new_node(int op, treenode *left, treenode *right) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+
+#ifdef DEBUG
+       printf("new_node: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=(char *)NULL;
+
+       return new;
+}
+
+/* new_node_value: create "standard node" with one or two children and
+ * given operation and the given value
+ */
+treenode *new_node_value(int op, treenode *left, treenode *right, long value) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+
+#ifdef DEBUG
+       printf("new_node: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=(char *)NULL;
+       new->value=value;
+
+       return new;
+}
+
+/* new_leaf: create leaf - node with no children */
+treenode *new_leaf(int op) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_leaf: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=(char *)NULL;
+
+       return new;
+}
+
+/* new_named_leaf: create leaf with name (used for identifier or
+ * value of number)
+ */
+treenode *new_named_leaf(int op, char *name) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_leaf: %i (%s), %s\n",op,rule_names[op],name);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=name;
+
+       return new;
+}
+
+/* new_named_leaf_value: create leaf with name (used for identifier or
+ * value of number)
+ */
+treenode *new_named_leaf_value(int op, char *name, long value) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_leaf_value: %i (%s), %s, %li\n",op,rule_names[op],name,value);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=name;
+       new->value=value;
+
+       return new;
+}
+
+/* new_named_node: create node with one or two children and a name (can be
+ * used for storing a procedure's name)
+ */
+treenode *new_named_node(int op, treenode *left, treenode *right, char *name) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_node: %i (%s), %s\n",op,rule_names[op],name);
+#endif
+       
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=name;
+
+       return new;
+}
+
+void write_indent(int indent) {
+       int a;
+       for(a=0;a<indent;a++) {
+               printf("|");
+       }
+}
+
+/* write_tree: display the tree generated by the attributed grammar; this tree willk
+ * be traversed by iburg
+ */
+void write_tree(treenode *node, int indent) {
+       write_indent(indent);
+       printf("%s, %s, %s\n",rule_names[node->op],node->name,node->reg);
+       if(node->kids[0]!=(treenode *)NULL || node->kids[1]!=(treenode *)NULL) {
+               if(node->kids[0]!=(treenode *)NULL) {
+                       write_tree(node->kids[0], indent+1);
+               }
+               if(node->kids[1]!=(treenode *)NULL) {
+                       write_tree(node->kids[1], indent+1);
+               }
+       }
+}
+
+treenode *new_number_leaf(long value) {
+       treenode *node;
+
+        if(value==0) {
+               node=new_leaf(OP_Zero);
+       }
+       else if(value==1) {
+               node=new_leaf(OP_One);
+       }
+       else {
+               node=new_leaf(OP_Number);
+        }
+
+       node->value=value;
+
+       return node;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/tree.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/.svn/text-base/tree.h.svn-base
new file mode 100644 (file)
index 0000000..0b88cd6
--- /dev/null
@@ -0,0 +1,81 @@
+#ifndef __TREE_H_
+#define __TREE_H_
+
+#ifndef CODE
+typedef struct burm_state *STATEPTR_TYPE; 
+#endif
+
+enum {
+       OP_Not=1,
+       OP_Negation,
+       OP_Addition,
+       OP_Multiplication,
+       OP_Disjunction,
+       OP_Greater,
+       OP_Equal,
+       OP_ID,
+       OP_Number,
+       OP_Field,
+       OP_Return,
+       OP_Zero,
+       OP_One,
+       OP_Exprs,
+       OP_Call
+};
+
+static char rule_names[100][100]={
+       "",
+        "OP_Not",
+        "OP_Negation",
+        "OP_Addition",
+        "OP_Multiplication",
+        "OP_Disjunction",
+        "OP_Greater",
+        "OP_Equal",
+        "OP_ID",
+        "OP_Number",
+        "OP_Field",
+       "OP_Return",
+       "OP_Zero",
+       "OP_One",
+       "OP_Exprs",
+       "OP_Call"
+};
+         
+
+/* struct for the tree build by ox for iburg */
+typedef struct treenode {
+       int op;
+       struct treenode *kids[2];
+       STATEPTR_TYPE label;
+       char *name;
+       long value;
+       char *reg;
+       struct treenode *parent;
+       int skip_reg;
+} treenode;
+
+typedef treenode *treenodep;
+
+/* macros for iburg being able to traverse the tree */
+#define NODEPTR_TYPE           treenodep
+#define OP_LABEL(p)            ((p)->op)
+#define LEFT_CHILD(p)          ((p)->kids[0])
+#define RIGHT_CHILD(p)         ((p)->kids[1])
+#define STATE_LABEL(p)         ((p)->label)
+#define PANIC                  printf
+
+/* see tree.c for description about these procedures */
+treenode *new_node(int op, treenode *left, treenode *right);
+treenode *new_node_value(int op, treenode *left, treenode *right, long value);
+treenode *new_leaf(int op);
+treenode *new_number_leaf(long value);
+treenode *new_named_leaf(int op, char *name);
+treenode *new_named_leaf_value(int op, char *name, long value);
+treenode *new_named_node(int op, treenode *left, treenode *right, char *name);
+
+void write_indent(int indent);
+void write_tree(treenode *node, int indent);
+
+#endif /* __TREE_H */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/Makefile b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/Makefile
new file mode 100644 (file)
index 0000000..ede9e40
--- /dev/null
@@ -0,0 +1,38 @@
+all: codea
+
+scanner.c: oxout.l
+       flex -oscanner.c oxout.l
+
+scanner.o: scanner.c parser.h symbol_table.h
+       gcc -g -c -ansi -pedantic scanner.c -D_GNU_SOURCE
+
+codea: scanner.o parser.o symbol_table.o code_gen.o tree.o code.o
+       gcc -o codea symbol_table.o scanner.o parser.o code_gen.o tree.o code.o -lfl
+
+tree.o: tree.c tree.h
+       gcc -g -c -ansi -pedantic -Wall tree.c
+
+code_gen.o: code_gen.c code_gen.h
+       gcc -g -c -ansi -pedantic -Wall code_gen.c -D_GNU_SOURCE
+
+symbol_table.o: symbol_table.c symbol_table.h
+       gcc -g -c -ansi -pedantic -Wall symbol_table.c -D_GNU_SOURCE
+
+parser.o: parser.c symbol_table.h code_gen.h tree.h
+       gcc -g -c -ansi -pedantic parser.c
+
+parser.c parser.h: oxout.y
+       yacc -d oxout.y -o parser.c
+
+oxout.y oxout.l: parser.y scanner.lex
+       ox parser.y scanner.lex
+
+code.o: code.c tree.h
+       gcc -g -ansi -c code.c
+
+code.c: code.bfe
+       bfe < code.bfe | iburg > code.c
+
+clean:
+       rm -f codea scanner.o scanner.c parser.h parser.c parser.o oxout.y oxout.l symbol_table.o code_gen.o tree.o code.c code.o testcodea* a.out
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/code.bfe b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/code.bfe
new file mode 100755 (executable)
index 0000000..d8650fe
--- /dev/null
@@ -0,0 +1,67 @@
+%{
+/* vim: filetype=c
+ */
+#define CODE
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#include "tree.h"
+#include "code_gen.h"
+
+/* TODO (-a)+b */
+/* TODO func f(a,a) return a; end; shall do the same as func f(b,a) return a; end; */
+%}
+
+%start stat
+%term OP_Not=1 OP_Negation=2 OP_Addition=3 OP_Multiplication=4 OP_Disjunction=5 OP_Greater=6 OP_Equal=7 OP_ID=8 OP_Number=9 OP_Field=10 OP_Return=11 OP_Zero=12 OP_One=13 OP_Exprs=14 OP_Call=15
+
+%%
+
+stat:  ret                                     # 0 #
+
+ret:   OP_Return(expr)                         # 1 # move(bnode->reg, "rax"); ret(); 
+
+expr:  OP_ID                                   # 1 # if(bnode->param_index!=-1) move(get_param_reg(bnode->param_index), bnode->reg);
+expr:  imm                                     # 1 # printf("\tmovq $%li, %%%s\n", bnode->value, bnode->reg);
+expr:  call                                    # 0 #
+expr:  OP_Negation(expr)                       # 1 # printf("\tnegq %%%s\n", bnode->reg);
+expr:  OP_Addition(expr,expr)                  # 1 # printf("\taddq %%%s, %%%s\n", bnode->kids[1]->reg, bnode->kids[0]->reg);
+expr:  OP_Addition(imm,expr)                   # 1 # printf("\taddq $%li, %%%s\n", bnode->kids[0]->value, bnode->kids[1]->reg); move(bnode->kids[1]->reg, bnode->reg);
+expr:  OP_Addition(expr,imm)                   # 1 # if(bnode->kids[0]->op=OP_ID) { move(bnode->kids[0]->reg, bnode->reg); printf("\taddq $%li, %%%s\n", bnode->kids[1]->value, bnode->reg); } else { printf("\tadd $%li, %%%s\n", bnode->kids[1]->value, bnode->kids[0]->reg); }
+expr:  OP_Multiplication(expr,expr)            # 1 # printf("\timulq %%%s, %%%s\n", bnode->kids[1]->reg, bnode->kids[0]->reg);
+expr:  OP_Multiplication(imm,expr)             # 1 # printf("\timulq $%li, %%%s\n", bnode->kids[0]->value, bnode->kids[1]->reg); move(bnode->kids[1]->reg, bnode->reg);
+expr:  OP_Multiplication(expr,imm)             # 1 # if(bnode->kids[0]->op=OP_ID) { move(bnode->kids[0]->reg, bnode->reg); printf("\timulq $%li, %%%s\n", bnode->kids[1]->value, bnode->reg); } else { printf("\tadd $%li, %%%s\n", bnode->kids[1]->value, bnode->kids[0]->reg); }
+expr:  OP_Field(expr,OP_ID)                    # 2 # printf("\tmovq %li(%%%s), %%%s\n", 8*bnode->value, bnode->kids[0]->reg, bnode->reg);
+expr:  OP_Field(imm,OP_ID)                     # 1 # printf("\tmovq %li, %%%s\n", bnode->kids[0]->value+bnode->value*8, bnode->reg);
+
+call:  OP_Call(OP_ID,exprs)                    # 0 # /* ignore at the moment */
+
+exprs: expr                                    # 0 #
+exprs: OP_Exprs(exprs,expr)                    # 0 #
+
+zero:  OP_Negation(zero)                       # 0 #
+zero:  OP_Zero                                 # 0 #
+zero:  OP_Multiplication(zexpr,zero)           # 0 #
+zero:  OP_Multiplication(zero,zexpr)           # 0 #
+
+zexpr: zero                                    # 0 #
+zexpr: imm                                     # 0 #
+zexpr: OP_Negation(zexpr)                      # 0 #
+zexpr: OP_Addition(zexpr,zexpr)                # 0 #
+zexpr: OP_Multiplication(zexpr,zexpr)          # 0 #
+zexpr: OP_Field(zexpr,OP_ID)                   # 0 #
+zexpr: OP_ID                                   # 0 #
+
+imm:   zero                                    # 0 #
+imm:   OP_Negation(imm)                        # 0 # bnode->value=-bnode->kids[0]->value;
+imm:   OP_Addition(imm,imm)                    # 0 # bnode->value=bnode->kids[0]->value+bnode->kids[1]->value;
+imm:   OP_Multiplication(imm,imm)              # 0 # bnode->value=bnode->kids[0]->value*bnode->kids[1]->value;
+imm:   OP_Number                               # 0 # 
+imm:   OP_Zero                                 # 0 # 
+imm:   OP_One                                  # 0 # 
+
+%%
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/code_gen.c b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/code_gen.c
new file mode 100644 (file)
index 0000000..09c43a9
--- /dev/null
@@ -0,0 +1,43 @@
+#include <stdio.h>
+#include <string.h>
+#include "code_gen.h"
+
+void function_header(char *name) {
+       printf("\t.globl %s\n\t.type %s, @function\n%s:\n", name, name, name);
+}
+
+char *get_next_reg(char *name, int skip_reg) {
+       char *reg_names[]={"rax", "r10", "r11", "r9", "r8", "rcx", "rdx", "rsi", "rdi"};
+       int index, a;
+       if(name==(char *)NULL) {
+               index=0;
+       }
+       else {
+               for(a=0;a<9;a++) {
+                       if(!strcmp(name,reg_names[a])) {
+                               index=a+1;
+                               break;
+                       }
+               }
+       }
+       if(skip_reg) {
+               index++;
+       }
+       return reg_names[index];
+}
+
+char *get_param_reg(long number) {
+       char *reg_names[]={"rdi", "rsi", "rdx", "rcx", "r8", "r9"};
+       return reg_names[number-1];
+}
+
+void ret(void) {
+       printf("\tret\n");
+}
+
+void move(char *src, char *dst) {
+       if(strcmp(src,dst)) {
+               printf("\tmovq %%%s, %%%s\n",src,dst);
+       }
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/code_gen.h b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/code_gen.h
new file mode 100644 (file)
index 0000000..7dcbc5a
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef _CODE_GEN_H_
+#define _CODE_GEN_H_
+
+void function_header(char *name);
+char *get_next_reg(char *name, int skip_reg);
+char *get_param_reg(long number);
+void ret(void);
+void move(char *src, char *dest);
+
+#endif /* _CODE_GEN_H_ */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/parser.y b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/parser.y
new file mode 100644 (file)
index 0000000..39434b7
--- /dev/null
@@ -0,0 +1,345 @@
+%{
+       #include <stdio.h>
+       #include <stdlib.h>
+       #include <string.h>
+       #include "symbol_table.h"
+       #include "code_gen.h"
+       #include "tree.h"
+%}
+
+%start         Input
+%token         FUNC END STRUCT VAR IF THEN ELSE WHILE DO RETURN OR NOT
+%token         ID NUM ASSIGN GREATER
+
+@autoinh symbols stack_offset all_pars
+@autosyn node defined_vars immediate
+
+@attributes    { char *name; } ID
+@attributes    { long value; } NUM
+@attributes    { struct symbol_t *fields; struct symbol_t *symbols; } Program
+@attributes    { struct symbol_t *fields; } Structdef
+@attributes    { struct symbol_t *fields; int offset; } Ids
+@attributes    { struct symbol_t *pars; int num_pars; int all_pars; } Pars
+@attributes    { struct symbol_t *symbols; int defined_vars; } Funcdef 
+@attributes    { struct symbol_t *symbols; int defined_vars; int stack_offset; } Stats
+@attributes    { struct symbol_t *symbols; treenode *node; int immediate; } Expr Term Plusterm Malterm
+@attributes    { struct symbol_t *symbols; treenode *node; } Bool Call Lexpr Field Bterm Orterm Exprs
+@attributes    { struct symbol_t *in_symbols; struct symbol_t *out_symbols; treenode *node; int defined_vars; int stack_offset; } Stat
+
+@traversal @postorder check
+@traversal @preorder reg
+@traversal @postorder codegen
+
+%%
+
+Input:           Program
+               @{
+                  @i @Program.symbols@ = @Program.fields@;
+
+                  @codegen @revorder(1) printf("\t.text\n");
+               @}
+
+               ;
+
+Program:         Funcdef ';' Program
+               @{
+                  @i @Program.fields@ = @Program.1.fields@;
+               @}
+
+               | Structdef ';' Program
+               @{
+                  @i @Program.fields@ = table_merge(@Structdef.fields@, @Program.1.fields@, 1);
+                  @i @Program.1.symbols@ = @Program.0.symbols@;
+               @}
+
+               |
+               @{ @i @Program.fields@ = new_table(); @}
+
+               ;
+Funcdef:         FUNC ID '(' Pars ')' Stats END
+                       @{
+                  @i @Stats.symbols@ = table_merge(@Funcdef.symbols@, @Pars.pars@, 0);
+                  @i @Stats.stack_offset@ = 0;
+                  @i @Pars.all_pars@ = @Pars.num_pars@;
+
+                  @codegen @revorder(1) function_header(@ID.name@);
+               @}
+
+               | FUNC ID '(' ')' Stats END
+                       @{
+                  @i @Stats.symbols@ = table_merge(@Funcdef.symbols@, new_table(), 0);
+                  @i @Stats.stack_offset@ = 0;
+
+                  @codegen @revorder(1) function_header(@ID.name@);
+               @}
+
+               ;  
+Structdef:       STRUCT Ids END
+               @{
+                  @i @Structdef.fields@ = @Ids.fields@;
+                  @i @Ids.offset@ = 0;
+               @}
+
+               ;  
+
+Ids:             ID Ids
+               @{
+                  @i @Ids.fields@ = table_add_symbol(@Ids.1.fields@, @ID.name@, SYMBOL_TYPE_FIELD, 1, @Ids.offset@);
+                  @i @Ids.1.offset@ = @Ids.offset@ + 1;
+               @}
+
+               |
+               @{ @i @Ids.fields@ = new_table(); @}
+
+               ;
+
+Pars:            Pars ',' ID
+               @{
+                   @i @Pars.pars@ = table_add_param(@Pars.1.pars@, @ID.name@, @Pars.num_pars@);
+                  @i @Pars.num_pars@ = @Pars.1.num_pars@ + 1;
+                @}
+
+               | ID
+               @{
+                   @i @Pars.pars@ = table_add_param(new_table(), @ID.name@, 1);
+                   @i @Pars.num_pars@ = 1;
+                @}
+
+               ; 
+Stats:           Stat ';' Stats
+               @{
+                  @i @Stat.in_symbols@ = @Stats.symbols@;
+                  @i @Stats.1.symbols@ = @Stat.out_symbols@;
+                  @i @Stats.defined_vars@ = @Stat.defined_vars@ + @Stats.1.defined_vars@;
+                  @i @Stats.1.stack_offset@ = @Stats.stack_offset@ + @Stat.defined_vars@ * 8;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               |
+               @{ @i @Stats.defined_vars@ = 0; @}
+
+               ;  
+Stat:            VAR ID ASSIGN Expr
+               @{
+                  @i @Stat.out_symbols@ = table_add_symbol(clone_table(@Stat.in_symbols@), @ID.name@, SYMBOL_TYPE_VAR, 0, 0);
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+                  @i @Stat.defined_vars@ = 1;
+               @}
+
+               | Lexpr ASSIGN Expr
+               @{
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Lexpr.symbols@ = @Stat.in_symbols@;
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+                  @i @Stat.defined_vars@ = 0;
+               @}
+
+               | IF Bool THEN Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+               @}
+
+               | IF Bool THEN Stats ELSE Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.1.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+                  @i @Stat.defined_vars@ = @Stats.defined_vars@ + @Stats.1.defined_vars@;
+               @}
+
+               | WHILE Bool DO Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+               @}
+
+               | Call
+               @{
+                  @i @Call.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+                  @i @Stat.defined_vars@ = 0;
+               @}
+
+               | RETURN Expr
+               @{
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Return, @Expr.node@, (treenode *)NULL);
+
+                  @reg @Stat.node@->reg = get_next_reg((char *)NULL, 0); @Expr.node@->reg = @Stat.node@->reg;
+                  @i @Stat.defined_vars@ = 0;
+               @}
+
+               ;
+Lexpr:           ID
+               @{
+                  @i @Lexpr.node@ = (treenode *)NULL;
+                  @check check_variable(@Lexpr.symbols@, @ID.name@);
+               @}
+
+               | Field
+               ;
+Expr:            '-' Term
+               @{
+                  @i @Expr.node@ = new_node(OP_Negation, @Term.node@, (treenode *)NULL);
+
+                  @reg @Term.node@->reg = @Expr.node@->reg;
+               @}
+
+               | Term
+               @{ @reg @Term.node@->reg = @Expr.node@->reg; @}
+
+               | Term Plusterm
+               @{
+                  @i @Expr.node@ = new_node(OP_Addition, @Plusterm.node@, @Term.node@);
+                  @i @Expr.immediate@ = @Term.immediate@ && @Plusterm.immediate@;
+
+                  @reg if(!@Plusterm.immediate@) { @Plusterm.node@->reg = @Expr.node@->reg; @Term.node@->reg = get_next_reg(@Plusterm.node@->reg, @Expr.node@->skip_reg); @Plusterm.node@->skip_reg = 1; } else { @Term.node@->reg = @Expr.node@->reg; @Plusterm.node@->reg = get_next_reg(@Term.node@->reg, @Expr.node@->skip_reg); }
+               @}
+
+               | Term Malterm
+               @{
+                  @i @Expr.node@ = new_node(OP_Multiplication, @Malterm.node@, @Term.node@);
+                  @i @Expr.immediate@ = @Term.immediate@ && @Malterm.immediate@;
+
+                  @reg if(!@Malterm.immediate@) { @Malterm.node@->reg = @Expr.node@->reg; @Term.node@->reg = get_next_reg(@Malterm.node@->reg, @Expr.node@->skip_reg); @Malterm.node@->skip_reg = 1; } else { @Term.node@-> reg = @Expr.node@->reg; @Malterm.node@->reg = get_next_reg(@Term.node@->reg, @Expr.node@->skip_reg); }
+               @}
+
+               ;
+
+Plusterm:        '+' Term Plusterm
+               @{
+                  @i @Plusterm.node@ = new_node(OP_Addition, @Plusterm.1.node@, @Term.node@);
+                  @i @Plusterm.immediate@ = @Term.immediate@ && @Plusterm.1.immediate@;
+
+                  @reg @Plusterm.1.node@->reg = @Plusterm.node@->reg; @Term.node@->reg = get_next_reg(@Plusterm.1.node@->reg, @Plusterm.node@->skip_reg); 
+               @}
+
+               | '+' Term
+               @{ @reg @Term.node@->reg = @Plusterm.node@->reg; @}
+
+               ;
+
+Malterm:         '*' Term Malterm
+               @{
+                  @i @Malterm.node@ = new_node(OP_Multiplication, @Malterm.1.node@, @Term.node@);
+                  @i @Malterm.immediate@ = @Term.immediate@ && @Malterm.1.immediate@;
+
+                  @reg @Malterm.1.node@->reg = @Malterm.node@->reg; @Term.node@->reg = get_next_reg(@Malterm.1.node@->reg, @Malterm.node@->skip_reg); 
+               @}
+
+                       | '*' Term
+               @{ @reg @Term.node@->reg = @Malterm.node@->reg; @}
+
+               ;
+Term:            '(' Expr ')'
+               @{ @reg @Expr.node@->reg = @Term.node@->reg; @}
+
+               | ID
+               @{
+                  @i @Term.node@ = new_named_leaf_value(OP_ID, @ID.name@, (table_lookup(@Term.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Term.symbols@, @ID.name@)->stack_offset, (table_lookup(@Term.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Term.symbols@, @ID.name@)->param_index);
+                  @i @Term.immediate@ = 0;
+
+                  @check check_variable(@Term.symbols@, @ID.name@);
+               @}
+
+               | NUM
+               @{
+                  @i @Term.node@ = new_number_leaf(@NUM.value@);
+                  @i @Term.immediate@ = 1;
+               @}
+
+               | Call
+               @{ @i @Term.immediate@ = 0; @}
+
+               | Field
+               @{
+                  @i @Term.immediate@ = 0;
+
+                  @reg @Field.node@->reg = @Term.node@->reg;
+               @}
+
+               ;
+
+Bool:            Bterm
+               | Bterm Orterm
+               @{ @i @Bool.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.node@); @}
+
+               | NOT Bterm
+               @{ @i @Bool.node@ = new_node(OP_Not, @Bterm.node@, (treenode *)NULL); @}
+
+               ;
+
+Orterm:                  OR Bterm Orterm
+               @{ @i @Orterm.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.1.node@); @}
+
+               | OR Bterm
+               ;
+
+Bterm:           Term GREATER Term
+               @{ @i @Bterm.node@ = new_node(OP_Greater, @Term.node@, @Term.1.node@); @}
+
+               | Term '=' Term
+               @{ @i @Bterm.node@ = new_node(OP_Equal, @Term.node@, @Term.1.node@); @}
+
+               | '(' Bool ')'
+               ;
+
+Field:           Term '.' ID
+               @{
+                  @i @Field.node@ = new_node_value(OP_Field, @Term.node@, new_named_leaf(OP_ID, @ID.name@), table_lookup(@Field.symbols@, @ID.name@)==(struct symbol_t *)NULL ? 0 : table_lookup(@Field.symbols@, @ID.name@)->stack_offset, -1);
+
+                  @check check_field(@Field.symbols@, @ID.name@);
+
+                  @reg @Term.node@->reg = @Field.node@->reg; @Field.node@->kids[1]->reg = get_next_reg(@Field.node@->reg, 0); 
+               @}
+
+               ;
+
+Call:            ID '(' Exprs ')'
+               @{ @i @Call.node@ = new_node(OP_Call, new_named_leaf(OP_ID, @ID.name@), @Exprs.node@); @}
+
+               | ID '(' ')'
+               @{ @i @Call.node@ = new_node(OP_Call, new_named_leaf(OP_ID, @ID.name@), NULL); @}
+
+               ;
+
+Exprs:           Expr
+               | Exprs ',' Expr
+               @{ @i @Exprs.node@ = new_node(OP_Exprs, @Exprs.1.node@, @Expr.node@); @}
+
+               ;
+
+%%
+
+extern int yylex();
+extern int yylineno;
+
+int yyerror(char *error_text) {
+       fprintf(stderr,"Line %i: %s\n",yylineno, error_text);
+       exit(2);
+}
+
+int main(int argc, char **argv) {
+       yyparse();
+       return 0;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/scanner.lex b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/scanner.lex
new file mode 100644 (file)
index 0000000..5cf6520
--- /dev/null
@@ -0,0 +1,67 @@
+       #include <stdio.h>
+       #include <stdlib.h>
+       #include <string.h>
+       #include "parser.h"
+       #include "tree.h"
+
+KEYWORD                func|end|struct|var|if|then|else|while|do|return|or|not
+IDENTIFIER     [[:alpha:]_][[:alnum:]_]*
+NUMBER_HEX     [0-9][0-9A-Fa-f]*H
+NUMBER_DEC     [0-9]+
+WHITESPACE     [\t\n\r ]
+COMMENT_START  \(\*
+COMMENT_END    \*\)
+
+%x COMMENT
+%option yylineno
+%%
+
+{COMMENT_START}                        BEGIN(COMMENT);
+
+<COMMENT>{COMMENT_END}         BEGIN(INITIAL);
+
+<COMMENT>{COMMENT_START}       fprintf(stderr, "Possibly nested comment on line %i\n", yylineno);
+
+<COMMENT><<EOF>>               { fprintf(stderr, "Unterminated comment.\n"); exit(1); }
+
+<COMMENT>{WHITESPACE}          /* ignore */
+
+<COMMENT>.                     /* ignore everything inside comment */
+
+func                           return(FUNC);
+end                            return(END);
+struct                         return(STRUCT);
+var                            return(VAR);
+if                             return(IF);
+then                           return(THEN);
+else                           return(ELSE);
+while                          return(WHILE);
+do                             return(DO);
+return                         return(RETURN);
+or                             return(OR);
+not                            return(NOT);
+
+{IDENTIFIER}                   return(ID); @{ @ID.name@=strdup(yytext); @}
+
+{NUMBER_DEC}                   return(NUM); @{ @NUM.value@=strtol(yytext,(char **)NULL,10); @}
+{NUMBER_HEX}                   return(NUM); @{ yytext[strlen(yytext)-1]='\0'; @NUM.value@=strtol(yytext,(char **)NULL,16); @}
+                               
+\:=                            return(ASSIGN);
+>=                             return(GREATER);
+\;                             return(';');
+\.                             return('.');
+\(                             return('(');
+\)                             return(')');
+\,                             return(',');
+\-                             return('-');
+\+                             return('+');
+\*                             return('*');
+=                              return('=');
+
+{WHITESPACE}                   /* ignore */
+
+.                              { fprintf(stderr, "Lexical error on line %i\n", yylineno); exit(1); }
+
+%%
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/symbol_table.c b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/symbol_table.c
new file mode 100755 (executable)
index 0000000..f01b62a
--- /dev/null
@@ -0,0 +1,187 @@
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "symbol_table.h"
+
+struct symbol_t *new_table(void) {
+       return (struct symbol_t *)NULL;
+}
+
+struct symbol_t *clone_table(struct symbol_t *table) {
+       struct symbol_t *element;
+       struct symbol_t *new_tablex;
+
+       element=table;
+       new_tablex=new_table();
+       while((struct symbol_t *)NULL!=element) {
+               /* check return value */
+               new_tablex=table_add_symbol(new_tablex,element->identifier,element->type,0,element->stack_offset);
+               element=element->next;
+       }
+
+       return new_tablex;
+}
+
+struct symbol_t *table_add_symbol(struct symbol_t *table, char *identifier, short type, short check, int stack_offset) {
+       struct symbol_t *element;
+       struct symbol_t *new_element;
+
+       if(table_lookup(table,identifier)!=(struct symbol_t *)NULL) {
+               if(check) {
+                       fprintf(stderr,"Duplicate field %s.\n",identifier);
+                       exit(3);
+               }
+
+               table=table_remove_symbol(table,identifier);
+       }
+       
+       new_element=(struct symbol_t *)malloc(sizeof(struct symbol_t));
+       new_element->next=(struct symbol_t *)NULL;
+       new_element->identifier=strdup(identifier);
+       new_element->type=type;
+       new_element->stack_offset=stack_offset;
+       new_element->param_index=-1;
+
+       if((struct symbol_t *)NULL==table) {
+               return new_element;
+       }
+       element=table;
+
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+       }
+
+       element->next=new_element;
+       
+       return table;
+}
+
+struct symbol_t *table_add_param(struct symbol_t *table, char *identifier, int param_index) {
+       struct symbol_t *element;
+       struct symbol_t *new_element;
+
+       if(table_lookup(table,identifier)!=(struct symbol_t *)NULL) {
+               table=table_remove_symbol(table,identifier);
+       }
+       
+       new_element=(struct symbol_t *)malloc(sizeof(struct symbol_t));
+       new_element->next=(struct symbol_t *)NULL;
+       new_element->identifier=strdup(identifier);
+       new_element->type=SYMBOL_TYPE_PARAM;
+       new_element->param_index=param_index;
+
+       if((struct symbol_t *)NULL==table) {
+               return new_element;
+       }
+       element=table;
+
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+       }
+
+       element->next=new_element;
+       
+       return table;
+}
+
+struct symbol_t *table_lookup(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element;
+
+       element=table;
+
+       if((struct symbol_t *)NULL==table) {
+               return (struct symbol_t *)NULL;
+       }
+       
+       if(strcmp(element->identifier,identifier)==0) {
+               return element;
+       }
+       
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+               if(strcmp(element->identifier,identifier)==0) {
+                       return element;
+               }
+       }
+
+       return (struct symbol_t *)NULL;
+}
+
+struct symbol_t *table_merge(struct symbol_t *table, struct symbol_t *to_add, short check) {
+       struct symbol_t *element;
+       struct symbol_t *new_table=clone_table(table);
+       
+       element=to_add;
+       while(element!=(struct symbol_t *)NULL) {
+               if(element->param_index!=-1) {
+                       new_table=table_add_param(new_table,element->identifier,element->param_index);
+               }
+               else {
+                       new_table=table_add_symbol(new_table,element->identifier,element->type,check,element->stack_offset);
+               }
+               element=element->next;
+       }
+
+       return new_table;
+}
+
+struct symbol_t *table_remove_symbol(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element;
+       struct symbol_t *previous_element;
+       struct symbol_t *new_element;
+
+       if((struct symbol_t *)NULL==table) {
+               return table;
+       }
+
+       previous_element=(struct symbol_t *)NULL;
+       element=table;
+
+       while((struct symbol_t *)NULL!=element) {
+               if(strcmp(element->identifier,identifier)==0) {
+                       if((struct symbol_t *)NULL==previous_element) {
+                               new_element=element->next;
+                       }
+                       else {
+                               previous_element->next=element->next;
+                               new_element=table;
+                       }
+                       (void)free(element->identifier);
+                       (void)free(element);
+                       return new_element;
+               }
+               previous_element=element;
+               element=element->next;
+       }
+
+       return table;
+}
+
+void check_variable(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element=table_lookup(table,identifier);
+       if(element!=(struct symbol_t *)NULL) {
+               if(element->type!=SYMBOL_TYPE_VAR && element->type!=SYMBOL_TYPE_PARAM) {
+                       fprintf(stderr,"Identifier %s not a variable.\n",identifier);
+                       exit(3);
+               }
+       }
+       else {
+               fprintf(stderr,"Unknown identifier %s.\n",identifier);
+               exit(3);
+       }
+}
+
+void check_field(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element=table_lookup(table,identifier);
+       if(element!=(struct symbol_t *)NULL) {
+               if(element->type!=SYMBOL_TYPE_FIELD) {
+                       fprintf(stderr,"Identifier %s not a variable.\n",identifier);
+                       exit(3);
+               }
+       }
+       else {
+               fprintf(stderr,"Unknown identifier %s.\n",identifier);
+               exit(3);
+       }
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/symbol_table.h b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/symbol_table.h
new file mode 100755 (executable)
index 0000000..f8f3687
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef SYMBOL_TABLE_H
+#define SYMBOL_TABLE_H
+
+#define SYMBOL_TYPE_FIELD 1
+#define SYMBOL_TYPE_VAR 2
+#define SYMBOL_TYPE_PARAM 3
+
+struct symbol_t {
+       char *identifier;
+       struct symbol_t *next;
+       short type;
+       int stack_offset;
+       int param_index; /* -1 if not a parameter */
+};
+
+struct symbol_t *clone_table(struct symbol_t *table);
+struct symbol_t *new_table(void);
+struct symbol_t *table_add_symbol(struct symbol_t *table, char *identifier, short type, short check, int stack_offset);
+struct symbol_t *table_add_param(struct symbol_t *table, char *identifier, int param_index);
+struct symbol_t *table_lookup(struct symbol_t *table, char *identifier);
+struct symbol_t *table_remove_symbol(struct symbol_t *table, char *identifier);
+struct symbol_t *table_merge(struct symbol_t *table, struct symbol_t *to_add, short check);
+void check_variable(struct symbol_t *table, char *identifier);
+void check_field(struct symbol_t *table, char *identifier);
+
+#endif /* SYMBOL_TABLE_H */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/tree.c b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/tree.c
new file mode 100755 (executable)
index 0000000..c3e0a44
--- /dev/null
@@ -0,0 +1,157 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "tree.h"
+#include "code_gen.h"
+
+/* new_node: create "standard node" with one or two children and
+ * given operation
+ */
+treenode *new_node(int op, treenode *left, treenode *right) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+
+#ifdef DEBUG
+       printf("new_node: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=(char *)NULL;
+
+       return new;
+}
+
+/* new_node_value: create "standard node" with one or two children and
+ * given operation and the given value
+ */
+treenode *new_node_value(int op, treenode *left, treenode *right, long value, int param) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+
+#ifdef DEBUG
+       printf("new_node: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=(char *)NULL;
+       new->value=value;
+       new->param_index=param;
+
+       return new;
+}
+
+/* new_leaf: create leaf - node with no children */
+treenode *new_leaf(int op) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_leaf: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=(char *)NULL;
+
+       return new;
+}
+
+/* new_named_leaf: create leaf with name (used for identifier or
+ * value of number)
+ */
+treenode *new_named_leaf(int op, char *name) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_leaf: %i (%s), %s\n",op,rule_names[op],name);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=name;
+
+       return new;
+}
+
+/* new_named_leaf_value: create leaf with name (used for identifier or
+ * value of number)
+ */
+treenode *new_named_leaf_value(int op, char *name, long value, int param) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_leaf_value: %i (%s), %s, %li\n",op,rule_names[op],name,value);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=name;
+       new->value=value;
+       new->param_index=param;
+
+       return new;
+}
+
+/* new_named_node: create node with one or two children and a name (can be
+ * used for storing a procedure's name)
+ */
+treenode *new_named_node(int op, treenode *left, treenode *right, char *name) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_node: %i (%s), %s\n",op,rule_names[op],name);
+#endif
+       
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=name;
+
+       return new;
+}
+
+void write_indent(int indent) {
+       int a;
+       for(a=0;a<indent;a++) {
+               printf("|");
+       }
+}
+
+/* write_tree: display the tree generated by the attributed grammar; this tree willk
+ * be traversed by iburg
+ */
+void write_tree(treenode *node, int indent) {
+       write_indent(indent);
+       printf("%s, %s, %s\n",rule_names[node->op],node->name,node->reg);
+       if(node->kids[0]!=(treenode *)NULL || node->kids[1]!=(treenode *)NULL) {
+               if(node->kids[0]!=(treenode *)NULL) {
+                       write_tree(node->kids[0], indent+1);
+               }
+               if(node->kids[1]!=(treenode *)NULL) {
+                       write_tree(node->kids[1], indent+1);
+               }
+       }
+}
+
+treenode *new_number_leaf(long value) {
+       treenode *node;
+
+        if(value==0) {
+               node=new_leaf(OP_Zero);
+       }
+       else if(value==1) {
+               node=new_leaf(OP_One);
+       }
+       else {
+               node=new_leaf(OP_Number);
+        }
+
+       node->value=value;
+
+       return node;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/tree.h b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codea/tree.h
new file mode 100755 (executable)
index 0000000..ae27791
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef __TREE_H_
+#define __TREE_H_
+
+#ifndef CODE
+typedef struct burm_state *STATEPTR_TYPE; 
+#endif
+
+enum {
+       OP_Not=1,
+       OP_Negation,
+       OP_Addition,
+       OP_Multiplication,
+       OP_Disjunction,
+       OP_Greater,
+       OP_Equal,
+       OP_ID,
+       OP_Number,
+       OP_Field,
+       OP_Return,
+       OP_Zero,
+       OP_One,
+       OP_Exprs,
+       OP_Call
+};
+
+static char rule_names[100][100]={
+       "",
+        "OP_Not",
+        "OP_Negation",
+        "OP_Addition",
+        "OP_Multiplication",
+        "OP_Disjunction",
+        "OP_Greater",
+        "OP_Equal",
+        "OP_ID",
+        "OP_Number",
+        "OP_Field",
+       "OP_Return",
+       "OP_Zero",
+       "OP_One",
+       "OP_Exprs",
+       "OP_Call"
+};
+         
+
+/* struct for the tree build by ox for iburg */
+typedef struct treenode {
+       int op;
+       struct treenode *kids[2];
+       STATEPTR_TYPE label;
+       char *name;
+       long value;
+       char *reg;
+       struct treenode *parent;
+       int skip_reg;
+       int param_index; /* -1 if not a parameter */
+} treenode;
+
+typedef treenode *treenodep;
+
+/* macros for iburg being able to traverse the tree */
+#define NODEPTR_TYPE           treenodep
+#define OP_LABEL(p)            ((p)->op)
+#define LEFT_CHILD(p)          ((p)->kids[0])
+#define RIGHT_CHILD(p)         ((p)->kids[1])
+#define STATE_LABEL(p)         ((p)->label)
+#define PANIC                  printf
+
+/* see tree.c for description about these procedures */
+treenode *new_node(int op, treenode *left, treenode *right);
+treenode *new_node_value(int op, treenode *left, treenode *right, long value, int param);
+treenode *new_leaf(int op);
+treenode *new_number_leaf(long value);
+treenode *new_named_leaf(int op, char *name);
+treenode *new_named_leaf_value(int op, char *name, long value, int param);
+treenode *new_named_node(int op, treenode *left, treenode *right, char *name);
+
+void write_indent(int indent);
+void write_tree(treenode *node, int indent);
+
+#endif /* __TREE_H */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/all-wcprops b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/all-wcprops
new file mode 100644 (file)
index 0000000..f3d713d
--- /dev/null
@@ -0,0 +1,77 @@
+K 25
+svn:wc:ra_dav:version-url
+V 38
+/svn/private/!svn/ver/773/ublu08/codeb
+END
+scanner.lex
+K 25
+svn:wc:ra_dav:version-url
+V 50
+/svn/private/!svn/ver/740/ublu08/codeb/scanner.lex
+END
+tree.c
+K 25
+svn:wc:ra_dav:version-url
+V 46
+/svn/private/!svn/ver/1017/ublu08/codeb/tree.c
+END
+test.c
+K 25
+svn:wc:ra_dav:version-url
+V 45
+/svn/private/!svn/ver/776/ublu08/codeb/test.c
+END
+symbol_table.h
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1017/ublu08/codeb/symbol_table.h
+END
+parser.y
+K 25
+svn:wc:ra_dav:version-url
+V 48
+/svn/private/!svn/ver/1037/ublu08/codeb/parser.y
+END
+code_gen.c
+K 25
+svn:wc:ra_dav:version-url
+V 49
+/svn/private/!svn/ver/760/ublu08/codeb/code_gen.c
+END
+code.bfe
+K 25
+svn:wc:ra_dav:version-url
+V 48
+/svn/private/!svn/ver/1038/ublu08/codeb/code.bfe
+END
+tree.h
+K 25
+svn:wc:ra_dav:version-url
+V 46
+/svn/private/!svn/ver/1017/ublu08/codeb/tree.h
+END
+code_gen.h
+K 25
+svn:wc:ra_dav:version-url
+V 49
+/svn/private/!svn/ver/745/ublu08/codeb/code_gen.h
+END
+Makefile
+K 25
+svn:wc:ra_dav:version-url
+V 48
+/svn/private/!svn/ver/1036/ublu08/codeb/Makefile
+END
+symbol_table.c
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1204/ublu08/codeb/symbol_table.c
+END
+test.input
+K 25
+svn:wc:ra_dav:version-url
+V 50
+/svn/private/!svn/ver/1020/ublu08/codeb/test.input
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/entries b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/entries
new file mode 100644 (file)
index 0000000..0a808b6
--- /dev/null
@@ -0,0 +1,180 @@
+8
+
+dir
+775
+http://localhost/svn/private/ublu08/codeb
+http://localhost/svn/private
+
+
+
+2008-04-12T18:47:21.735502Z
+773
+paulchen
+
+
+svn:special svn:externals svn:needs-lock
+
+
+
+
+
+
+
+
+
+
+
+95840bc9-f7e0-4b9f-abbd-54bb5795df2f
+\f
+scanner.lex
+file
+
+
+
+
+2008-04-08T18:12:14.000000Z
+e5193bdf0f2e3175afb5173efc7ac4ec
+2008-04-08T18:13:33.517549Z
+740
+paulchen
+\f
+tree.c
+file
+1017
+
+
+
+2008-05-06T18:51:59.000000Z
+ef665922d0ae02b671453df7d0864e46
+2008-05-06T18:52:20.555246Z
+1017
+paulchen
+has-props
+\f
+test.c
+file
+776
+
+
+
+2008-04-12T18:49:19.000000Z
+24ff3cc83bcd13c895a36d347aae7252
+2008-04-12T18:49:39.017368Z
+776
+paulchen
+\f
+symbol_table.h
+file
+1017
+
+
+
+2008-05-06T17:59:32.000000Z
+a09966463523b8d5b80a106a9f546831
+2008-05-06T18:52:20.555246Z
+1017
+paulchen
+has-props
+\f
+parser.y
+file
+1037
+
+
+
+2008-05-19T16:40:46.000000Z
+261f2044f46f41ff3c1c555fc21e1561
+2008-05-19T16:40:54.760875Z
+1037
+paulchen
+\f
+code_gen.c
+file
+
+
+
+
+2008-04-09T16:55:33.000000Z
+02b446ff28eadf7dee853ce68d56fee7
+2008-04-09T16:56:51.768913Z
+760
+paulchen
+\f
+code.bfe
+file
+1038
+
+
+
+2008-05-19T16:44:18.000000Z
+c398e965c269b611388ba5106c722758
+2008-05-19T16:44:57.437042Z
+1038
+paulchen
+has-props
+\f
+tree.h
+file
+1017
+
+
+
+2008-05-06T18:01:20.000000Z
+6a087c7aefd6d16fe331b6abf17902b4
+2008-05-06T18:52:20.555246Z
+1017
+paulchen
+has-props
+\f
+code_gen.h
+file
+
+
+
+
+2008-04-08T22:21:58.000000Z
+60e8a0f6632888fd3b0a133e09aa0bee
+2008-04-08T22:39:36.223435Z
+745
+paulchen
+\f
+Makefile
+file
+1036
+
+
+
+2008-05-19T16:38:53.000000Z
+601045b0c568d7b118408a4e68485b40
+2008-05-19T16:38:57.457263Z
+1036
+paulchen
+\f
+symbol_table.c
+file
+1204
+
+
+
+2008-05-29T18:44:00.000000Z
+b453aa450374c10280eb6fa5888bff27
+2008-05-29T18:44:23.013986Z
+1204
+paulchen
+has-props
+\f
+test.input
+file
+1020
+
+
+
+2008-05-17T15:43:05.000000Z
+eab35c6ab3b6126ed4d3707e4222ee9e
+2008-05-17T18:20:12.118561Z
+1020
+paulchen
+\f
+testcases
+dir
+\f
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/format b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/format
new file mode 100644 (file)
index 0000000..45a4fb7
--- /dev/null
@@ -0,0 +1 @@
+8
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/code.bfe.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/code.bfe.svn-base
new file mode 100644 (file)
index 0000000..869ac71
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/symbol_table.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/symbol_table.c.svn-base
new file mode 100644 (file)
index 0000000..869ac71
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/symbol_table.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/symbol_table.h.svn-base
new file mode 100644 (file)
index 0000000..869ac71
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/tree.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/tree.c.svn-base
new file mode 100644 (file)
index 0000000..869ac71
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/tree.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/prop-base/tree.h.svn-base
new file mode 100644 (file)
index 0000000..869ac71
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/Makefile.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/Makefile.svn-base
new file mode 100644 (file)
index 0000000..b3d6bd4
--- /dev/null
@@ -0,0 +1,38 @@
+all: codeb
+
+scanner.c: oxout.l
+       flex -oscanner.c oxout.l
+
+scanner.o: scanner.c parser.h symbol_table.h
+       gcc -g -c -ansi -pedantic scanner.c -D_GNU_SOURCE
+
+codeb: scanner.o parser.o symbol_table.o code_gen.o tree.o code.o
+       gcc -o codeb symbol_table.o scanner.o parser.o code_gen.o tree.o code.o -lfl
+
+tree.o: tree.c tree.h
+       gcc -g -c -ansi -pedantic -Wall tree.c
+
+code_gen.o: code_gen.c code_gen.h
+       gcc -g -c -ansi -pedantic -Wall code_gen.c -D_GNU_SOURCE
+
+symbol_table.o: symbol_table.c symbol_table.h
+       gcc -g -c -ansi -pedantic -Wall symbol_table.c -D_GNU_SOURCE
+
+parser.o: parser.c symbol_table.h code_gen.h tree.h
+       gcc -g -c -ansi -pedantic parser.c
+
+parser.c parser.h: oxout.y
+       yacc -d oxout.y -o parser.c
+
+oxout.y oxout.l: parser.y scanner.lex
+       ox parser.y scanner.lex
+
+code.o: code.c tree.h
+       gcc -g -ansi -c code.c
+
+code.c: code.bfe
+       bfe < code.bfe | iburg > code.c
+
+clean:
+       rm -f codeb scanner.o scanner.c parser.h parser.c parser.o oxout.y oxout.l symbol_table.o code_gen.o tree.o code.c code.o testcodeb* a.out
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/code.bfe.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/code.bfe.svn-base
new file mode 100644 (file)
index 0000000..9f19cd1
--- /dev/null
@@ -0,0 +1,91 @@
+%{
+/* vim: filetype=c
+ */
+#define CODE
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#include "tree.h"
+#include "code_gen.h"
+
+/* TODO (-a)+b */
+/* TODO imul -> imulq, add -> addq */
+/* TODO bugs - hopefully fixed:
+ * func f(a,b,c,d) return ((a+1)+(b+1))+((c+1)+(d+1)); end;
+ * func f(a,b,c,d) var b:=a; var c:=b; var d:=c; return a+b+c+d; end;
+ * mul, add etc. with direct memory access
+ */
+/* TODO immediate values in assignments */
+/* TODO assignment with immediate value/variable on RHS */
+/* TODO immediate values in boolean expressions */
+/* TODO optimize boolean expressions */
+/* FIXME if_then label not inserted */
+%}
+
+%start stat
+%term OP_Not=1 OP_Negation=2 OP_Addition=3 OP_Multiplication=4 OP_Disjunction=5 OP_Greater=6 OP_Equal=7 OP_ID=8 OP_Number=9 OP_Field=10 OP_Return=11 OP_Zero=12 OP_One=13 OP_Exprs=14 OP_Call=15 OP_Assign=16 OP_If=17 OP_Stats=18 OP_Empty=19 OP_Ifstats=20 OP_While=21
+
+%%
+
+stat:  ret                                     # 0 #
+stat:  assign                                  # 0 #
+stat:  bexpr                                   # 0 #
+stat:  expr                                    # 0 #
+
+assign:        OP_Assign(OP_ID, expr)                  # 1 # if(bnode->kids[0]->param_index!=-1) { printf("\tmovq %%%s, %%%s\n", bnode->reg, get_param_reg(bnode->kids[0]->param_index)); } else { printf("\tmovq %%%s, %i(%%rsp)\n", bnode->reg, bnode->kids[0]->value); }
+assign:        OP_Assign(OP_Field(expr,OP_ID), expr)   # 1 # printf("\tmovq %%%s, %li(%%%s)\n", bnode->kids[1]->reg, 8*bnode->kids[0]->value, bnode->kids[0]->reg); 
+
+ret:   OP_Return(expr)                         # 1 # move(bnode->reg, "rax"); ret(); 
+
+expr:  OP_ID                                   # 1 # if(bnode->param_index!=-1) { move(get_param_reg(bnode->param_index), bnode->reg); } else { printf("\tmovq %i(%%rsp), %%%s\n", bnode->value, bnode->reg); }
+expr:  imm                                     # 1 # printf("\tmovq $%li, %%%s\n", bnode->value, bnode->reg);
+expr:  call                                    # 0 #
+expr:  OP_Negation(expr)                       # 1 # printf("\tnegq %%%s\n", bnode->reg);
+expr:  OP_Addition(expr,expr)                  # 1 # printf("\taddq %%%s, %%%s\n", bnode->kids[1]->reg, bnode->kids[0]->reg);
+expr:  OP_Addition(imm,expr)                   # 1 # printf("\taddq $%li, %%%s\n", bnode->kids[0]->value, bnode->kids[1]->reg); move(bnode->kids[1]->reg, bnode->reg);
+expr:  OP_Addition(expr,imm)                   # 1 # if(bnode->kids[0]->op==OP_ID) { move(bnode->kids[0]->reg, bnode->reg); printf("\taddq $%li, %%%s\n", bnode->kids[1]->value, bnode->reg); } else { printf("\taddq $%li, %%%s\n", bnode->kids[1]->value, bnode->kids[0]->reg); }
+expr:  OP_Multiplication(expr,expr)            # 1 # printf("\timulq %%%s, %%%s\n", bnode->kids[1]->reg, bnode->kids[0]->reg);
+expr:  OP_Multiplication(imm,expr)             # 1 # printf("\timulq $%li, %%%s\n", bnode->kids[0]->value, bnode->kids[1]->reg); move(bnode->kids[1]->reg, bnode->reg);
+expr:  OP_Multiplication(expr,imm)             # 1 # if(bnode->kids[0]->op==OP_ID) { move(bnode->kids[0]->reg, bnode->reg); printf("\timulq $%li, %%%s\n", bnode->kids[1]->value, bnode->reg); } else { printf("\timulq $%li, %%%s\n", bnode->kids[1]->value, bnode->kids[0]->reg); }
+expr:  OP_Field(expr,OP_ID)                    # 2 # printf("\tmovq %li(%%%s), %%%s\n", 8*bnode->value, bnode->kids[0]->reg, bnode->reg);
+expr:  OP_Field(imm,OP_ID)                     # 1 # printf("\tmovq %li, %%%s\n", bnode->kids[0]->value+bnode->value*8, bnode->reg);
+expr:  OP_Addition(expr, OP_Negation(expr))    # 1 # printf("\tsubq %%%s, %%%s\n", bnode->kids[0]->reg, bnode->kids[1]->kids[0]->reg);
+expr:  OP_Addition(OP_Negation(expr), OP_Negation(expr))       # 1 # printf("\taddq %%%s, %%%s\n\tnegq %%%s\n", bnode->kids[0]->kids[0]->reg, bnode->kids[1]->kids[0]->reg, bnode->kids[1]->kids[0]->reg);
+expr:  OP_Multiplication(OP_Negation(expr), OP_Negation(expr)) # 1 # printf("\timulq %%%s, %%%s\n", bnode->kids[0]->reg, bnode->kids[1]->reg);
+
+call:  OP_Call(OP_ID,exprs)                    # 0 # /* ignore at the moment */
+
+exprs: expr                                    # 0 #
+exprs: OP_Exprs(exprs,expr)                    # 0 #
+
+zero:  OP_Negation(zero)                       # 0 #
+zero:  OP_Zero                                 # 0 #
+zero:  OP_Multiplication(zexpr,zero)           # 0 #
+zero:  OP_Multiplication(zero,zexpr)           # 0 #
+
+zexpr: zero                                    # 0 #
+zexpr: imm                                     # 0 #
+zexpr: OP_Negation(zexpr)                      # 0 #
+zexpr: OP_Addition(zexpr,zexpr)                # 0 #
+zexpr: OP_Multiplication(zexpr,zexpr)          # 0 #
+zexpr: OP_Field(zexpr,OP_ID)                   # 0 #
+zexpr: OP_ID                                   # 0 #
+
+imm:   zero                                    # 0 #
+imm:   OP_Negation(imm)                        # 0 # bnode->value=-bnode->kids[0]->value;
+imm:   OP_Addition(imm,imm)                    # 0 # bnode->value=bnode->kids[0]->value+bnode->kids[1]->value;
+imm:   OP_Multiplication(imm,imm)              # 0 # bnode->value=bnode->kids[0]->value*bnode->kids[1]->value;
+imm:   OP_Number                               # 0 # 
+imm:   OP_Zero                                 # 0 # 
+imm:   OP_One                                  # 0 # 
+
+bexpr: OP_Disjunction(bexpr,bexpr)             # 0 # 
+bexpr: OP_Not(bexpr)                           # 0 # 
+bexpr: OP_Greater(expr,expr)                   # 0 # 
+bexpr: OP_Equal(expr,expr)                     # 0 # 
+
+%%
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/code_gen.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/code_gen.c.svn-base
new file mode 100644 (file)
index 0000000..c6e18fe
--- /dev/null
@@ -0,0 +1,52 @@
+#include <stdio.h>
+#include <string.h>
+#include "code_gen.h"
+
+int variables;
+
+void function_header(char *name, int vars) {
+       variables = vars;
+       printf("\t.globl %s\n\t.type %s, @function\n%s:\n", name, name, name);
+       if(vars>0) {
+               printf("\tpushq %%rbp\n\tmovq %%rsp, %%rbp\n\tsubq $%i, %%rsp\n", 8*vars);
+       }
+}
+
+char *get_next_reg(char *name, int skip_reg) {
+       char *reg_names[]={"rax", "r10", "r11", "r9", "r8", "rcx", "rdx", "rsi", "rdi"};
+       int index, a;
+       if(name==(char *)NULL) {
+               index=0;
+       }
+       else {
+               for(a=0;a<9;a++) {
+                       if(!strcmp(name,reg_names[a])) {
+                               index=a+1;
+                               break;
+                       }
+               }
+       }
+       if(skip_reg) {
+               index++;
+       }
+       return reg_names[index];
+}
+
+char *get_param_reg(long number) {
+       char *reg_names[]={"rdi", "rsi", "rdx", "rcx", "r8", "r9"};
+       return reg_names[number-1];
+}
+
+void ret(void) {
+       if(variables>0) {
+               printf("\tleave\n");
+       }
+       printf("\tret\n");
+}
+
+void move(char *src, char *dst) {
+       if(strcmp(src,dst)) {
+               printf("\tmovq %%%s, %%%s\n",src,dst);
+       }
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/code_gen.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/code_gen.h.svn-base
new file mode 100644 (file)
index 0000000..8f85f3b
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef _CODE_GEN_H_
+#define _CODE_GEN_H_
+
+void function_header(char *name, int vars);
+char *get_next_reg(char *name, int skip_reg);
+char *get_param_reg(long number);
+void ret(void);
+void move(char *src, char *dest);
+
+#endif /* _CODE_GEN_H_ */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/parser.y.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/parser.y.svn-base
new file mode 100644 (file)
index 0000000..7cc2661
--- /dev/null
@@ -0,0 +1,541 @@
+%{
+       #include <stdio.h>
+       #include <stdlib.h>
+       #include <string.h>
+       #include "symbol_table.h"
+       #include "code_gen.h"
+       #include "tree.h"
+
+       #define imm_prefix "$"
+
+/* TODO failed test case: func f(a) if not (a=0 or a=1) then return 0; end; end; */
+%}
+
+%start         Input
+%token         FUNC END STRUCT VAR IF THEN ELSE WHILE DO RETURN OR NOT
+%token         ID NUM ASSIGN GREATER
+
+@autoinh symbols stack_offset all_pars if_in jump_true jump_false
+@autosyn node defined_vars immediate if_out
+
+@attributes    { char *name; } ID
+@attributes    { long value; } NUM
+@attributes    { struct symbol_t *fields; struct symbol_t *symbols; int if_in; } Program
+@attributes    { struct symbol_t *fields; } Structdef
+@attributes    { struct symbol_t *fields; int offset; } Ids
+@attributes    { struct symbol_t *pars; int num_pars; int all_pars; } Pars
+@attributes    { struct symbol_t *symbols; int defined_vars; int if_in; int if_out; } Funcdef 
+@attributes    { struct symbol_t *symbols; int defined_vars; int stack_offset; treenode *node; int if_in; int if_out; } Stats
+@attributes    { struct symbol_t *symbols; treenode *node; int immediate; } Expr Term Plusterm Malterm
+@attributes    { struct symbol_t *symbols; treenode *node; } Call Lexpr Field Exprs
+@attributes    { struct symbol_t *symbols; treenode *node; char *jump_true; char *jump_false; int negated; int if_in; int if_out; int negated2; int top_level; } Bool Orterm Subbool Bterm
+@attributes    { struct symbol_t *in_symbols; struct symbol_t *out_symbols; treenode *node; int defined_vars; int stack_offset; int if_in; int if_out; } Stat
+@attributes    { struct symbol_t *symbols; treenode *node; int defined_vars; int stack_offset; int if_in; int if_out; int if_nr; } Blubb
+
+@traversal @postorder check
+@traversal @preorder reg
+@traversal @preorder codegen
+
+%%
+
+Input:           Program
+               @{
+                  @i @Program.symbols@ = @Program.fields@;
+                  @i @Program.if_in@ = 0;
+
+                  @codegen printf("\t.text\n");
+               @}
+
+               ;
+
+Program:         Funcdef ';' Program
+               @{
+                  @i @Program.fields@ = @Program.1.fields@;
+                  @i @Program.1.if_in@ = @Funcdef.if_out@;
+               @}
+
+               | Structdef ';' Program
+               @{
+                  @i @Program.fields@ = table_merge(@Structdef.fields@, @Program.1.fields@, 1);
+                  @i @Program.1.symbols@ = @Program.0.symbols@;
+               @}
+
+               |
+               @{ @i @Program.fields@ = new_table(); @}
+
+               ;
+Funcdef:         FUNC ID '(' Pars ')' Stats END
+                       @{
+                  @i @Stats.symbols@ = table_merge(@Funcdef.symbols@, @Pars.pars@, 0);
+                  @i @Stats.stack_offset@ = 0;
+                  @i @Pars.all_pars@ = @Pars.num_pars@;
+
+                  @codegen function_header(@ID.name@, @Funcdef.defined_vars@);
+               @}
+
+               | FUNC ID '(' ')' Stats END
+                       @{
+                  @i @Stats.symbols@ = table_merge(@Funcdef.symbols@, new_table(), 0);
+                  @i @Stats.stack_offset@ = 0;
+
+                  @codegen function_header(@ID.name@, @Funcdef.defined_vars@);
+               @}
+
+               ;  
+Structdef:       STRUCT Ids END
+               @{
+                  @i @Structdef.fields@ = @Ids.fields@;
+                  @i @Ids.offset@ = 0;
+               @}
+
+               ;  
+
+Ids:             ID Ids
+               @{
+                  @i @Ids.fields@ = table_add_symbol(@Ids.1.fields@, @ID.name@, SYMBOL_TYPE_FIELD, 1, @Ids.offset@);
+                  @i @Ids.1.offset@ = @Ids.offset@ + 1;
+               @}
+
+               |
+               @{ @i @Ids.fields@ = new_table(); @}
+
+               ;
+
+Pars:            Pars ',' ID
+               @{
+                   @i @Pars.pars@ = table_add_param(@Pars.1.pars@, @ID.name@, @Pars.num_pars@);
+                  @i @Pars.num_pars@ = @Pars.1.num_pars@ + 1;
+                @}
+
+               | ID
+               @{
+                   @i @Pars.pars@ = table_add_param(new_table(), @ID.name@, 1);
+                   @i @Pars.num_pars@ = 1;
+                @}
+
+               ; 
+Stats:           Stat ';' Stats
+               @{
+                  @i @Stat.in_symbols@ = @Stats.symbols@;
+                  @i @Stats.1.symbols@ = @Stat.out_symbols@;
+                  @i @Stats.defined_vars@ = @Stat.defined_vars@ + @Stats.1.defined_vars@;
+                  @i @Stats.1.stack_offset@ = @Stats.stack_offset@ + @Stat.defined_vars@ * 8;
+                  @i @Stats.node@ = new_node(OP_Stats, @Stat.node@, @Stats.1.node@);
+                  @i @Stat.if_in@ = @Stats.if_in@;
+                  @i @Stats.1.if_in@ = @Stat.if_out@;
+                  @i @Stats.if_out@ = @Stats.1.if_out@;
+               @}
+
+               |
+               @{
+                  @i @Stats.node@ = new_leaf(OP_Empty); /* TODO */
+                  @i @Stats.defined_vars@ = 0;
+                  @i @Stats.if_out@ = @Stats.if_in@;
+               @}
+
+               ;  
+Stat:            VAR ID ASSIGN Expr /* Nodes necessary for IF, DO, ... ? */
+               @{
+                  @i @Stat.out_symbols@ = table_add_symbol(clone_table(@Stat.in_symbols@), @ID.name@, SYMBOL_TYPE_VAR, 0, @Stat.stack_offset@);
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Assign, new_named_leaf_value(OP_ID, @ID.name@, @Stat.stack_offset@, -1), @Expr.node@);
+                  @i @Stat.defined_vars@ = 1;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+
+                  @reg @Expr.node@->reg = get_next_reg((char *)NULL, 0); @Stat.node@->reg = @Expr.node@->reg;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               | Lexpr ASSIGN Expr
+               @{
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Lexpr.symbols@ = @Stat.in_symbols@;
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Assign, @Lexpr.node@, @Expr.node@);
+                  @i @Stat.defined_vars@ = 0;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+
+                  @reg @Lexpr.node@->reg = get_next_reg((char *)NULL, 0); @Expr.node@->reg = get_next_reg(@Lexpr.node@->reg, 0); @Stat.node@->reg = @Expr.node@->reg;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               | IF Bool THEN Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_If, @Bool.node@, @Stats.node@);
+                  @i @Bool.if_in@ = @Stat.if_in@ + 1;
+                  @i @Stats.if_in@ = @Bool.if_out@;
+                  @i @Stat.if_out@ = @Stats.if_out@;
+                  @e Bool.jump_true : Stats.if_in; @Bool.jump_true@ = malloc(100); sprintf(@Bool.jump_true@, "if_then%i", @Stats.if_in@);
+                  @e Bool.jump_false : Stats.if_in; @Bool.jump_false@ = malloc(100); sprintf(@Bool.jump_false@, "if_end%i", @Stats.if_in@);
+
+                  @reg @Bool.node@->reg = get_next_reg((char *)NULL, 0);
+
+                  @codegen /* write_tree(@Bool.node@, 0); burm_label(@Bool.node@); burm_reduce(@Bool.node@, 1); printf("\ttest %s1, %%%s\n\tjz if_end%i\n", imm_prefix, @Bool.node@->reg, @Stats.if_in@); */
+                  @codegen @revorder(1) printf("if_end%i:\n", @Stats.if_in@);
+               @}
+
+               | IF Bool THEN Stats Blubb END 
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Blubb.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;              
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Ifstats, @Stats.node@, @Blubb.node@);
+                  @i @Stat.defined_vars@ = @Stats.defined_vars@ + @Blubb.defined_vars@;
+                  @i @Bool.if_in@ = @Stat.if_in@ + 1;
+                  @i @Stats.if_in@ = @Bool.if_out@;
+                  @i @Blubb.if_in@ = @Stats.if_out@;
+                  @i @Stat.if_out@ = @Blubb.if_out@;
+                  @i @Blubb.if_nr@ = @Stats.if_in@;
+                  @e Bool.jump_true : Stats.if_in; @Bool.jump_true@ = malloc(100); sprintf(@Bool.jump_true@, "if_then%i", @Stats.if_in@);
+                  @e Bool.jump_false : Stats.if_in; @Bool.jump_false@ = malloc(100); sprintf(@Bool.jump_false@, "if_else%i", @Stats.if_in@);
+
+                  @reg @Bool.node@->reg = get_next_reg((char *)NULL, 0);
+
+                  @codegen /* write_tree(@Bool.node@, 0); burm_label(@Bool.node@); burm_reduce(@Bool.node@, 1); printf("\ttest %s1, %%%s\n\tjz if_else%i\n", imm_prefix, @Bool.node@->reg, @Stats.if_in@); */
+                  @codegen @revorder(1) printf("if_end%i:\n", @Stats.if_in@);
+               @}
+
+               | WHILE Bool DO Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_While, @Bool.node@, @Stats.node@);
+                  @i @Bool.if_in@ = @Stat.if_in@ + 1;
+                  @i @Stats.if_in@ = @Bool.if_out@;
+                  @i @Stat.if_out@ = @Stats.if_out@;
+                  @e Bool.jump_true : Stats.if_in; @Bool.jump_true@ = malloc(100); sprintf(@Bool.jump_true@, "do_enter%i", @Stats.if_in@);
+                  @e Bool.jump_false : Stats.if_in; @Bool.jump_false@ = malloc(100); sprintf(@Bool.jump_false@, "do_end%i", @Stats.if_in@);
+
+                  @reg @Bool.node@->reg = get_next_reg((char *)NULL, 0);
+
+                  @codegen printf("do_start%i:\n", @Stats.if_in@); /* write_tree(@Bool.node@, 0); burm_label(@Bool.node@); burm_reduce(@Bool.node@, 1); printf("\ttest %s1, %%%s\n\tjz do_end%i\n", imm_prefix, @Bool.node@->reg, @Stats.if_in@); */
+                  @codegen @revorder(1) printf("\tjmp do_start%i\ndo_end%i:\n", @Stats.if_in@, @Stats.if_in@);
+               @}
+
+               | Call
+               @{
+                  @i @Call.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+                  @i @Stat.defined_vars@ = 0;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+               @}
+
+               | RETURN Expr
+               @{
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Return, @Expr.node@, (treenode *)NULL);
+                  @i @Stat.defined_vars@ = 0;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+
+                  @reg @Stat.node@->reg = get_next_reg((char *)NULL, 0); @Expr.node@->reg = @Stat.node@->reg;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               ;
+
+Blubb:           ELSE Stats
+               @{
+                  @codegen printf("\tjmp if_end%i\nif_else%i:\n", @Blubb.if_nr@, @Blubb.if_nr@);
+               @}
+
+Lexpr:           ID
+               @{
+                  @i @Lexpr.node@ = new_named_leaf_value(OP_ID, @ID.name@, (table_lookup(@Lexpr.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Lexpr.symbols@, @ID.name@)->stack_offset, (table_lookup(@Lexpr.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Lexpr.symbols@, @ID.name@)->param_index);
+
+                  @check check_variable(@Lexpr.symbols@, @ID.name@);
+               @}
+
+               | Field
+               ;
+Expr:            '-' Term
+               @{
+                  @i @Expr.node@ = new_node(OP_Negation, @Term.node@, (treenode *)NULL);
+
+                  @reg @Term.node@->reg = @Expr.node@->reg;
+               @}
+
+               | Term
+               @{ @reg @Term.node@->reg = @Expr.node@->reg; @}
+
+               | Term Plusterm
+               @{
+                  @i @Expr.node@ = new_node(OP_Addition, @Plusterm.node@, @Term.node@);
+                  @i @Expr.immediate@ = @Term.immediate@ && @Plusterm.immediate@;
+
+                  @reg if(!@Plusterm.immediate@) { @Plusterm.node@->reg = @Expr.node@->reg; @Term.node@->reg = get_next_reg(@Plusterm.node@->reg, @Expr.node@->skip_reg); @Plusterm.node@->skip_reg = 1; } else { @Term.node@->reg = @Expr.node@->reg; @Plusterm.node@->reg = get_next_reg(@Term.node@->reg, @Expr.node@->skip_reg); }
+               @}
+
+               | Term Malterm
+               @{
+                  @i @Expr.node@ = new_node(OP_Multiplication, @Malterm.node@, @Term.node@);
+                  @i @Expr.immediate@ = @Term.immediate@ && @Malterm.immediate@;
+
+                  @reg if(!@Malterm.immediate@) { @Malterm.node@->reg = @Expr.node@->reg; @Term.node@->reg = get_next_reg(@Malterm.node@->reg, @Expr.node@->skip_reg); @Malterm.node@->skip_reg = 1; } else { @Term.node@-> reg = @Expr.node@->reg; @Malterm.node@->reg = get_next_reg(@Term.node@->reg, @Expr.node@->skip_reg); }
+               @}
+
+               ;
+
+Plusterm:        '+' Term Plusterm
+               @{
+                  @i @Plusterm.node@ = new_node(OP_Addition, @Plusterm.1.node@, @Term.node@);
+                  @i @Plusterm.immediate@ = @Term.immediate@ && @Plusterm.1.immediate@;
+
+                  @reg @Plusterm.1.node@->reg = @Plusterm.node@->reg; @Term.node@->reg = get_next_reg(@Plusterm.1.node@->reg, @Plusterm.node@->skip_reg); 
+               @}
+
+               | '+' Term
+               @{ @reg @Term.node@->reg = @Plusterm.node@->reg; @}
+
+               ;
+
+Malterm:         '*' Term Malterm
+               @{
+                  @i @Malterm.node@ = new_node(OP_Multiplication, @Malterm.1.node@, @Term.node@);
+                  @i @Malterm.immediate@ = @Term.immediate@ && @Malterm.1.immediate@;
+
+                  @reg @Malterm.1.node@->reg = @Malterm.node@->reg; @Term.node@->reg = get_next_reg(@Malterm.1.node@->reg, @Malterm.node@->skip_reg); 
+               @}
+
+                       | '*' Term
+               @{ @reg @Term.node@->reg = @Malterm.node@->reg; @}
+
+               ;
+Term:            '(' Expr ')'
+               @{ @reg @Expr.node@->reg = @Term.node@->reg; @}
+
+               | ID
+               @{
+                  @i @Term.node@ = new_named_leaf_value(OP_ID, @ID.name@, (table_lookup(@Term.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Term.symbols@, @ID.name@)->stack_offset, (table_lookup(@Term.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Term.symbols@, @ID.name@)->param_index);
+                  @i @Term.immediate@ = 0;
+
+                  @check check_variable(@Term.symbols@, @ID.name@);
+               @}
+
+               | NUM
+               @{
+                  @i @Term.node@ = new_number_leaf(@NUM.value@);
+                  @i @Term.immediate@ = 1;
+               @}
+
+               | Call
+               @{ @i @Term.immediate@ = 0; @}
+
+               | Field
+               @{
+                  @i @Term.immediate@ = 0;
+
+                  @reg @Field.node@->reg = @Term.node@->reg;
+               @}
+
+               ;
+
+/* TODO replace by Bool -> Subbool */
+Bool:            Bterm
+               @{
+                  @i @Bool.negated@ = 0;
+                  @i @Bool.negated2@ = 0;
+                  @i @Bterm.negated@ = 0;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Bool.top_level@ = 1;
+                  @i @Bterm.top_level@ = 1;
+
+                  @codegen @revorder(1) if(@Bterm.node@->op!=OP_Disjunction) { printf("\tjmp %s # foo1\n", @Bool.jump_false@); } printf("%s:\n", @Bool.jump_true@); /* printf("\tjmp %s\n%s:\n", @Bool.jump_false@, @Bool.jump_true@); */
+               @}
+
+               | Bterm Orterm
+               @{
+                  @i @Bool.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.node@);
+                  @i @Bool.negated@ = 0;
+                  @i @Bool.negated2@ = 0;
+                  @i @Bterm.negated@ = 0;
+                  @i @Orterm.negated@ = 0;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Orterm.negated2@ = 0;
+                  @e Bterm.jump_true : Bool.negated Bool.jump_true Bool.if_in; if(!@Bool.negated@) { @Bterm.jump_true@ = malloc(100); sprintf(@Bterm.jump_true@, "bool_true%i", @Bool.if_in@); } else { @Bterm.jump_true@ = @Bool.jump_true@; }
+                  @i @Orterm.jump_true@ = @Bterm.jump_true@;
+                  @e Bterm.jump_false : Bool.negated Bool.jump_false Bool.if_in; if(@Bool.negated@) { @Bterm.jump_false@ = malloc(100); sprintf(@Bterm.jump_false@, "bool_false%i", @Bool.if_in@); } else { @Bterm.jump_false@ = @Bool.jump_false@; }
+                  @i @Orterm.jump_false@ = @Bterm.jump_false@;
+                  @i @Bterm.if_in@ = @Bool.if_in@ + 1;
+                  @i @Orterm.if_in@ = @Bterm.if_out@;
+                  @i @Bool.if_out@ = @Orterm.if_out@;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Orterm.top_level@ = 0;
+                  @i @Bool.top_level@ = 1;
+
+                  @reg @Bterm.node@->reg = @Bool.node@->reg; @Orterm.node@->reg = @Bool.node@->reg;
+
+                  @codegen @revorder(1) printf("\tjmp %s # foo2\n", @Bool.jump_false@); printf(@Bool.negated@ ? "bool_false%i:\n" : "bool_true%i:\n", @Bool.if_in@); printf("%s:\n", @Bool.jump_true@); /* printf("\tjmp %s\n%s:\n", @Bool.jump_false@, @Bool.jump_true@); */
+               @}
+
+               | NOT Bterm
+               @{
+                  @i @Bool.node@ = new_node(OP_Not, @Bterm.node@, (treenode *)NULL);
+                  @i @Bterm.jump_true@ = @Bool.jump_true@;
+                  @i @Bool.negated@ = 0;
+                  @i @Bool.negated2@ = 0;
+                  @i @Bterm.negated@ = 1;
+                  @i @Bterm.negated2@ = 1;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Bool.top_level@ = 1;
+
+                  @reg @Bterm.node@-> reg = @Bool.node@->reg;
+
+                  @codegen @revorder(1) if(@Bterm.node@->op!=OP_Not) { printf("\tjmp %s # foo3\n", @Bool.jump_false@); } printf("%s:\n", @Bool.jump_true@); /* printf("\tjmp %s\nnot_break%i:\n\tjmp %s\n%s:\n", @Bool.jump_true@, 0, @Bool.jump_false@, @Bool.jump_true@); */
+               @}
+
+               ;
+
+Subbool:         Bterm
+               @{
+                  @i @Bterm.negated@ = @Subbool.negated@;
+                  @i @Bterm.negated2@ = @Subbool.negated2@;
+                  @i @Bterm.top_level@ = @Subbool.top_level@;
+                  @codegen @revorder(1) /* printf("\tjmp %s\n%s:\n", @Subbool.jump_false@, @Subbool.jump_true@); */
+               @}
+
+               | Bterm Orterm
+               @{
+                  @i @Subbool.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.node@);
+                  @i @Bterm.negated@ = @Subbool.negated@;
+                  @i @Orterm.negated@ = @Subbool.negated@;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Orterm.negated2@ = 0;
+                  @e Bterm.jump_true : Subbool.negated Subbool.negated2 Subbool.jump_true Subbool.if_in; if(!@Subbool.negated@ && @Subbool.negated2@) { @Bterm.jump_true@ = malloc(100); sprintf(@Bterm.jump_true@, "bool_true%i", @Subbool.if_in@); } else { @Bterm.jump_true@ = @Subbool.jump_true@; }
+                  @i @Orterm.jump_true@ = @Bterm.jump_true@;
+                  @e Bterm.jump_false : Subbool.negated Subbool.negated2 Subbool.jump_false Subbool.if_in; if(@Subbool.negated@ && @Subbool.negated2@) { @Bterm.jump_false@ = malloc(100); sprintf(@Bterm.jump_false@, "bool_false%i", @Subbool.if_in@); } else { @Bterm.jump_false@ = @Subbool.jump_false@; }
+                  @i @Orterm.jump_false@ = @Bterm.jump_false@;
+                  @i @Bterm.if_in@ = @Subbool.if_in@ + 1;
+                  @i @Orterm.if_in@ = @Bterm.if_out@;
+                  @i @Subbool.if_out@ = @Orterm.if_out@;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Orterm.top_level@ = 0;
+                  @reg @Bterm.node@->reg = @Subbool.node@->reg; @Orterm.node@->reg = @Subbool.node@->reg;
+
+                  @codegen @revorder(1) /* TODO output if on top level */ if(@Subbool.negated2@ || @Subbool.top_level@) { printf("\tjmp %s # foo4\n", @Subbool.negated2@ ? @Subbool.jump_true@ : @Subbool.jump_false@); } printf(!@Subbool.negated@ ? "bool_true%i:\n" : "bool_false%i:\n", @Subbool.if_in@); /* printf("\tjmp %s\n# %s:\n", @Subbool.jump_true@, @Subbool.jump_true@);  */
+               @}
+
+               | NOT Bterm
+               @{
+                  @i @Subbool.node@ = new_node(OP_Not, @Bterm.node@, (treenode *)NULL);
+                  @i @Bterm.jump_true@ = @Subbool.jump_true@;
+                  @i @Bterm.negated@ = 1 - @Subbool.negated@;
+                  @i @Bterm.negated2@ = 1 - @Subbool.negated2@;
+                  @i @Bterm.top_level@ = 0;
+
+                  @reg @Bterm.node@-> reg = @Subbool.node@->reg; /* printf("%s, %s\n", @Bterm.jump_true@, @Subbool.jump_false@); */
+
+                  @codegen @revorder(1) printf("# !!\n"); if(@Subbool.negated2@ || @Subbool.top_level@) { printf("\tjmp %s # foo9\n", @Subbool.negated2@ ? @Subbool.jump_false@ : @Subbool.jump_false@); } /* printf("\tjmp %s\nnot_break%i:\n", @Subbool.negated@ ? @Bterm.jump_true@ : @Subbool.jump_false@, 0); printf("\tjmp %s\n%s:\n", @Subbool.jump_false@, @Subbool.jump_true@); */
+               @}
+
+               ;
+
+
+Orterm:                  OR Bterm Orterm
+               @{
+                  @i @Orterm.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.1.node@);
+                  @i @Bterm.negated@ = @Orterm.negated@;
+                  @i @Orterm.1.negated@ = @Orterm.negated@;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Orterm.1.negated2@ = 0;
+                  @i @Orterm.1.if_in@ = @Bterm.if_out@;
+                  @i @Orterm.if_out@ = @Orterm.1.if_out@;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Orterm.1.top_level@ = 0;
+
+                  @reg @Bterm.node@->reg = @Orterm.node@->reg; @Orterm.1.node@->reg = @Orterm.node@->reg;
+               @}
+
+               | OR Bterm
+               @{
+                  @i @Bterm.negated@ = @Orterm.negated@;
+                  @i @Bterm.negated2@ = @Orterm.negated2@;
+                  @i @Bterm.top_level@ = 0;
+               @}
+
+               ;
+
+Bterm:           Term GREATER Term
+               @{
+                  @i @Bterm.node@ = new_node(OP_Greater, @Term.node@, @Term.1.node@);
+                  @i @Bterm.if_out@ = @Bterm.if_in@;
+                  
+                  @reg @Term.node@->reg = @Bterm.node@->reg; @Term.1.node@->reg = get_next_reg(@Bterm.node@->reg, 0);
+
+                  @codegen /* write_tree(@Term.node@, 0); */ burm_label(@Term.node@); burm_reduce(@Term.node@, 1); /* write_tree(@Term.1.node@, 0); */ burm_label(@Term.1.node@); burm_reduce(@Term.1.node@, 1); printf(@Bterm.negated2@ ? "\tcmp %%%s, %%%s\n\tjs %s # %s %s %i %i\n" : "\tcmp %%%s, %%%s\n\tjns %s # %s %s %i %i\n", @Term.1.node@->reg, @Term.node@->reg, ((@Bterm.negated2@ ^ @Bterm.negated@)) ? @Bterm.jump_false@ : @Bterm.jump_true@, @Bterm.jump_true@, @Bterm.jump_false@, @Bterm.negated2@, @Bterm.negated@);
+               @}
+
+               | Term '=' Term
+               @{
+                  @i @Bterm.node@ = new_node(OP_Equal, @Term.node@, @Term.1.node@);
+                  @i @Bterm.if_out@ = @Bterm.if_in@;
+
+                  @reg @Term.node@->reg = @Bterm.node@->reg; @Term.1.node@->reg = get_next_reg(@Bterm.node@->reg, 0);
+
+                  @codegen /* write_tree(@Term.node@, 0); */ burm_label(@Term.node@); burm_reduce(@Term.node@, 1); /* write_tree(@Term.1.node@, 0); */ burm_label(@Term.1.node@); burm_reduce(@Term.1.node@, 1); printf(@Bterm.negated2@ ? "\tcmp %%%s, %%%s\n\tjnz %s # %s %s %i %i\n" : "\tcmp %%%s, %%%s\n\tjz %s # %s %s %i %i\n", @Term.node@->reg, @Term.1.node@->reg, ((@Bterm.negated2@ ^ @Bterm.negated@)) ? @Bterm.jump_false@ : @Bterm.jump_true@, @Bterm.jump_true@, @Bterm.jump_false@, @Bterm.negated2@, @Bterm.negated@);
+               @}
+
+               | '(' Subbool ')'
+               @{
+                  @i @Subbool.negated@ = @Bterm.negated@;
+                  @i @Subbool.negated2@ = @Bterm.negated2@;
+                  @i @Subbool.top_level@ = @Bterm.top_level@;
+               @}
+
+               ;
+
+Field:           Term '.' ID
+               @{
+                  @i @Field.node@ = new_node_value(OP_Field, @Term.node@, new_named_leaf(OP_ID, @ID.name@), table_lookup(@Field.symbols@, @ID.name@)==(struct symbol_t *)NULL ? 0 : table_lookup(@Field.symbols@, @ID.name@)->stack_offset, -1);
+
+                  @check check_field(@Field.symbols@, @ID.name@);
+
+                  @reg @Term.node@->reg = @Field.node@->reg; @Field.node@->kids[1]->reg = get_next_reg(@Field.node@->reg, 0); 
+               @}
+
+               ;
+
+Call:            ID '(' Exprs ')'
+               @{ @i @Call.node@ = new_node(OP_Call, new_named_leaf(OP_ID, @ID.name@), @Exprs.node@); @}
+
+               | ID '(' ')'
+               @{ @i @Call.node@ = new_node(OP_Call, new_named_leaf(OP_ID, @ID.name@), NULL); @}
+
+               ;
+
+Exprs:           Expr
+               | Exprs ',' Expr
+               @{ @i @Exprs.node@ = new_node(OP_Exprs, @Exprs.1.node@, @Expr.node@); @}
+
+               ;
+
+%%
+
+extern int yylex();
+extern int yylineno;
+
+int yyerror(char *error_text) {
+       fprintf(stderr,"Line %i: %s\n",yylineno, error_text);
+       exit(2);
+}
+
+int main(int argc, char **argv) {
+       yyparse();
+       return 0;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/scanner.lex.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/scanner.lex.svn-base
new file mode 100644 (file)
index 0000000..5cf6520
--- /dev/null
@@ -0,0 +1,67 @@
+       #include <stdio.h>
+       #include <stdlib.h>
+       #include <string.h>
+       #include "parser.h"
+       #include "tree.h"
+
+KEYWORD                func|end|struct|var|if|then|else|while|do|return|or|not
+IDENTIFIER     [[:alpha:]_][[:alnum:]_]*
+NUMBER_HEX     [0-9][0-9A-Fa-f]*H
+NUMBER_DEC     [0-9]+
+WHITESPACE     [\t\n\r ]
+COMMENT_START  \(\*
+COMMENT_END    \*\)
+
+%x COMMENT
+%option yylineno
+%%
+
+{COMMENT_START}                        BEGIN(COMMENT);
+
+<COMMENT>{COMMENT_END}         BEGIN(INITIAL);
+
+<COMMENT>{COMMENT_START}       fprintf(stderr, "Possibly nested comment on line %i\n", yylineno);
+
+<COMMENT><<EOF>>               { fprintf(stderr, "Unterminated comment.\n"); exit(1); }
+
+<COMMENT>{WHITESPACE}          /* ignore */
+
+<COMMENT>.                     /* ignore everything inside comment */
+
+func                           return(FUNC);
+end                            return(END);
+struct                         return(STRUCT);
+var                            return(VAR);
+if                             return(IF);
+then                           return(THEN);
+else                           return(ELSE);
+while                          return(WHILE);
+do                             return(DO);
+return                         return(RETURN);
+or                             return(OR);
+not                            return(NOT);
+
+{IDENTIFIER}                   return(ID); @{ @ID.name@=strdup(yytext); @}
+
+{NUMBER_DEC}                   return(NUM); @{ @NUM.value@=strtol(yytext,(char **)NULL,10); @}
+{NUMBER_HEX}                   return(NUM); @{ yytext[strlen(yytext)-1]='\0'; @NUM.value@=strtol(yytext,(char **)NULL,16); @}
+                               
+\:=                            return(ASSIGN);
+>=                             return(GREATER);
+\;                             return(';');
+\.                             return('.');
+\(                             return('(');
+\)                             return(')');
+\,                             return(',');
+\-                             return('-');
+\+                             return('+');
+\*                             return('*');
+=                              return('=');
+
+{WHITESPACE}                   /* ignore */
+
+.                              { fprintf(stderr, "Lexical error on line %i\n", yylineno); exit(1); }
+
+%%
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/symbol_table.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/symbol_table.c.svn-base
new file mode 100644 (file)
index 0000000..bf66a65
--- /dev/null
@@ -0,0 +1,192 @@
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "symbol_table.h"
+
+struct symbol_t *new_table(void) {
+       return (struct symbol_t *)NULL;
+}
+
+struct symbol_t *clone_table(struct symbol_t *table) {
+       struct symbol_t *element;
+       struct symbol_t *new_tablex;
+
+       element=table;
+       new_tablex=new_table();
+       while((struct symbol_t *)NULL!=element) {
+               /* check return value */
+               if(element->param_index!=-1) {
+                       new_tablex=table_add_param(new_tablex,element->identifier,element->param_index);
+               }
+               else {
+                       new_tablex=table_add_symbol(new_tablex,element->identifier,element->type,0,element->stack_offset);
+               }
+               element=element->next;
+       }
+
+       return new_tablex;
+}
+
+struct symbol_t *table_add_symbol(struct symbol_t *table, char *identifier, short type, short check, int stack_offset) {
+       struct symbol_t *element;
+       struct symbol_t *new_element;
+
+       if(table_lookup(table,identifier)!=(struct symbol_t *)NULL) {
+               if(check) {
+                       fprintf(stderr,"Duplicate field %s.\n",identifier);
+                       exit(3);
+               }
+
+               table=table_remove_symbol(table,identifier);
+       }
+       
+       new_element=(struct symbol_t *)malloc(sizeof(struct symbol_t));
+       new_element->next=(struct symbol_t *)NULL;
+       new_element->identifier=strdup(identifier);
+       new_element->type=type;
+       new_element->stack_offset=stack_offset;
+       new_element->param_index=-1;
+
+       if((struct symbol_t *)NULL==table) {
+               return new_element;
+       }
+       element=table;
+
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+       }
+
+       element->next=new_element;
+       
+       return table;
+}
+
+struct symbol_t *table_add_param(struct symbol_t *table, char *identifier, int param_index) {
+       struct symbol_t *element;
+       struct symbol_t *new_element;
+
+       if(table_lookup(table,identifier)!=(struct symbol_t *)NULL) {
+               table=table_remove_symbol(table,identifier);
+       }
+       
+       new_element=(struct symbol_t *)malloc(sizeof(struct symbol_t));
+       new_element->next=(struct symbol_t *)NULL;
+       new_element->identifier=strdup(identifier);
+       new_element->type=SYMBOL_TYPE_PARAM;
+       new_element->param_index=param_index;
+
+       if((struct symbol_t *)NULL==table) {
+               return new_element;
+       }
+       element=table;
+
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+       }
+
+       element->next=new_element;
+       
+       return table;
+}
+
+struct symbol_t *table_lookup(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element;
+
+       element=table;
+
+       if((struct symbol_t *)NULL==table) {
+               return (struct symbol_t *)NULL;
+       }
+       
+       if(strcmp(element->identifier,identifier)==0) {
+               return element;
+       }
+       
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+               if(strcmp(element->identifier,identifier)==0) {
+                       return element;
+               }
+       }
+
+       return (struct symbol_t *)NULL;
+}
+
+struct symbol_t *table_merge(struct symbol_t *table, struct symbol_t *to_add, short check) {
+       struct symbol_t *element;
+       struct symbol_t *new_table=clone_table(table);
+       
+       element=to_add;
+       while(element!=(struct symbol_t *)NULL) {
+               if(element->param_index!=-1) {
+                       new_table=table_add_param(new_table,element->identifier,element->param_index);
+               }
+               else {
+                       new_table=table_add_symbol(new_table,element->identifier,element->type,check,element->stack_offset);
+               }
+               element=element->next;
+       }
+
+       return new_table;
+}
+
+struct symbol_t *table_remove_symbol(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element;
+       struct symbol_t *previous_element;
+       struct symbol_t *new_element;
+
+       if((struct symbol_t *)NULL==table) {
+               return table;
+       }
+
+       previous_element=(struct symbol_t *)NULL;
+       element=table;
+
+       while((struct symbol_t *)NULL!=element) {
+               if(strcmp(element->identifier,identifier)==0) {
+                       if((struct symbol_t *)NULL==previous_element) {
+                               new_element=element->next;
+                       }
+                       else {
+                               previous_element->next=element->next;
+                               new_element=table;
+                       }
+                       (void)free(element->identifier);
+                       (void)free(element);
+                       return new_element;
+               }
+               previous_element=element;
+               element=element->next;
+       }
+
+       return table;
+}
+
+void check_variable(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element=table_lookup(table,identifier);
+       if(element!=(struct symbol_t *)NULL) {
+               if(element->type!=SYMBOL_TYPE_VAR && element->type!=SYMBOL_TYPE_PARAM) {
+                       fprintf(stderr,"Identifier %s not a variable.\n",identifier);
+                       exit(3);
+               }
+       }
+       else {
+               fprintf(stderr,"Unknown identifier %s.\n",identifier);
+               exit(3);
+       }
+}
+
+void check_field(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element=table_lookup(table,identifier);
+       if(element!=(struct symbol_t *)NULL) {
+               if(element->type!=SYMBOL_TYPE_FIELD) {
+                       fprintf(stderr,"Identifier %s not a variable.\n",identifier);
+                       exit(3);
+               }
+       }
+       else {
+               fprintf(stderr,"Unknown identifier %s.\n",identifier);
+               exit(3);
+       }
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/symbol_table.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/symbol_table.h.svn-base
new file mode 100644 (file)
index 0000000..f8f3687
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef SYMBOL_TABLE_H
+#define SYMBOL_TABLE_H
+
+#define SYMBOL_TYPE_FIELD 1
+#define SYMBOL_TYPE_VAR 2
+#define SYMBOL_TYPE_PARAM 3
+
+struct symbol_t {
+       char *identifier;
+       struct symbol_t *next;
+       short type;
+       int stack_offset;
+       int param_index; /* -1 if not a parameter */
+};
+
+struct symbol_t *clone_table(struct symbol_t *table);
+struct symbol_t *new_table(void);
+struct symbol_t *table_add_symbol(struct symbol_t *table, char *identifier, short type, short check, int stack_offset);
+struct symbol_t *table_add_param(struct symbol_t *table, char *identifier, int param_index);
+struct symbol_t *table_lookup(struct symbol_t *table, char *identifier);
+struct symbol_t *table_remove_symbol(struct symbol_t *table, char *identifier);
+struct symbol_t *table_merge(struct symbol_t *table, struct symbol_t *to_add, short check);
+void check_variable(struct symbol_t *table, char *identifier);
+void check_field(struct symbol_t *table, char *identifier);
+
+#endif /* SYMBOL_TABLE_H */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/test.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/test.c.svn-base
new file mode 100644 (file)
index 0000000..6052e59
--- /dev/null
@@ -0,0 +1,187 @@
+#include <stdio.h>
+
+extern long f1(long a);
+extern long f2(long a);
+extern long f3(long a);
+extern long f4(long a);
+extern long f5(long a);
+extern long f6(long a);
+extern long f7(long a);
+extern long f8(long a);
+extern long f9(long a);
+extern long f10(long a);
+
+extern long g1(long a, long b);
+extern long g2(long a, long b);
+extern long g3(long a, long b);
+extern long g4(long a, long b);
+extern long g5(long a, long b);
+extern long g6(long a, long b);
+extern long g7(long a, long b);
+extern long g8(long a, long b);
+extern long g9(long a, long b);
+extern long g10(long a, long b);
+extern long g11(long a, long b);
+extern long g12(long a, long b);
+
+extern long h1(long a, long b, long c, long d);
+extern long h2(long a, long b, long c, long d);
+extern long h3(long a, long b, long c, long d);
+extern long h4(long a, long b, long c, long d);
+extern long h5(long a, long b, long c, long d);
+extern long h6(long a, long b, long c, long d);
+extern long h7(long a, long b, long c, long d);
+extern long h8(long a, long b, long c, long d);
+extern long h9(long a, long b, long c, long d);
+extern long h10(long a, long b, long c, long d);
+extern long h11(long a, long b, long c, long d);
+extern long h12(long a, long b, long c, long d);
+extern long h13(long a, long b, long c, long d);
+extern long h14(long a, long b, long c, long d);
+extern long h15(long a, long b, long c, long d);
+extern long h16(long a, long b, long c, long d);
+extern long h17(long a, long b, long c, long d);
+extern long h18(long a, long b, long c, long d);
+extern long h19(long a, long b, long c, long d);
+extern long h20(long a, long b, long c, long d);
+extern long h21(long a, long b, long c, long d);
+extern long h22(long a, long b, long c, long d);
+extern long h23(long a, long b, long c, long d);
+extern long h24(long a, long b, long c, long d);
+
+int check_arg1(char *name, long (*function)(long), long ret0, long ret1, long ret2) {
+       int ret;
+       ret=function(0)==ret0 && function(1)==ret1 && function(2)==ret2;
+       printf("%s: %li/%li, %li/%li, %li/%li - %s\n", name,function(0), ret0, function(1), ret1, function(2), ret2, ret ? "ok" : "FAIL");
+       return ret;
+}
+
+int check_arg2(char *name, long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       printf("%s - ", name);
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+                       printf("%li/%li ", function(a,b),blubb[a][b]);
+               }
+       }
+       printf("- %s\n", ret ? "ok" : "FAIL");
+       return ret;
+}
+
+int check_arg4(char *name, long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       printf("%s - ", name);
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                                       printf("%li/%li ", function(a,b,c,d),blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       printf("- %s\n", ret ? "ok" : "FAIL");
+       return ret;
+}
+
+int main(int argc, char **argv) {
+       int ret;
+
+       long ret_g1[2][2]={{1,1},{1,0}};
+       long ret_g2[2][2]={{1,0},{1,1}};
+       long ret_g3[2][2]={{1,1},{0,1}};
+       long ret_g4[2][2]={{0,1},{1,1}};
+       long ret_g5[2][2]={{0,0},{0,1}};
+       long ret_g6[2][2]={{0,1},{0,0}};
+       long ret_g7[2][2]={{0,0},{1,0}};
+       long ret_g8[2][2]={{1,0},{0,0}};
+       long ret_g9[2][2]={{1,1},{1,0}};
+       long ret_g10[2][2]={{1,0},{1,1}};
+       long ret_g11[2][2]={{1,1},{0,1}};
+       long ret_g12[2][2]={{0,1},{1,1}};
+
+       long ret_h1[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+       long ret_h2[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h3[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+       long ret_h4[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+       long ret_h5[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+       long ret_h6[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h7[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+       long ret_h8[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+       long ret_h9[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,1}}}};
+       long ret_h10[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,1}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+       long ret_h11[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,1}},{{0,0},{0,0}}}};
+       long ret_h12[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,1},{0,0}}}};
+       long ret_h13[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{1,0}}}};
+       long ret_h14[2][2][2][2]={{{{0,0},{0,1}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+       long ret_h15[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{1,0},{0,0}}}};
+       long ret_h16[2][2][2][2]={{{{1,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+       long ret_h17[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+       long ret_h18[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h19[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+       long ret_h20[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+       long ret_h21[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+       long ret_h22[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h23[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+       long ret_h24[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+       ret=check_arg1("f1",f1,0,1,1);
+       ret&=check_arg1("f2",f2,0,0,1);
+       ret&=check_arg1("f3",f3,1,0,0);
+       ret&=check_arg1("f4",f4,0,1,1);
+       ret&=check_arg1("f5",f5,0,0,1);
+       ret&=check_arg1("f6",f6,1,0,0);
+       ret&=check_arg1("f7",f7,0,1,1);
+       ret&=check_arg1("f8",f8,0,0,1);
+       ret&=check_arg1("f9",f9,1,1,1);
+       ret&=check_arg1("f10",f10,1,0,0);
+
+       ret&=check_arg2("g1",g1,ret_g1);
+       ret&=check_arg2("g2",g2,ret_g2);
+       ret&=check_arg2("g3",g3,ret_g3);
+       ret&=check_arg2("g4",g4,ret_g4);
+       ret&=check_arg2("g5",g5,ret_g5);
+       ret&=check_arg2("g6",g6,ret_g6);
+       ret&=check_arg2("g7",g7,ret_g7);
+       ret&=check_arg2("g8",g8,ret_g8);
+       ret&=check_arg2("g9",g9,ret_g9);
+       ret&=check_arg2("g10",g10,ret_g10);
+       ret&=check_arg2("g11",g11,ret_g11);
+       ret&=check_arg2("g12",g12,ret_g12);
+
+       ret&=check_arg4("h1",h1,ret_h1);
+       ret&=check_arg4("h2",h2,ret_h2);
+       ret&=check_arg4("h3",h3,ret_h3);
+       ret&=check_arg4("h4",h4,ret_h4);
+       ret&=check_arg4("h5",h5,ret_h5);
+       ret&=check_arg4("h6",h6,ret_h6);
+       ret&=check_arg4("h7",h7,ret_h7);
+       ret&=check_arg4("h8",h8,ret_h8);
+       ret&=check_arg4("h9",h9,ret_h9);
+       ret&=check_arg4("h10",h10,ret_h10);
+       ret&=check_arg4("h11",h11,ret_h11);
+       ret&=check_arg4("h12",h12,ret_h12);
+       ret&=check_arg4("h13",h13,ret_h13);
+       ret&=check_arg4("h14",h14,ret_h14);
+       ret&=check_arg4("h15",h15,ret_h15);
+       ret&=check_arg4("h16",h16,ret_h16);
+       ret&=check_arg4("h17",h17,ret_h17);
+       ret&=check_arg4("h18",h18,ret_h18);
+       ret&=check_arg4("h19",h19,ret_h19);
+       ret&=check_arg4("h20",h20,ret_h20);
+       ret&=check_arg4("h21",h21,ret_h21);
+       ret&=check_arg4("h22",h22,ret_h22);
+       ret&=check_arg4("h23",h23,ret_h23);
+       ret&=check_arg4("h24",h24,ret_h24);
+
+       return !ret;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/test.input.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/test.input.svn-base
new file mode 100644 (file)
index 0000000..0771e51
--- /dev/null
@@ -0,0 +1,49 @@
+func f1(a) if a=0 then return 0; else return 1; end; end;
+func f2(a) if a=0 or a=1 then return 0; else return 1; end; end;
+func f3(a) if not (a=0) then return 0; else return 1; end; end;
+func f4(a) if (a=0) then return 0; else return 1; end; end;
+func f5(a) if (a=0 or a=1) then return 0; else return 1; end; end;
+func f6(a) if (not (a=0)) then return 0; else return 1; end; end;
+func f7(a) if not (not (a=0)) then return 0; else return 1; end; end;
+func f8(a) if not (not (a=0 or a=1)) then return 0; else return 1; end; end;
+func f9(a) if not ((not (a=0)) or (not (a=1))) then return 0; else return 1; end; end;
+func f10(a) if (not (not (not (a=0)))) then return 0; else return 1; end; end;
+
+func g1(a,b) if (a=0 or b=0) then return 1; else return 0; end; end;
+func g2(a,b) if ((not (a=0)) or b=0) then return 1; else return 0; end; end;
+func g3(a,b) if (a=0 or (not (b=0))) then return 1; else return 0; end; end;
+func g4(a,b) if ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
+func g5(a,b) if not (a=0 or b=0) then return 1; else return 0; end; end;
+func g6(a,b) if not ((not (a=0)) or b=0) then return 1; else return 0; end; end;
+func g7(a,b) if not (a=0 or (not (b=0))) then return 1; else return 0; end; end;
+func g8(a,b) if not ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
+func g9(a,b) if not (not (a=0 or b=0)) then return 1; else return 0; end; end;
+func g10(a,b) if not (not ((not (a=0)) or b=0)) then return 1; else return 0; end; end;
+func g11(a,b) if not (not (a=0 or (not (b=0)))) then return 1; else return 0; end; end;
+func g12(a,b) if not (not ((not (a=0)) or (not (b=0)))) then return 1; else return 0; end; end;
+
+func h1(a,b,c,d) if (a=0 or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h2(a,b,c,d) if ((not (a=0)) or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h3(a,b,c,d) if (a=0 or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h4(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or d=0) then return 1; else return 0; end; end;
+func h5(a,b,c,d) if (a=0 or b=0) or (c=0 or (not (d=0))) then return 1; else return 0; end; end;
+func h6(a,b,c,d) if ((not (a=0)) or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h7(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
+func h8(a,b,c,d) if ((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
+func h9(a,b,c,d) if not ((a=0 or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h10(a,b,c,d) if not (((not (a=0)) or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h11(a,b,c,d) if not ((a=0 or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h12(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or d=0)) then return 1; else return 0; end; end;
+func h13(a,b,c,d) if not ((a=0 or b=0) or (c=0 or (not (d=0)))) then return 1; else return 0; end; end;
+func h14(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h15(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
+func h16(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
+func h17(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h18(a,b,c,d) if not (not (((not (a=0)) or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h19(a,b,c,d) if not (not ((a=0 or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h20(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or d=0))) then return 1; else return 0; end; end;
+func h21(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or (not (d=0))))) then return 1; else return 0; end; end;
+func h22(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h23(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
+func h24(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/tree.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/tree.c.svn-base
new file mode 100644 (file)
index 0000000..c3e0a44
--- /dev/null
@@ -0,0 +1,157 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "tree.h"
+#include "code_gen.h"
+
+/* new_node: create "standard node" with one or two children and
+ * given operation
+ */
+treenode *new_node(int op, treenode *left, treenode *right) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+
+#ifdef DEBUG
+       printf("new_node: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=(char *)NULL;
+
+       return new;
+}
+
+/* new_node_value: create "standard node" with one or two children and
+ * given operation and the given value
+ */
+treenode *new_node_value(int op, treenode *left, treenode *right, long value, int param) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+
+#ifdef DEBUG
+       printf("new_node: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=(char *)NULL;
+       new->value=value;
+       new->param_index=param;
+
+       return new;
+}
+
+/* new_leaf: create leaf - node with no children */
+treenode *new_leaf(int op) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_leaf: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=(char *)NULL;
+
+       return new;
+}
+
+/* new_named_leaf: create leaf with name (used for identifier or
+ * value of number)
+ */
+treenode *new_named_leaf(int op, char *name) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_leaf: %i (%s), %s\n",op,rule_names[op],name);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=name;
+
+       return new;
+}
+
+/* new_named_leaf_value: create leaf with name (used for identifier or
+ * value of number)
+ */
+treenode *new_named_leaf_value(int op, char *name, long value, int param) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_leaf_value: %i (%s), %s, %li\n",op,rule_names[op],name,value);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=name;
+       new->value=value;
+       new->param_index=param;
+
+       return new;
+}
+
+/* new_named_node: create node with one or two children and a name (can be
+ * used for storing a procedure's name)
+ */
+treenode *new_named_node(int op, treenode *left, treenode *right, char *name) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_node: %i (%s), %s\n",op,rule_names[op],name);
+#endif
+       
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=name;
+
+       return new;
+}
+
+void write_indent(int indent) {
+       int a;
+       for(a=0;a<indent;a++) {
+               printf("|");
+       }
+}
+
+/* write_tree: display the tree generated by the attributed grammar; this tree willk
+ * be traversed by iburg
+ */
+void write_tree(treenode *node, int indent) {
+       write_indent(indent);
+       printf("%s, %s, %s\n",rule_names[node->op],node->name,node->reg);
+       if(node->kids[0]!=(treenode *)NULL || node->kids[1]!=(treenode *)NULL) {
+               if(node->kids[0]!=(treenode *)NULL) {
+                       write_tree(node->kids[0], indent+1);
+               }
+               if(node->kids[1]!=(treenode *)NULL) {
+                       write_tree(node->kids[1], indent+1);
+               }
+       }
+}
+
+treenode *new_number_leaf(long value) {
+       treenode *node;
+
+        if(value==0) {
+               node=new_leaf(OP_Zero);
+       }
+       else if(value==1) {
+               node=new_leaf(OP_One);
+       }
+       else {
+               node=new_leaf(OP_Number);
+        }
+
+       node->value=value;
+
+       return node;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/tree.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/.svn/text-base/tree.h.svn-base
new file mode 100644 (file)
index 0000000..a9f6d1c
--- /dev/null
@@ -0,0 +1,94 @@
+#ifndef __TREE_H_
+#define __TREE_H_
+
+#ifndef CODE
+typedef struct burm_state *STATEPTR_TYPE; 
+#endif
+
+enum {
+       OP_Not=1,
+       OP_Negation,
+       OP_Addition,
+       OP_Multiplication,
+       OP_Disjunction,
+       OP_Greater,
+       OP_Equal,
+       OP_ID,
+       OP_Number,
+       OP_Field,
+       OP_Return,
+       OP_Zero,
+       OP_One,
+       OP_Exprs,
+       OP_Call,
+       OP_Assign,
+       OP_If,
+       OP_Stats,
+       OP_Empty,
+       OP_Ifstats,
+       OP_While
+};
+
+static char rule_names[100][100]={
+       "",
+        "OP_Not",
+        "OP_Negation",
+        "OP_Addition",
+        "OP_Multiplication",
+        "OP_Disjunction",
+        "OP_Greater",
+        "OP_Equal",
+        "OP_ID",
+        "OP_Number",
+        "OP_Field",
+       "OP_Return",
+       "OP_Zero",
+       "OP_One",
+       "OP_Exprs",
+       "OP_Call",
+       "OP_Assign",
+       "OP_If",
+       "OP_Stats",
+       "OP_Empty",
+       "OP_Ifstats",
+       "OP_While"
+};
+         
+
+/* struct for the tree build by ox for iburg */
+typedef struct treenode {
+       int op;
+       struct treenode *kids[2];
+       STATEPTR_TYPE label;
+       char *name;
+       long value;
+       char *reg;
+       struct treenode *parent;
+       int skip_reg;
+       int param_index; /* -1 if not a parameter */
+} treenode;
+
+typedef treenode *treenodep;
+
+/* macros for iburg being able to traverse the tree */
+#define NODEPTR_TYPE           treenodep
+#define OP_LABEL(p)            ((p)->op)
+#define LEFT_CHILD(p)          ((p)->kids[0])
+#define RIGHT_CHILD(p)         ((p)->kids[1])
+#define STATE_LABEL(p)         ((p)->label)
+#define PANIC                  printf
+
+/* see tree.c for description about these procedures */
+treenode *new_node(int op, treenode *left, treenode *right);
+treenode *new_node_value(int op, treenode *left, treenode *right, long value, int param);
+treenode *new_leaf(int op);
+treenode *new_number_leaf(long value);
+treenode *new_named_leaf(int op, char *name);
+treenode *new_named_leaf_value(int op, char *name, long value, int param);
+treenode *new_named_node(int op, treenode *left, treenode *right, char *name);
+
+void write_indent(int indent);
+void write_tree(treenode *node, int indent);
+
+#endif /* __TREE_H */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/Makefile b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/Makefile
new file mode 100644 (file)
index 0000000..b3d6bd4
--- /dev/null
@@ -0,0 +1,38 @@
+all: codeb
+
+scanner.c: oxout.l
+       flex -oscanner.c oxout.l
+
+scanner.o: scanner.c parser.h symbol_table.h
+       gcc -g -c -ansi -pedantic scanner.c -D_GNU_SOURCE
+
+codeb: scanner.o parser.o symbol_table.o code_gen.o tree.o code.o
+       gcc -o codeb symbol_table.o scanner.o parser.o code_gen.o tree.o code.o -lfl
+
+tree.o: tree.c tree.h
+       gcc -g -c -ansi -pedantic -Wall tree.c
+
+code_gen.o: code_gen.c code_gen.h
+       gcc -g -c -ansi -pedantic -Wall code_gen.c -D_GNU_SOURCE
+
+symbol_table.o: symbol_table.c symbol_table.h
+       gcc -g -c -ansi -pedantic -Wall symbol_table.c -D_GNU_SOURCE
+
+parser.o: parser.c symbol_table.h code_gen.h tree.h
+       gcc -g -c -ansi -pedantic parser.c
+
+parser.c parser.h: oxout.y
+       yacc -d oxout.y -o parser.c
+
+oxout.y oxout.l: parser.y scanner.lex
+       ox parser.y scanner.lex
+
+code.o: code.c tree.h
+       gcc -g -ansi -c code.c
+
+code.c: code.bfe
+       bfe < code.bfe | iburg > code.c
+
+clean:
+       rm -f codeb scanner.o scanner.c parser.h parser.c parser.o oxout.y oxout.l symbol_table.o code_gen.o tree.o code.c code.o testcodeb* a.out
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/code.bfe b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/code.bfe
new file mode 100755 (executable)
index 0000000..9f19cd1
--- /dev/null
@@ -0,0 +1,91 @@
+%{
+/* vim: filetype=c
+ */
+#define CODE
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#include "tree.h"
+#include "code_gen.h"
+
+/* TODO (-a)+b */
+/* TODO imul -> imulq, add -> addq */
+/* TODO bugs - hopefully fixed:
+ * func f(a,b,c,d) return ((a+1)+(b+1))+((c+1)+(d+1)); end;
+ * func f(a,b,c,d) var b:=a; var c:=b; var d:=c; return a+b+c+d; end;
+ * mul, add etc. with direct memory access
+ */
+/* TODO immediate values in assignments */
+/* TODO assignment with immediate value/variable on RHS */
+/* TODO immediate values in boolean expressions */
+/* TODO optimize boolean expressions */
+/* FIXME if_then label not inserted */
+%}
+
+%start stat
+%term OP_Not=1 OP_Negation=2 OP_Addition=3 OP_Multiplication=4 OP_Disjunction=5 OP_Greater=6 OP_Equal=7 OP_ID=8 OP_Number=9 OP_Field=10 OP_Return=11 OP_Zero=12 OP_One=13 OP_Exprs=14 OP_Call=15 OP_Assign=16 OP_If=17 OP_Stats=18 OP_Empty=19 OP_Ifstats=20 OP_While=21
+
+%%
+
+stat:  ret                                     # 0 #
+stat:  assign                                  # 0 #
+stat:  bexpr                                   # 0 #
+stat:  expr                                    # 0 #
+
+assign:        OP_Assign(OP_ID, expr)                  # 1 # if(bnode->kids[0]->param_index!=-1) { printf("\tmovq %%%s, %%%s\n", bnode->reg, get_param_reg(bnode->kids[0]->param_index)); } else { printf("\tmovq %%%s, %i(%%rsp)\n", bnode->reg, bnode->kids[0]->value); }
+assign:        OP_Assign(OP_Field(expr,OP_ID), expr)   # 1 # printf("\tmovq %%%s, %li(%%%s)\n", bnode->kids[1]->reg, 8*bnode->kids[0]->value, bnode->kids[0]->reg); 
+
+ret:   OP_Return(expr)                         # 1 # move(bnode->reg, "rax"); ret(); 
+
+expr:  OP_ID                                   # 1 # if(bnode->param_index!=-1) { move(get_param_reg(bnode->param_index), bnode->reg); } else { printf("\tmovq %i(%%rsp), %%%s\n", bnode->value, bnode->reg); }
+expr:  imm                                     # 1 # printf("\tmovq $%li, %%%s\n", bnode->value, bnode->reg);
+expr:  call                                    # 0 #
+expr:  OP_Negation(expr)                       # 1 # printf("\tnegq %%%s\n", bnode->reg);
+expr:  OP_Addition(expr,expr)                  # 1 # printf("\taddq %%%s, %%%s\n", bnode->kids[1]->reg, bnode->kids[0]->reg);
+expr:  OP_Addition(imm,expr)                   # 1 # printf("\taddq $%li, %%%s\n", bnode->kids[0]->value, bnode->kids[1]->reg); move(bnode->kids[1]->reg, bnode->reg);
+expr:  OP_Addition(expr,imm)                   # 1 # if(bnode->kids[0]->op==OP_ID) { move(bnode->kids[0]->reg, bnode->reg); printf("\taddq $%li, %%%s\n", bnode->kids[1]->value, bnode->reg); } else { printf("\taddq $%li, %%%s\n", bnode->kids[1]->value, bnode->kids[0]->reg); }
+expr:  OP_Multiplication(expr,expr)            # 1 # printf("\timulq %%%s, %%%s\n", bnode->kids[1]->reg, bnode->kids[0]->reg);
+expr:  OP_Multiplication(imm,expr)             # 1 # printf("\timulq $%li, %%%s\n", bnode->kids[0]->value, bnode->kids[1]->reg); move(bnode->kids[1]->reg, bnode->reg);
+expr:  OP_Multiplication(expr,imm)             # 1 # if(bnode->kids[0]->op==OP_ID) { move(bnode->kids[0]->reg, bnode->reg); printf("\timulq $%li, %%%s\n", bnode->kids[1]->value, bnode->reg); } else { printf("\timulq $%li, %%%s\n", bnode->kids[1]->value, bnode->kids[0]->reg); }
+expr:  OP_Field(expr,OP_ID)                    # 2 # printf("\tmovq %li(%%%s), %%%s\n", 8*bnode->value, bnode->kids[0]->reg, bnode->reg);
+expr:  OP_Field(imm,OP_ID)                     # 1 # printf("\tmovq %li, %%%s\n", bnode->kids[0]->value+bnode->value*8, bnode->reg);
+expr:  OP_Addition(expr, OP_Negation(expr))    # 1 # printf("\tsubq %%%s, %%%s\n", bnode->kids[0]->reg, bnode->kids[1]->kids[0]->reg);
+expr:  OP_Addition(OP_Negation(expr), OP_Negation(expr))       # 1 # printf("\taddq %%%s, %%%s\n\tnegq %%%s\n", bnode->kids[0]->kids[0]->reg, bnode->kids[1]->kids[0]->reg, bnode->kids[1]->kids[0]->reg);
+expr:  OP_Multiplication(OP_Negation(expr), OP_Negation(expr)) # 1 # printf("\timulq %%%s, %%%s\n", bnode->kids[0]->reg, bnode->kids[1]->reg);
+
+call:  OP_Call(OP_ID,exprs)                    # 0 # /* ignore at the moment */
+
+exprs: expr                                    # 0 #
+exprs: OP_Exprs(exprs,expr)                    # 0 #
+
+zero:  OP_Negation(zero)                       # 0 #
+zero:  OP_Zero                                 # 0 #
+zero:  OP_Multiplication(zexpr,zero)           # 0 #
+zero:  OP_Multiplication(zero,zexpr)           # 0 #
+
+zexpr: zero                                    # 0 #
+zexpr: imm                                     # 0 #
+zexpr: OP_Negation(zexpr)                      # 0 #
+zexpr: OP_Addition(zexpr,zexpr)                # 0 #
+zexpr: OP_Multiplication(zexpr,zexpr)          # 0 #
+zexpr: OP_Field(zexpr,OP_ID)                   # 0 #
+zexpr: OP_ID                                   # 0 #
+
+imm:   zero                                    # 0 #
+imm:   OP_Negation(imm)                        # 0 # bnode->value=-bnode->kids[0]->value;
+imm:   OP_Addition(imm,imm)                    # 0 # bnode->value=bnode->kids[0]->value+bnode->kids[1]->value;
+imm:   OP_Multiplication(imm,imm)              # 0 # bnode->value=bnode->kids[0]->value*bnode->kids[1]->value;
+imm:   OP_Number                               # 0 # 
+imm:   OP_Zero                                 # 0 # 
+imm:   OP_One                                  # 0 # 
+
+bexpr: OP_Disjunction(bexpr,bexpr)             # 0 # 
+bexpr: OP_Not(bexpr)                           # 0 # 
+bexpr: OP_Greater(expr,expr)                   # 0 # 
+bexpr: OP_Equal(expr,expr)                     # 0 # 
+
+%%
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/code_gen.c b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/code_gen.c
new file mode 100644 (file)
index 0000000..c6e18fe
--- /dev/null
@@ -0,0 +1,52 @@
+#include <stdio.h>
+#include <string.h>
+#include "code_gen.h"
+
+int variables;
+
+void function_header(char *name, int vars) {
+       variables = vars;
+       printf("\t.globl %s\n\t.type %s, @function\n%s:\n", name, name, name);
+       if(vars>0) {
+               printf("\tpushq %%rbp\n\tmovq %%rsp, %%rbp\n\tsubq $%i, %%rsp\n", 8*vars);
+       }
+}
+
+char *get_next_reg(char *name, int skip_reg) {
+       char *reg_names[]={"rax", "r10", "r11", "r9", "r8", "rcx", "rdx", "rsi", "rdi"};
+       int index, a;
+       if(name==(char *)NULL) {
+               index=0;
+       }
+       else {
+               for(a=0;a<9;a++) {
+                       if(!strcmp(name,reg_names[a])) {
+                               index=a+1;
+                               break;
+                       }
+               }
+       }
+       if(skip_reg) {
+               index++;
+       }
+       return reg_names[index];
+}
+
+char *get_param_reg(long number) {
+       char *reg_names[]={"rdi", "rsi", "rdx", "rcx", "r8", "r9"};
+       return reg_names[number-1];
+}
+
+void ret(void) {
+       if(variables>0) {
+               printf("\tleave\n");
+       }
+       printf("\tret\n");
+}
+
+void move(char *src, char *dst) {
+       if(strcmp(src,dst)) {
+               printf("\tmovq %%%s, %%%s\n",src,dst);
+       }
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/code_gen.h b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/code_gen.h
new file mode 100644 (file)
index 0000000..8f85f3b
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef _CODE_GEN_H_
+#define _CODE_GEN_H_
+
+void function_header(char *name, int vars);
+char *get_next_reg(char *name, int skip_reg);
+char *get_param_reg(long number);
+void ret(void);
+void move(char *src, char *dest);
+
+#endif /* _CODE_GEN_H_ */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/parser.y b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/parser.y
new file mode 100644 (file)
index 0000000..7cc2661
--- /dev/null
@@ -0,0 +1,541 @@
+%{
+       #include <stdio.h>
+       #include <stdlib.h>
+       #include <string.h>
+       #include "symbol_table.h"
+       #include "code_gen.h"
+       #include "tree.h"
+
+       #define imm_prefix "$"
+
+/* TODO failed test case: func f(a) if not (a=0 or a=1) then return 0; end; end; */
+%}
+
+%start         Input
+%token         FUNC END STRUCT VAR IF THEN ELSE WHILE DO RETURN OR NOT
+%token         ID NUM ASSIGN GREATER
+
+@autoinh symbols stack_offset all_pars if_in jump_true jump_false
+@autosyn node defined_vars immediate if_out
+
+@attributes    { char *name; } ID
+@attributes    { long value; } NUM
+@attributes    { struct symbol_t *fields; struct symbol_t *symbols; int if_in; } Program
+@attributes    { struct symbol_t *fields; } Structdef
+@attributes    { struct symbol_t *fields; int offset; } Ids
+@attributes    { struct symbol_t *pars; int num_pars; int all_pars; } Pars
+@attributes    { struct symbol_t *symbols; int defined_vars; int if_in; int if_out; } Funcdef 
+@attributes    { struct symbol_t *symbols; int defined_vars; int stack_offset; treenode *node; int if_in; int if_out; } Stats
+@attributes    { struct symbol_t *symbols; treenode *node; int immediate; } Expr Term Plusterm Malterm
+@attributes    { struct symbol_t *symbols; treenode *node; } Call Lexpr Field Exprs
+@attributes    { struct symbol_t *symbols; treenode *node; char *jump_true; char *jump_false; int negated; int if_in; int if_out; int negated2; int top_level; } Bool Orterm Subbool Bterm
+@attributes    { struct symbol_t *in_symbols; struct symbol_t *out_symbols; treenode *node; int defined_vars; int stack_offset; int if_in; int if_out; } Stat
+@attributes    { struct symbol_t *symbols; treenode *node; int defined_vars; int stack_offset; int if_in; int if_out; int if_nr; } Blubb
+
+@traversal @postorder check
+@traversal @preorder reg
+@traversal @preorder codegen
+
+%%
+
+Input:           Program
+               @{
+                  @i @Program.symbols@ = @Program.fields@;
+                  @i @Program.if_in@ = 0;
+
+                  @codegen printf("\t.text\n");
+               @}
+
+               ;
+
+Program:         Funcdef ';' Program
+               @{
+                  @i @Program.fields@ = @Program.1.fields@;
+                  @i @Program.1.if_in@ = @Funcdef.if_out@;
+               @}
+
+               | Structdef ';' Program
+               @{
+                  @i @Program.fields@ = table_merge(@Structdef.fields@, @Program.1.fields@, 1);
+                  @i @Program.1.symbols@ = @Program.0.symbols@;
+               @}
+
+               |
+               @{ @i @Program.fields@ = new_table(); @}
+
+               ;
+Funcdef:         FUNC ID '(' Pars ')' Stats END
+                       @{
+                  @i @Stats.symbols@ = table_merge(@Funcdef.symbols@, @Pars.pars@, 0);
+                  @i @Stats.stack_offset@ = 0;
+                  @i @Pars.all_pars@ = @Pars.num_pars@;
+
+                  @codegen function_header(@ID.name@, @Funcdef.defined_vars@);
+               @}
+
+               | FUNC ID '(' ')' Stats END
+                       @{
+                  @i @Stats.symbols@ = table_merge(@Funcdef.symbols@, new_table(), 0);
+                  @i @Stats.stack_offset@ = 0;
+
+                  @codegen function_header(@ID.name@, @Funcdef.defined_vars@);
+               @}
+
+               ;  
+Structdef:       STRUCT Ids END
+               @{
+                  @i @Structdef.fields@ = @Ids.fields@;
+                  @i @Ids.offset@ = 0;
+               @}
+
+               ;  
+
+Ids:             ID Ids
+               @{
+                  @i @Ids.fields@ = table_add_symbol(@Ids.1.fields@, @ID.name@, SYMBOL_TYPE_FIELD, 1, @Ids.offset@);
+                  @i @Ids.1.offset@ = @Ids.offset@ + 1;
+               @}
+
+               |
+               @{ @i @Ids.fields@ = new_table(); @}
+
+               ;
+
+Pars:            Pars ',' ID
+               @{
+                   @i @Pars.pars@ = table_add_param(@Pars.1.pars@, @ID.name@, @Pars.num_pars@);
+                  @i @Pars.num_pars@ = @Pars.1.num_pars@ + 1;
+                @}
+
+               | ID
+               @{
+                   @i @Pars.pars@ = table_add_param(new_table(), @ID.name@, 1);
+                   @i @Pars.num_pars@ = 1;
+                @}
+
+               ; 
+Stats:           Stat ';' Stats
+               @{
+                  @i @Stat.in_symbols@ = @Stats.symbols@;
+                  @i @Stats.1.symbols@ = @Stat.out_symbols@;
+                  @i @Stats.defined_vars@ = @Stat.defined_vars@ + @Stats.1.defined_vars@;
+                  @i @Stats.1.stack_offset@ = @Stats.stack_offset@ + @Stat.defined_vars@ * 8;
+                  @i @Stats.node@ = new_node(OP_Stats, @Stat.node@, @Stats.1.node@);
+                  @i @Stat.if_in@ = @Stats.if_in@;
+                  @i @Stats.1.if_in@ = @Stat.if_out@;
+                  @i @Stats.if_out@ = @Stats.1.if_out@;
+               @}
+
+               |
+               @{
+                  @i @Stats.node@ = new_leaf(OP_Empty); /* TODO */
+                  @i @Stats.defined_vars@ = 0;
+                  @i @Stats.if_out@ = @Stats.if_in@;
+               @}
+
+               ;  
+Stat:            VAR ID ASSIGN Expr /* Nodes necessary for IF, DO, ... ? */
+               @{
+                  @i @Stat.out_symbols@ = table_add_symbol(clone_table(@Stat.in_symbols@), @ID.name@, SYMBOL_TYPE_VAR, 0, @Stat.stack_offset@);
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Assign, new_named_leaf_value(OP_ID, @ID.name@, @Stat.stack_offset@, -1), @Expr.node@);
+                  @i @Stat.defined_vars@ = 1;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+
+                  @reg @Expr.node@->reg = get_next_reg((char *)NULL, 0); @Stat.node@->reg = @Expr.node@->reg;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               | Lexpr ASSIGN Expr
+               @{
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Lexpr.symbols@ = @Stat.in_symbols@;
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Assign, @Lexpr.node@, @Expr.node@);
+                  @i @Stat.defined_vars@ = 0;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+
+                  @reg @Lexpr.node@->reg = get_next_reg((char *)NULL, 0); @Expr.node@->reg = get_next_reg(@Lexpr.node@->reg, 0); @Stat.node@->reg = @Expr.node@->reg;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               | IF Bool THEN Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_If, @Bool.node@, @Stats.node@);
+                  @i @Bool.if_in@ = @Stat.if_in@ + 1;
+                  @i @Stats.if_in@ = @Bool.if_out@;
+                  @i @Stat.if_out@ = @Stats.if_out@;
+                  @e Bool.jump_true : Stats.if_in; @Bool.jump_true@ = malloc(100); sprintf(@Bool.jump_true@, "if_then%i", @Stats.if_in@);
+                  @e Bool.jump_false : Stats.if_in; @Bool.jump_false@ = malloc(100); sprintf(@Bool.jump_false@, "if_end%i", @Stats.if_in@);
+
+                  @reg @Bool.node@->reg = get_next_reg((char *)NULL, 0);
+
+                  @codegen /* write_tree(@Bool.node@, 0); burm_label(@Bool.node@); burm_reduce(@Bool.node@, 1); printf("\ttest %s1, %%%s\n\tjz if_end%i\n", imm_prefix, @Bool.node@->reg, @Stats.if_in@); */
+                  @codegen @revorder(1) printf("if_end%i:\n", @Stats.if_in@);
+               @}
+
+               | IF Bool THEN Stats Blubb END 
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Blubb.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;              
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Ifstats, @Stats.node@, @Blubb.node@);
+                  @i @Stat.defined_vars@ = @Stats.defined_vars@ + @Blubb.defined_vars@;
+                  @i @Bool.if_in@ = @Stat.if_in@ + 1;
+                  @i @Stats.if_in@ = @Bool.if_out@;
+                  @i @Blubb.if_in@ = @Stats.if_out@;
+                  @i @Stat.if_out@ = @Blubb.if_out@;
+                  @i @Blubb.if_nr@ = @Stats.if_in@;
+                  @e Bool.jump_true : Stats.if_in; @Bool.jump_true@ = malloc(100); sprintf(@Bool.jump_true@, "if_then%i", @Stats.if_in@);
+                  @e Bool.jump_false : Stats.if_in; @Bool.jump_false@ = malloc(100); sprintf(@Bool.jump_false@, "if_else%i", @Stats.if_in@);
+
+                  @reg @Bool.node@->reg = get_next_reg((char *)NULL, 0);
+
+                  @codegen /* write_tree(@Bool.node@, 0); burm_label(@Bool.node@); burm_reduce(@Bool.node@, 1); printf("\ttest %s1, %%%s\n\tjz if_else%i\n", imm_prefix, @Bool.node@->reg, @Stats.if_in@); */
+                  @codegen @revorder(1) printf("if_end%i:\n", @Stats.if_in@);
+               @}
+
+               | WHILE Bool DO Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_While, @Bool.node@, @Stats.node@);
+                  @i @Bool.if_in@ = @Stat.if_in@ + 1;
+                  @i @Stats.if_in@ = @Bool.if_out@;
+                  @i @Stat.if_out@ = @Stats.if_out@;
+                  @e Bool.jump_true : Stats.if_in; @Bool.jump_true@ = malloc(100); sprintf(@Bool.jump_true@, "do_enter%i", @Stats.if_in@);
+                  @e Bool.jump_false : Stats.if_in; @Bool.jump_false@ = malloc(100); sprintf(@Bool.jump_false@, "do_end%i", @Stats.if_in@);
+
+                  @reg @Bool.node@->reg = get_next_reg((char *)NULL, 0);
+
+                  @codegen printf("do_start%i:\n", @Stats.if_in@); /* write_tree(@Bool.node@, 0); burm_label(@Bool.node@); burm_reduce(@Bool.node@, 1); printf("\ttest %s1, %%%s\n\tjz do_end%i\n", imm_prefix, @Bool.node@->reg, @Stats.if_in@); */
+                  @codegen @revorder(1) printf("\tjmp do_start%i\ndo_end%i:\n", @Stats.if_in@, @Stats.if_in@);
+               @}
+
+               | Call
+               @{
+                  @i @Call.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+                  @i @Stat.defined_vars@ = 0;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+               @}
+
+               | RETURN Expr
+               @{
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Return, @Expr.node@, (treenode *)NULL);
+                  @i @Stat.defined_vars@ = 0;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+
+                  @reg @Stat.node@->reg = get_next_reg((char *)NULL, 0); @Expr.node@->reg = @Stat.node@->reg;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               ;
+
+Blubb:           ELSE Stats
+               @{
+                  @codegen printf("\tjmp if_end%i\nif_else%i:\n", @Blubb.if_nr@, @Blubb.if_nr@);
+               @}
+
+Lexpr:           ID
+               @{
+                  @i @Lexpr.node@ = new_named_leaf_value(OP_ID, @ID.name@, (table_lookup(@Lexpr.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Lexpr.symbols@, @ID.name@)->stack_offset, (table_lookup(@Lexpr.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Lexpr.symbols@, @ID.name@)->param_index);
+
+                  @check check_variable(@Lexpr.symbols@, @ID.name@);
+               @}
+
+               | Field
+               ;
+Expr:            '-' Term
+               @{
+                  @i @Expr.node@ = new_node(OP_Negation, @Term.node@, (treenode *)NULL);
+
+                  @reg @Term.node@->reg = @Expr.node@->reg;
+               @}
+
+               | Term
+               @{ @reg @Term.node@->reg = @Expr.node@->reg; @}
+
+               | Term Plusterm
+               @{
+                  @i @Expr.node@ = new_node(OP_Addition, @Plusterm.node@, @Term.node@);
+                  @i @Expr.immediate@ = @Term.immediate@ && @Plusterm.immediate@;
+
+                  @reg if(!@Plusterm.immediate@) { @Plusterm.node@->reg = @Expr.node@->reg; @Term.node@->reg = get_next_reg(@Plusterm.node@->reg, @Expr.node@->skip_reg); @Plusterm.node@->skip_reg = 1; } else { @Term.node@->reg = @Expr.node@->reg; @Plusterm.node@->reg = get_next_reg(@Term.node@->reg, @Expr.node@->skip_reg); }
+               @}
+
+               | Term Malterm
+               @{
+                  @i @Expr.node@ = new_node(OP_Multiplication, @Malterm.node@, @Term.node@);
+                  @i @Expr.immediate@ = @Term.immediate@ && @Malterm.immediate@;
+
+                  @reg if(!@Malterm.immediate@) { @Malterm.node@->reg = @Expr.node@->reg; @Term.node@->reg = get_next_reg(@Malterm.node@->reg, @Expr.node@->skip_reg); @Malterm.node@->skip_reg = 1; } else { @Term.node@-> reg = @Expr.node@->reg; @Malterm.node@->reg = get_next_reg(@Term.node@->reg, @Expr.node@->skip_reg); }
+               @}
+
+               ;
+
+Plusterm:        '+' Term Plusterm
+               @{
+                  @i @Plusterm.node@ = new_node(OP_Addition, @Plusterm.1.node@, @Term.node@);
+                  @i @Plusterm.immediate@ = @Term.immediate@ && @Plusterm.1.immediate@;
+
+                  @reg @Plusterm.1.node@->reg = @Plusterm.node@->reg; @Term.node@->reg = get_next_reg(@Plusterm.1.node@->reg, @Plusterm.node@->skip_reg); 
+               @}
+
+               | '+' Term
+               @{ @reg @Term.node@->reg = @Plusterm.node@->reg; @}
+
+               ;
+
+Malterm:         '*' Term Malterm
+               @{
+                  @i @Malterm.node@ = new_node(OP_Multiplication, @Malterm.1.node@, @Term.node@);
+                  @i @Malterm.immediate@ = @Term.immediate@ && @Malterm.1.immediate@;
+
+                  @reg @Malterm.1.node@->reg = @Malterm.node@->reg; @Term.node@->reg = get_next_reg(@Malterm.1.node@->reg, @Malterm.node@->skip_reg); 
+               @}
+
+                       | '*' Term
+               @{ @reg @Term.node@->reg = @Malterm.node@->reg; @}
+
+               ;
+Term:            '(' Expr ')'
+               @{ @reg @Expr.node@->reg = @Term.node@->reg; @}
+
+               | ID
+               @{
+                  @i @Term.node@ = new_named_leaf_value(OP_ID, @ID.name@, (table_lookup(@Term.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Term.symbols@, @ID.name@)->stack_offset, (table_lookup(@Term.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Term.symbols@, @ID.name@)->param_index);
+                  @i @Term.immediate@ = 0;
+
+                  @check check_variable(@Term.symbols@, @ID.name@);
+               @}
+
+               | NUM
+               @{
+                  @i @Term.node@ = new_number_leaf(@NUM.value@);
+                  @i @Term.immediate@ = 1;
+               @}
+
+               | Call
+               @{ @i @Term.immediate@ = 0; @}
+
+               | Field
+               @{
+                  @i @Term.immediate@ = 0;
+
+                  @reg @Field.node@->reg = @Term.node@->reg;
+               @}
+
+               ;
+
+/* TODO replace by Bool -> Subbool */
+Bool:            Bterm
+               @{
+                  @i @Bool.negated@ = 0;
+                  @i @Bool.negated2@ = 0;
+                  @i @Bterm.negated@ = 0;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Bool.top_level@ = 1;
+                  @i @Bterm.top_level@ = 1;
+
+                  @codegen @revorder(1) if(@Bterm.node@->op!=OP_Disjunction) { printf("\tjmp %s # foo1\n", @Bool.jump_false@); } printf("%s:\n", @Bool.jump_true@); /* printf("\tjmp %s\n%s:\n", @Bool.jump_false@, @Bool.jump_true@); */
+               @}
+
+               | Bterm Orterm
+               @{
+                  @i @Bool.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.node@);
+                  @i @Bool.negated@ = 0;
+                  @i @Bool.negated2@ = 0;
+                  @i @Bterm.negated@ = 0;
+                  @i @Orterm.negated@ = 0;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Orterm.negated2@ = 0;
+                  @e Bterm.jump_true : Bool.negated Bool.jump_true Bool.if_in; if(!@Bool.negated@) { @Bterm.jump_true@ = malloc(100); sprintf(@Bterm.jump_true@, "bool_true%i", @Bool.if_in@); } else { @Bterm.jump_true@ = @Bool.jump_true@; }
+                  @i @Orterm.jump_true@ = @Bterm.jump_true@;
+                  @e Bterm.jump_false : Bool.negated Bool.jump_false Bool.if_in; if(@Bool.negated@) { @Bterm.jump_false@ = malloc(100); sprintf(@Bterm.jump_false@, "bool_false%i", @Bool.if_in@); } else { @Bterm.jump_false@ = @Bool.jump_false@; }
+                  @i @Orterm.jump_false@ = @Bterm.jump_false@;
+                  @i @Bterm.if_in@ = @Bool.if_in@ + 1;
+                  @i @Orterm.if_in@ = @Bterm.if_out@;
+                  @i @Bool.if_out@ = @Orterm.if_out@;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Orterm.top_level@ = 0;
+                  @i @Bool.top_level@ = 1;
+
+                  @reg @Bterm.node@->reg = @Bool.node@->reg; @Orterm.node@->reg = @Bool.node@->reg;
+
+                  @codegen @revorder(1) printf("\tjmp %s # foo2\n", @Bool.jump_false@); printf(@Bool.negated@ ? "bool_false%i:\n" : "bool_true%i:\n", @Bool.if_in@); printf("%s:\n", @Bool.jump_true@); /* printf("\tjmp %s\n%s:\n", @Bool.jump_false@, @Bool.jump_true@); */
+               @}
+
+               | NOT Bterm
+               @{
+                  @i @Bool.node@ = new_node(OP_Not, @Bterm.node@, (treenode *)NULL);
+                  @i @Bterm.jump_true@ = @Bool.jump_true@;
+                  @i @Bool.negated@ = 0;
+                  @i @Bool.negated2@ = 0;
+                  @i @Bterm.negated@ = 1;
+                  @i @Bterm.negated2@ = 1;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Bool.top_level@ = 1;
+
+                  @reg @Bterm.node@-> reg = @Bool.node@->reg;
+
+                  @codegen @revorder(1) if(@Bterm.node@->op!=OP_Not) { printf("\tjmp %s # foo3\n", @Bool.jump_false@); } printf("%s:\n", @Bool.jump_true@); /* printf("\tjmp %s\nnot_break%i:\n\tjmp %s\n%s:\n", @Bool.jump_true@, 0, @Bool.jump_false@, @Bool.jump_true@); */
+               @}
+
+               ;
+
+Subbool:         Bterm
+               @{
+                  @i @Bterm.negated@ = @Subbool.negated@;
+                  @i @Bterm.negated2@ = @Subbool.negated2@;
+                  @i @Bterm.top_level@ = @Subbool.top_level@;
+                  @codegen @revorder(1) /* printf("\tjmp %s\n%s:\n", @Subbool.jump_false@, @Subbool.jump_true@); */
+               @}
+
+               | Bterm Orterm
+               @{
+                  @i @Subbool.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.node@);
+                  @i @Bterm.negated@ = @Subbool.negated@;
+                  @i @Orterm.negated@ = @Subbool.negated@;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Orterm.negated2@ = 0;
+                  @e Bterm.jump_true : Subbool.negated Subbool.negated2 Subbool.jump_true Subbool.if_in; if(!@Subbool.negated@ && @Subbool.negated2@) { @Bterm.jump_true@ = malloc(100); sprintf(@Bterm.jump_true@, "bool_true%i", @Subbool.if_in@); } else { @Bterm.jump_true@ = @Subbool.jump_true@; }
+                  @i @Orterm.jump_true@ = @Bterm.jump_true@;
+                  @e Bterm.jump_false : Subbool.negated Subbool.negated2 Subbool.jump_false Subbool.if_in; if(@Subbool.negated@ && @Subbool.negated2@) { @Bterm.jump_false@ = malloc(100); sprintf(@Bterm.jump_false@, "bool_false%i", @Subbool.if_in@); } else { @Bterm.jump_false@ = @Subbool.jump_false@; }
+                  @i @Orterm.jump_false@ = @Bterm.jump_false@;
+                  @i @Bterm.if_in@ = @Subbool.if_in@ + 1;
+                  @i @Orterm.if_in@ = @Bterm.if_out@;
+                  @i @Subbool.if_out@ = @Orterm.if_out@;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Orterm.top_level@ = 0;
+                  @reg @Bterm.node@->reg = @Subbool.node@->reg; @Orterm.node@->reg = @Subbool.node@->reg;
+
+                  @codegen @revorder(1) /* TODO output if on top level */ if(@Subbool.negated2@ || @Subbool.top_level@) { printf("\tjmp %s # foo4\n", @Subbool.negated2@ ? @Subbool.jump_true@ : @Subbool.jump_false@); } printf(!@Subbool.negated@ ? "bool_true%i:\n" : "bool_false%i:\n", @Subbool.if_in@); /* printf("\tjmp %s\n# %s:\n", @Subbool.jump_true@, @Subbool.jump_true@);  */
+               @}
+
+               | NOT Bterm
+               @{
+                  @i @Subbool.node@ = new_node(OP_Not, @Bterm.node@, (treenode *)NULL);
+                  @i @Bterm.jump_true@ = @Subbool.jump_true@;
+                  @i @Bterm.negated@ = 1 - @Subbool.negated@;
+                  @i @Bterm.negated2@ = 1 - @Subbool.negated2@;
+                  @i @Bterm.top_level@ = 0;
+
+                  @reg @Bterm.node@-> reg = @Subbool.node@->reg; /* printf("%s, %s\n", @Bterm.jump_true@, @Subbool.jump_false@); */
+
+                  @codegen @revorder(1) printf("# !!\n"); if(@Subbool.negated2@ || @Subbool.top_level@) { printf("\tjmp %s # foo9\n", @Subbool.negated2@ ? @Subbool.jump_false@ : @Subbool.jump_false@); } /* printf("\tjmp %s\nnot_break%i:\n", @Subbool.negated@ ? @Bterm.jump_true@ : @Subbool.jump_false@, 0); printf("\tjmp %s\n%s:\n", @Subbool.jump_false@, @Subbool.jump_true@); */
+               @}
+
+               ;
+
+
+Orterm:                  OR Bterm Orterm
+               @{
+                  @i @Orterm.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.1.node@);
+                  @i @Bterm.negated@ = @Orterm.negated@;
+                  @i @Orterm.1.negated@ = @Orterm.negated@;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Orterm.1.negated2@ = 0;
+                  @i @Orterm.1.if_in@ = @Bterm.if_out@;
+                  @i @Orterm.if_out@ = @Orterm.1.if_out@;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Orterm.1.top_level@ = 0;
+
+                  @reg @Bterm.node@->reg = @Orterm.node@->reg; @Orterm.1.node@->reg = @Orterm.node@->reg;
+               @}
+
+               | OR Bterm
+               @{
+                  @i @Bterm.negated@ = @Orterm.negated@;
+                  @i @Bterm.negated2@ = @Orterm.negated2@;
+                  @i @Bterm.top_level@ = 0;
+               @}
+
+               ;
+
+Bterm:           Term GREATER Term
+               @{
+                  @i @Bterm.node@ = new_node(OP_Greater, @Term.node@, @Term.1.node@);
+                  @i @Bterm.if_out@ = @Bterm.if_in@;
+                  
+                  @reg @Term.node@->reg = @Bterm.node@->reg; @Term.1.node@->reg = get_next_reg(@Bterm.node@->reg, 0);
+
+                  @codegen /* write_tree(@Term.node@, 0); */ burm_label(@Term.node@); burm_reduce(@Term.node@, 1); /* write_tree(@Term.1.node@, 0); */ burm_label(@Term.1.node@); burm_reduce(@Term.1.node@, 1); printf(@Bterm.negated2@ ? "\tcmp %%%s, %%%s\n\tjs %s # %s %s %i %i\n" : "\tcmp %%%s, %%%s\n\tjns %s # %s %s %i %i\n", @Term.1.node@->reg, @Term.node@->reg, ((@Bterm.negated2@ ^ @Bterm.negated@)) ? @Bterm.jump_false@ : @Bterm.jump_true@, @Bterm.jump_true@, @Bterm.jump_false@, @Bterm.negated2@, @Bterm.negated@);
+               @}
+
+               | Term '=' Term
+               @{
+                  @i @Bterm.node@ = new_node(OP_Equal, @Term.node@, @Term.1.node@);
+                  @i @Bterm.if_out@ = @Bterm.if_in@;
+
+                  @reg @Term.node@->reg = @Bterm.node@->reg; @Term.1.node@->reg = get_next_reg(@Bterm.node@->reg, 0);
+
+                  @codegen /* write_tree(@Term.node@, 0); */ burm_label(@Term.node@); burm_reduce(@Term.node@, 1); /* write_tree(@Term.1.node@, 0); */ burm_label(@Term.1.node@); burm_reduce(@Term.1.node@, 1); printf(@Bterm.negated2@ ? "\tcmp %%%s, %%%s\n\tjnz %s # %s %s %i %i\n" : "\tcmp %%%s, %%%s\n\tjz %s # %s %s %i %i\n", @Term.node@->reg, @Term.1.node@->reg, ((@Bterm.negated2@ ^ @Bterm.negated@)) ? @Bterm.jump_false@ : @Bterm.jump_true@, @Bterm.jump_true@, @Bterm.jump_false@, @Bterm.negated2@, @Bterm.negated@);
+               @}
+
+               | '(' Subbool ')'
+               @{
+                  @i @Subbool.negated@ = @Bterm.negated@;
+                  @i @Subbool.negated2@ = @Bterm.negated2@;
+                  @i @Subbool.top_level@ = @Bterm.top_level@;
+               @}
+
+               ;
+
+Field:           Term '.' ID
+               @{
+                  @i @Field.node@ = new_node_value(OP_Field, @Term.node@, new_named_leaf(OP_ID, @ID.name@), table_lookup(@Field.symbols@, @ID.name@)==(struct symbol_t *)NULL ? 0 : table_lookup(@Field.symbols@, @ID.name@)->stack_offset, -1);
+
+                  @check check_field(@Field.symbols@, @ID.name@);
+
+                  @reg @Term.node@->reg = @Field.node@->reg; @Field.node@->kids[1]->reg = get_next_reg(@Field.node@->reg, 0); 
+               @}
+
+               ;
+
+Call:            ID '(' Exprs ')'
+               @{ @i @Call.node@ = new_node(OP_Call, new_named_leaf(OP_ID, @ID.name@), @Exprs.node@); @}
+
+               | ID '(' ')'
+               @{ @i @Call.node@ = new_node(OP_Call, new_named_leaf(OP_ID, @ID.name@), NULL); @}
+
+               ;
+
+Exprs:           Expr
+               | Exprs ',' Expr
+               @{ @i @Exprs.node@ = new_node(OP_Exprs, @Exprs.1.node@, @Expr.node@); @}
+
+               ;
+
+%%
+
+extern int yylex();
+extern int yylineno;
+
+int yyerror(char *error_text) {
+       fprintf(stderr,"Line %i: %s\n",yylineno, error_text);
+       exit(2);
+}
+
+int main(int argc, char **argv) {
+       yyparse();
+       return 0;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/scanner.lex b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/scanner.lex
new file mode 100644 (file)
index 0000000..5cf6520
--- /dev/null
@@ -0,0 +1,67 @@
+       #include <stdio.h>
+       #include <stdlib.h>
+       #include <string.h>
+       #include "parser.h"
+       #include "tree.h"
+
+KEYWORD                func|end|struct|var|if|then|else|while|do|return|or|not
+IDENTIFIER     [[:alpha:]_][[:alnum:]_]*
+NUMBER_HEX     [0-9][0-9A-Fa-f]*H
+NUMBER_DEC     [0-9]+
+WHITESPACE     [\t\n\r ]
+COMMENT_START  \(\*
+COMMENT_END    \*\)
+
+%x COMMENT
+%option yylineno
+%%
+
+{COMMENT_START}                        BEGIN(COMMENT);
+
+<COMMENT>{COMMENT_END}         BEGIN(INITIAL);
+
+<COMMENT>{COMMENT_START}       fprintf(stderr, "Possibly nested comment on line %i\n", yylineno);
+
+<COMMENT><<EOF>>               { fprintf(stderr, "Unterminated comment.\n"); exit(1); }
+
+<COMMENT>{WHITESPACE}          /* ignore */
+
+<COMMENT>.                     /* ignore everything inside comment */
+
+func                           return(FUNC);
+end                            return(END);
+struct                         return(STRUCT);
+var                            return(VAR);
+if                             return(IF);
+then                           return(THEN);
+else                           return(ELSE);
+while                          return(WHILE);
+do                             return(DO);
+return                         return(RETURN);
+or                             return(OR);
+not                            return(NOT);
+
+{IDENTIFIER}                   return(ID); @{ @ID.name@=strdup(yytext); @}
+
+{NUMBER_DEC}                   return(NUM); @{ @NUM.value@=strtol(yytext,(char **)NULL,10); @}
+{NUMBER_HEX}                   return(NUM); @{ yytext[strlen(yytext)-1]='\0'; @NUM.value@=strtol(yytext,(char **)NULL,16); @}
+                               
+\:=                            return(ASSIGN);
+>=                             return(GREATER);
+\;                             return(';');
+\.                             return('.');
+\(                             return('(');
+\)                             return(')');
+\,                             return(',');
+\-                             return('-');
+\+                             return('+');
+\*                             return('*');
+=                              return('=');
+
+{WHITESPACE}                   /* ignore */
+
+.                              { fprintf(stderr, "Lexical error on line %i\n", yylineno); exit(1); }
+
+%%
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/symbol_table.c b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/symbol_table.c
new file mode 100755 (executable)
index 0000000..bf66a65
--- /dev/null
@@ -0,0 +1,192 @@
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "symbol_table.h"
+
+struct symbol_t *new_table(void) {
+       return (struct symbol_t *)NULL;
+}
+
+struct symbol_t *clone_table(struct symbol_t *table) {
+       struct symbol_t *element;
+       struct symbol_t *new_tablex;
+
+       element=table;
+       new_tablex=new_table();
+       while((struct symbol_t *)NULL!=element) {
+               /* check return value */
+               if(element->param_index!=-1) {
+                       new_tablex=table_add_param(new_tablex,element->identifier,element->param_index);
+               }
+               else {
+                       new_tablex=table_add_symbol(new_tablex,element->identifier,element->type,0,element->stack_offset);
+               }
+               element=element->next;
+       }
+
+       return new_tablex;
+}
+
+struct symbol_t *table_add_symbol(struct symbol_t *table, char *identifier, short type, short check, int stack_offset) {
+       struct symbol_t *element;
+       struct symbol_t *new_element;
+
+       if(table_lookup(table,identifier)!=(struct symbol_t *)NULL) {
+               if(check) {
+                       fprintf(stderr,"Duplicate field %s.\n",identifier);
+                       exit(3);
+               }
+
+               table=table_remove_symbol(table,identifier);
+       }
+       
+       new_element=(struct symbol_t *)malloc(sizeof(struct symbol_t));
+       new_element->next=(struct symbol_t *)NULL;
+       new_element->identifier=strdup(identifier);
+       new_element->type=type;
+       new_element->stack_offset=stack_offset;
+       new_element->param_index=-1;
+
+       if((struct symbol_t *)NULL==table) {
+               return new_element;
+       }
+       element=table;
+
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+       }
+
+       element->next=new_element;
+       
+       return table;
+}
+
+struct symbol_t *table_add_param(struct symbol_t *table, char *identifier, int param_index) {
+       struct symbol_t *element;
+       struct symbol_t *new_element;
+
+       if(table_lookup(table,identifier)!=(struct symbol_t *)NULL) {
+               table=table_remove_symbol(table,identifier);
+       }
+       
+       new_element=(struct symbol_t *)malloc(sizeof(struct symbol_t));
+       new_element->next=(struct symbol_t *)NULL;
+       new_element->identifier=strdup(identifier);
+       new_element->type=SYMBOL_TYPE_PARAM;
+       new_element->param_index=param_index;
+
+       if((struct symbol_t *)NULL==table) {
+               return new_element;
+       }
+       element=table;
+
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+       }
+
+       element->next=new_element;
+       
+       return table;
+}
+
+struct symbol_t *table_lookup(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element;
+
+       element=table;
+
+       if((struct symbol_t *)NULL==table) {
+               return (struct symbol_t *)NULL;
+       }
+       
+       if(strcmp(element->identifier,identifier)==0) {
+               return element;
+       }
+       
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+               if(strcmp(element->identifier,identifier)==0) {
+                       return element;
+               }
+       }
+
+       return (struct symbol_t *)NULL;
+}
+
+struct symbol_t *table_merge(struct symbol_t *table, struct symbol_t *to_add, short check) {
+       struct symbol_t *element;
+       struct symbol_t *new_table=clone_table(table);
+       
+       element=to_add;
+       while(element!=(struct symbol_t *)NULL) {
+               if(element->param_index!=-1) {
+                       new_table=table_add_param(new_table,element->identifier,element->param_index);
+               }
+               else {
+                       new_table=table_add_symbol(new_table,element->identifier,element->type,check,element->stack_offset);
+               }
+               element=element->next;
+       }
+
+       return new_table;
+}
+
+struct symbol_t *table_remove_symbol(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element;
+       struct symbol_t *previous_element;
+       struct symbol_t *new_element;
+
+       if((struct symbol_t *)NULL==table) {
+               return table;
+       }
+
+       previous_element=(struct symbol_t *)NULL;
+       element=table;
+
+       while((struct symbol_t *)NULL!=element) {
+               if(strcmp(element->identifier,identifier)==0) {
+                       if((struct symbol_t *)NULL==previous_element) {
+                               new_element=element->next;
+                       }
+                       else {
+                               previous_element->next=element->next;
+                               new_element=table;
+                       }
+                       (void)free(element->identifier);
+                       (void)free(element);
+                       return new_element;
+               }
+               previous_element=element;
+               element=element->next;
+       }
+
+       return table;
+}
+
+void check_variable(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element=table_lookup(table,identifier);
+       if(element!=(struct symbol_t *)NULL) {
+               if(element->type!=SYMBOL_TYPE_VAR && element->type!=SYMBOL_TYPE_PARAM) {
+                       fprintf(stderr,"Identifier %s not a variable.\n",identifier);
+                       exit(3);
+               }
+       }
+       else {
+               fprintf(stderr,"Unknown identifier %s.\n",identifier);
+               exit(3);
+       }
+}
+
+void check_field(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element=table_lookup(table,identifier);
+       if(element!=(struct symbol_t *)NULL) {
+               if(element->type!=SYMBOL_TYPE_FIELD) {
+                       fprintf(stderr,"Identifier %s not a variable.\n",identifier);
+                       exit(3);
+               }
+       }
+       else {
+               fprintf(stderr,"Unknown identifier %s.\n",identifier);
+               exit(3);
+       }
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/symbol_table.h b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/symbol_table.h
new file mode 100755 (executable)
index 0000000..f8f3687
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef SYMBOL_TABLE_H
+#define SYMBOL_TABLE_H
+
+#define SYMBOL_TYPE_FIELD 1
+#define SYMBOL_TYPE_VAR 2
+#define SYMBOL_TYPE_PARAM 3
+
+struct symbol_t {
+       char *identifier;
+       struct symbol_t *next;
+       short type;
+       int stack_offset;
+       int param_index; /* -1 if not a parameter */
+};
+
+struct symbol_t *clone_table(struct symbol_t *table);
+struct symbol_t *new_table(void);
+struct symbol_t *table_add_symbol(struct symbol_t *table, char *identifier, short type, short check, int stack_offset);
+struct symbol_t *table_add_param(struct symbol_t *table, char *identifier, int param_index);
+struct symbol_t *table_lookup(struct symbol_t *table, char *identifier);
+struct symbol_t *table_remove_symbol(struct symbol_t *table, char *identifier);
+struct symbol_t *table_merge(struct symbol_t *table, struct symbol_t *to_add, short check);
+void check_variable(struct symbol_t *table, char *identifier);
+void check_field(struct symbol_t *table, char *identifier);
+
+#endif /* SYMBOL_TABLE_H */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/test.c b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/test.c
new file mode 100644 (file)
index 0000000..6052e59
--- /dev/null
@@ -0,0 +1,187 @@
+#include <stdio.h>
+
+extern long f1(long a);
+extern long f2(long a);
+extern long f3(long a);
+extern long f4(long a);
+extern long f5(long a);
+extern long f6(long a);
+extern long f7(long a);
+extern long f8(long a);
+extern long f9(long a);
+extern long f10(long a);
+
+extern long g1(long a, long b);
+extern long g2(long a, long b);
+extern long g3(long a, long b);
+extern long g4(long a, long b);
+extern long g5(long a, long b);
+extern long g6(long a, long b);
+extern long g7(long a, long b);
+extern long g8(long a, long b);
+extern long g9(long a, long b);
+extern long g10(long a, long b);
+extern long g11(long a, long b);
+extern long g12(long a, long b);
+
+extern long h1(long a, long b, long c, long d);
+extern long h2(long a, long b, long c, long d);
+extern long h3(long a, long b, long c, long d);
+extern long h4(long a, long b, long c, long d);
+extern long h5(long a, long b, long c, long d);
+extern long h6(long a, long b, long c, long d);
+extern long h7(long a, long b, long c, long d);
+extern long h8(long a, long b, long c, long d);
+extern long h9(long a, long b, long c, long d);
+extern long h10(long a, long b, long c, long d);
+extern long h11(long a, long b, long c, long d);
+extern long h12(long a, long b, long c, long d);
+extern long h13(long a, long b, long c, long d);
+extern long h14(long a, long b, long c, long d);
+extern long h15(long a, long b, long c, long d);
+extern long h16(long a, long b, long c, long d);
+extern long h17(long a, long b, long c, long d);
+extern long h18(long a, long b, long c, long d);
+extern long h19(long a, long b, long c, long d);
+extern long h20(long a, long b, long c, long d);
+extern long h21(long a, long b, long c, long d);
+extern long h22(long a, long b, long c, long d);
+extern long h23(long a, long b, long c, long d);
+extern long h24(long a, long b, long c, long d);
+
+int check_arg1(char *name, long (*function)(long), long ret0, long ret1, long ret2) {
+       int ret;
+       ret=function(0)==ret0 && function(1)==ret1 && function(2)==ret2;
+       printf("%s: %li/%li, %li/%li, %li/%li - %s\n", name,function(0), ret0, function(1), ret1, function(2), ret2, ret ? "ok" : "FAIL");
+       return ret;
+}
+
+int check_arg2(char *name, long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       printf("%s - ", name);
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+                       printf("%li/%li ", function(a,b),blubb[a][b]);
+               }
+       }
+       printf("- %s\n", ret ? "ok" : "FAIL");
+       return ret;
+}
+
+int check_arg4(char *name, long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       printf("%s - ", name);
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                                       printf("%li/%li ", function(a,b,c,d),blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       printf("- %s\n", ret ? "ok" : "FAIL");
+       return ret;
+}
+
+int main(int argc, char **argv) {
+       int ret;
+
+       long ret_g1[2][2]={{1,1},{1,0}};
+       long ret_g2[2][2]={{1,0},{1,1}};
+       long ret_g3[2][2]={{1,1},{0,1}};
+       long ret_g4[2][2]={{0,1},{1,1}};
+       long ret_g5[2][2]={{0,0},{0,1}};
+       long ret_g6[2][2]={{0,1},{0,0}};
+       long ret_g7[2][2]={{0,0},{1,0}};
+       long ret_g8[2][2]={{1,0},{0,0}};
+       long ret_g9[2][2]={{1,1},{1,0}};
+       long ret_g10[2][2]={{1,0},{1,1}};
+       long ret_g11[2][2]={{1,1},{0,1}};
+       long ret_g12[2][2]={{0,1},{1,1}};
+
+       long ret_h1[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+       long ret_h2[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h3[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+       long ret_h4[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+       long ret_h5[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+       long ret_h6[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h7[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+       long ret_h8[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+       long ret_h9[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,1}}}};
+       long ret_h10[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,1}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+       long ret_h11[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,1}},{{0,0},{0,0}}}};
+       long ret_h12[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,1},{0,0}}}};
+       long ret_h13[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{1,0}}}};
+       long ret_h14[2][2][2][2]={{{{0,0},{0,1}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+       long ret_h15[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{1,0},{0,0}}}};
+       long ret_h16[2][2][2][2]={{{{1,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+       long ret_h17[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+       long ret_h18[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h19[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+       long ret_h20[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+       long ret_h21[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+       long ret_h22[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h23[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+       long ret_h24[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+       ret=check_arg1("f1",f1,0,1,1);
+       ret&=check_arg1("f2",f2,0,0,1);
+       ret&=check_arg1("f3",f3,1,0,0);
+       ret&=check_arg1("f4",f4,0,1,1);
+       ret&=check_arg1("f5",f5,0,0,1);
+       ret&=check_arg1("f6",f6,1,0,0);
+       ret&=check_arg1("f7",f7,0,1,1);
+       ret&=check_arg1("f8",f8,0,0,1);
+       ret&=check_arg1("f9",f9,1,1,1);
+       ret&=check_arg1("f10",f10,1,0,0);
+
+       ret&=check_arg2("g1",g1,ret_g1);
+       ret&=check_arg2("g2",g2,ret_g2);
+       ret&=check_arg2("g3",g3,ret_g3);
+       ret&=check_arg2("g4",g4,ret_g4);
+       ret&=check_arg2("g5",g5,ret_g5);
+       ret&=check_arg2("g6",g6,ret_g6);
+       ret&=check_arg2("g7",g7,ret_g7);
+       ret&=check_arg2("g8",g8,ret_g8);
+       ret&=check_arg2("g9",g9,ret_g9);
+       ret&=check_arg2("g10",g10,ret_g10);
+       ret&=check_arg2("g11",g11,ret_g11);
+       ret&=check_arg2("g12",g12,ret_g12);
+
+       ret&=check_arg4("h1",h1,ret_h1);
+       ret&=check_arg4("h2",h2,ret_h2);
+       ret&=check_arg4("h3",h3,ret_h3);
+       ret&=check_arg4("h4",h4,ret_h4);
+       ret&=check_arg4("h5",h5,ret_h5);
+       ret&=check_arg4("h6",h6,ret_h6);
+       ret&=check_arg4("h7",h7,ret_h7);
+       ret&=check_arg4("h8",h8,ret_h8);
+       ret&=check_arg4("h9",h9,ret_h9);
+       ret&=check_arg4("h10",h10,ret_h10);
+       ret&=check_arg4("h11",h11,ret_h11);
+       ret&=check_arg4("h12",h12,ret_h12);
+       ret&=check_arg4("h13",h13,ret_h13);
+       ret&=check_arg4("h14",h14,ret_h14);
+       ret&=check_arg4("h15",h15,ret_h15);
+       ret&=check_arg4("h16",h16,ret_h16);
+       ret&=check_arg4("h17",h17,ret_h17);
+       ret&=check_arg4("h18",h18,ret_h18);
+       ret&=check_arg4("h19",h19,ret_h19);
+       ret&=check_arg4("h20",h20,ret_h20);
+       ret&=check_arg4("h21",h21,ret_h21);
+       ret&=check_arg4("h22",h22,ret_h22);
+       ret&=check_arg4("h23",h23,ret_h23);
+       ret&=check_arg4("h24",h24,ret_h24);
+
+       return !ret;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/test.input b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/test.input
new file mode 100644 (file)
index 0000000..0771e51
--- /dev/null
@@ -0,0 +1,49 @@
+func f1(a) if a=0 then return 0; else return 1; end; end;
+func f2(a) if a=0 or a=1 then return 0; else return 1; end; end;
+func f3(a) if not (a=0) then return 0; else return 1; end; end;
+func f4(a) if (a=0) then return 0; else return 1; end; end;
+func f5(a) if (a=0 or a=1) then return 0; else return 1; end; end;
+func f6(a) if (not (a=0)) then return 0; else return 1; end; end;
+func f7(a) if not (not (a=0)) then return 0; else return 1; end; end;
+func f8(a) if not (not (a=0 or a=1)) then return 0; else return 1; end; end;
+func f9(a) if not ((not (a=0)) or (not (a=1))) then return 0; else return 1; end; end;
+func f10(a) if (not (not (not (a=0)))) then return 0; else return 1; end; end;
+
+func g1(a,b) if (a=0 or b=0) then return 1; else return 0; end; end;
+func g2(a,b) if ((not (a=0)) or b=0) then return 1; else return 0; end; end;
+func g3(a,b) if (a=0 or (not (b=0))) then return 1; else return 0; end; end;
+func g4(a,b) if ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
+func g5(a,b) if not (a=0 or b=0) then return 1; else return 0; end; end;
+func g6(a,b) if not ((not (a=0)) or b=0) then return 1; else return 0; end; end;
+func g7(a,b) if not (a=0 or (not (b=0))) then return 1; else return 0; end; end;
+func g8(a,b) if not ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
+func g9(a,b) if not (not (a=0 or b=0)) then return 1; else return 0; end; end;
+func g10(a,b) if not (not ((not (a=0)) or b=0)) then return 1; else return 0; end; end;
+func g11(a,b) if not (not (a=0 or (not (b=0)))) then return 1; else return 0; end; end;
+func g12(a,b) if not (not ((not (a=0)) or (not (b=0)))) then return 1; else return 0; end; end;
+
+func h1(a,b,c,d) if (a=0 or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h2(a,b,c,d) if ((not (a=0)) or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h3(a,b,c,d) if (a=0 or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h4(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or d=0) then return 1; else return 0; end; end;
+func h5(a,b,c,d) if (a=0 or b=0) or (c=0 or (not (d=0))) then return 1; else return 0; end; end;
+func h6(a,b,c,d) if ((not (a=0)) or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h7(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
+func h8(a,b,c,d) if ((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
+func h9(a,b,c,d) if not ((a=0 or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h10(a,b,c,d) if not (((not (a=0)) or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h11(a,b,c,d) if not ((a=0 or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h12(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or d=0)) then return 1; else return 0; end; end;
+func h13(a,b,c,d) if not ((a=0 or b=0) or (c=0 or (not (d=0)))) then return 1; else return 0; end; end;
+func h14(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h15(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
+func h16(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
+func h17(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h18(a,b,c,d) if not (not (((not (a=0)) or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h19(a,b,c,d) if not (not ((a=0 or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h20(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or d=0))) then return 1; else return 0; end; end;
+func h21(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or (not (d=0))))) then return 1; else return 0; end; end;
+func h22(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h23(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
+func h24(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/all-wcprops b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/all-wcprops
new file mode 100644 (file)
index 0000000..b892dba
--- /dev/null
@@ -0,0 +1,1157 @@
+K 25
+svn:wc:ra_dav:version-url
+V 49
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases
+END
+f2.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f2.call
+END
+g4.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g4.call
+END
+tiefen.call
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/tiefen.call
+END
+forumx_06.3
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/forumx_06.3
+END
+g11.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g11.0
+END
+my_d.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_d.0
+END
+h6.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h6.call
+END
+h13.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h13.0
+END
+my_h.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_h.0
+END
+negterm1.call
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/negterm1.call
+END
+h17.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h17.0
+END
+my_l.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_l.0
+END
+my_a.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_a.call
+END
+malandro11.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro11.3
+END
+malandro15.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro15.3
+END
+h13.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h13.call
+END
+g3.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g3.0
+END
+algebran3.call
+K 25
+svn:wc:ra_dav:version-url
+V 64
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/algebran3.call
+END
+fib.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/fib.call
+END
+g7.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g7.0
+END
+parameter6.call
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/parameter6.call
+END
+g1.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g1.call
+END
+h3.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h3.call
+END
+f7.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f7.call
+END
+algebra1.call
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/algebra1.call
+END
+h22.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h22.0
+END
+g9.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g9.call
+END
+tiefen1.0
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/tiefen1.0
+END
+forum_05.3
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/forum_05.3
+END
+algebran4.0
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/algebran4.0
+END
+ag_g.3
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/ag_g.3
+END
+fib.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/fib.0
+END
+malandro03.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro03.3
+END
+parameter3.0
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/parameter3.0
+END
+ag_k.3
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/ag_k.3
+END
+h10.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h10.call
+END
+test4.2
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/test4.2
+END
+f1.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f1.0
+END
+my_f.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_f.call
+END
+h22.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h22.call
+END
+malandro07.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro07.3
+END
+tiefen1.call
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/tiefen1.call
+END
+h2.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h2.0
+END
+f5.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f5.0
+END
+h18.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h18.call
+END
+h6.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h6.0
+END
+f9.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f9.0
+END
+parameter3.call
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/parameter3.call
+END
+f4.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f4.call
+END
+my_a.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_a.0
+END
+f10.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f10.0
+END
+forumx_07.2
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/forumx_07.2
+END
+g6.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g6.call
+END
+h10.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h10.0
+END
+g12.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g12.0
+END
+my_e.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_e.0
+END
+h8.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h8.call
+END
+h14.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h14.0
+END
+h18.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h18.0
+END
+my_i.3
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_i.3
+END
+g10.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g10.call
+END
+malandro12.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro12.3
+END
+my_c.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_c.call
+END
+malandro16.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro16.3
+END
+regfehler.4
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/regfehler.4
+END
+h15.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h15.call
+END
+g4.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g4.0
+END
+tiefen.0
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/tiefen.0
+END
+my_k.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_k.call
+END
+g8.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g8.0
+END
+f1.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f1.call
+END
+negterm1.0
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/negterm1.0
+END
+g3.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g3.call
+END
+h5.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h5.call
+END
+f9.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f9.call
+END
+algebran1.0
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/algebran1.0
+END
+h23.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h23.0
+END
+forum_06.3
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/forum_06.3
+END
+ag_h.3
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/ag_h.3
+END
+f10.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f10.call
+END
+test1.3
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/test1.3
+END
+malandro04.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro04.3
+END
+parameter4.0
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/parameter4.0
+END
+h12.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h12.call
+END
+f2.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f2.0
+END
+my_h.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_h.call
+END
+algebran2.call
+K 25
+svn:wc:ra_dav:version-url
+V 64
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/algebran2.call
+END
+h24.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h24.call
+END
+h3.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h3.0
+END
+f6.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f6.0
+END
+h7.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h7.0
+END
+tiefemax.call
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/tiefemax.call
+END
+parameter5.call
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/parameter5.call
+END
+h2.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h2.call
+END
+forumx_04.3
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/forumx_04.3
+END
+my_b.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_b.0
+END
+f6.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f6.call
+END
+h11.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h11.0
+END
+forumx_08.3
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/forumx_08.3
+END
+g8.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g8.call
+END
+my_f.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_f.0
+END
+h15.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h15.0
+END
+my_j.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_j.0
+END
+malandro.3
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro.3
+END
+h19.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h19.0
+END
+malandro13.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro13.3
+END
+g12.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g12.call
+END
+my_e.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_e.call
+END
+h21.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h21.call
+END
+g1.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g1.0
+END
+algebra.call
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/algebra.call
+END
+h17.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h17.call
+END
+g5.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g5.0
+END
+parameter2.call
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/parameter2.call
+END
+g9.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g9.0
+END
+f3.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f3.call
+END
+localx01.3
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/localx01.3
+END
+g5.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g5.call
+END
+h20.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h20.0
+END
+h7.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h7.call
+END
+algebran2.0
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/algebran2.0
+END
+h24.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h24.0
+END
+ag_e.3
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/ag_e.3
+END
+forum_07.2
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/forum_07.2
+END
+malandro01.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro01.3
+END
+negterm.0
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/negterm.0
+END
+parameter1.0
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/parameter1.0
+END
+ag_i.3
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/ag_i.3
+END
+my_b.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_b.call
+END
+testscriptx03.3
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/testscriptx03.3
+END
+test2.3
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/test2.3
+END
+malandro05.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro05.3
+END
+parameter5.0
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/parameter5.0
+END
+f3.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f3.0
+END
+h14.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h14.call
+END
+malandro09.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro09.3
+END
+my_j.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_j.call
+END
+algebran4.call
+K 25
+svn:wc:ra_dav:version-url
+V 64
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/algebran4.call
+END
+h4.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h4.0
+END
+f7.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f7.0
+END
+h8.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h8.0
+END
+g2.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g2.call
+END
+forumx_05.3
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/forumx_05.3
+END
+h4.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h4.call
+END
+g10.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g10.0
+END
+my_c.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_c.0
+END
+f8.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f8.call
+END
+h12.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h12.0
+END
+my_g.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_g.0
+END
+algebra.0
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/algebra.0
+END
+local01.3
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/local01.3
+END
+h16.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h16.0
+END
+my_k.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_k.0
+END
+malandro10.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro10.3
+END
+tiefemax.0
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/tiefemax.0
+END
+h11.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h11.call
+END
+malandro14.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro14.3
+END
+my_g.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_g.call
+END
+algebran1.call
+K 25
+svn:wc:ra_dav:version-url
+V 64
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/algebran1.call
+END
+h23.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h23.call
+END
+g2.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g2.0
+END
+g6.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g6.0
+END
+h19.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h19.call
+END
+parameter4.call
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/parameter4.call
+END
+h1.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1022/ublu08/codeb/testcases/h1.call
+END
+f5.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f5.call
+END
+g7.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g7.call
+END
+h21.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h21.0
+END
+ag_b.3
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/ag_b.3
+END
+h9.call
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h9.call
+END
+forum_04.3
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/forum_04.3
+END
+algebran3.0
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/algebran3.0
+END
+forum_08.3
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/forum_08.3
+END
+malandro02.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro02.3
+END
+parameter2.0
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/parameter2.0
+END
+ag_j.3
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/ag_j.3
+END
+g11.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/g11.call
+END
+my_d.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_d.call
+END
+h20.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h20.call
+END
+test3.3
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/test3.3
+END
+malandro06.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/malandro06.3
+END
+parameter6.0
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/parameter6.0
+END
+h1.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h1.0
+END
+f4.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f4.0
+END
+h16.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h16.call
+END
+h5.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h5.0
+END
+my_l.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/my_l.call
+END
+f8.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/f8.0
+END
+negterm.call
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/negterm.call
+END
+parameter1.call
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/parameter1.call
+END
+algebra1.0
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1042/ublu08/codeb/testcases/algebra1.0
+END
+h9.0
+K 25
+svn:wc:ra_dav:version-url
+V 54
+/svn/private/!svn/ver/1019/ublu08/codeb/testcases/h9.0
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/entries b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/entries
new file mode 100644 (file)
index 0000000..837dfa9
--- /dev/null
@@ -0,0 +1,2320 @@
+8
+
+dir
+1019
+http://localhost/svn/private/ublu08/codeb/testcases
+http://localhost/svn/private
+
+
+
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+
+
+svn:special svn:externals svn:needs-lock
+\f
+f2.call
+file
+
+
+
+
+2008-05-17T15:52:09.000000Z
+6fdf6778d8fc38ee5ed996403a0beee7
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+g4.call
+file
+
+
+
+
+2008-05-17T16:01:46.000000Z
+91086753970b73e9bdca217572ac9c8d
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+tiefen.call
+file
+1042
+
+
+
+2008-05-19T17:33:31.000000Z
+4e4611a55d42deb5d4d01604659aee3d
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+forumx_06.3
+file
+1042
+
+
+
+2008-05-19T17:32:49.000000Z
+90f2ef946fd9ef28fcf94df027e89e56
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+g11.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+ece252a4a0ec44ce0e3f340b0f3403ec
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_d.0
+file
+1042
+
+
+
+2008-05-19T17:33:22.000000Z
+edb330d048a07ba2fae79cc04d38a7f1
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h6.call
+file
+
+
+
+
+2008-05-17T18:13:35.000000Z
+5e3326d561b87290b4eb674f1303870d
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h13.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+9cd396fc3339078adcaf75a56ec19156
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_h.0
+file
+1042
+
+
+
+2008-05-19T17:33:24.000000Z
+24d3908b6b8ece4cc26953a301f0ac98
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+negterm1.call
+file
+1042
+
+
+
+2008-05-19T17:33:25.000000Z
+df277ed55a7f4f87cbef2815c8ac3d67
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h17.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+3e6ee293496914c5f2096bd0a8550f3c
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_l.0
+file
+1042
+
+
+
+2008-05-19T17:33:25.000000Z
+c4a82df390b222018ef51ac46566b0a4
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+my_a.call
+file
+1042
+
+
+
+2008-05-19T17:33:21.000000Z
+d8e871df2c202de33d975b0b930ae83c
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+malandro11.3
+file
+1042
+
+
+
+2008-05-19T17:33:19.000000Z
+01f2397e7770ffe1210363a85e7cbbc2
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+malandro15.3
+file
+1042
+
+
+
+2008-05-19T17:33:20.000000Z
+d5ee0e5ba80a0bff089d93f5706f7408
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h13.call
+file
+
+
+
+
+2008-05-17T18:14:41.000000Z
+8b9ec70cddc4dc5d4a61e6c67e043ae2
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+g3.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+d4145f0545bc34ee767b3ff34657aebd
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+algebran3.call
+file
+1042
+
+
+
+2008-05-19T17:31:21.000000Z
+31a43ca0465b0c89a605fdd25d6edefc
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+fib.call
+file
+
+
+
+
+2008-05-17T18:18:30.000000Z
+e56eb5050edfe853fd96c4a2eca3c749
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+g7.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+85ed1ed1e6f164ffea7ef137d363cb10
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+parameter6.call
+file
+1042
+
+
+
+2008-05-19T17:33:29.000000Z
+1265633d7de6b2d870ae79b1f20041de
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+g1.call
+file
+
+
+
+
+2008-05-17T16:01:15.000000Z
+53187b9d7adde68a9e5933499c8f922e
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h3.call
+file
+
+
+
+
+2008-05-17T18:13:11.000000Z
+c7c83b1c157701d046b33a3a66956187
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+f7.call
+file
+
+
+
+
+2008-05-17T15:55:30.000000Z
+e8fddc19e3e601f8cc863dc7b144413c
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+algebra1.call
+file
+1042
+
+
+
+2008-05-19T17:31:21.000000Z
+cddcdc6d33203e7c02204531c0c5aa1d
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+tiefen1.0
+file
+1042
+
+
+
+2008-05-19T17:33:31.000000Z
+20468ca960f31ebc7c20ccfade82a914
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h22.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+374eb9995cbdb04b5220807a5a3f87b9
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+g9.call
+file
+
+
+
+
+2008-05-17T16:02:21.000000Z
+c8351778328bd6445197f503b8139d17
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+forum_05.3
+file
+1042
+
+
+
+2008-05-19T17:32:47.000000Z
+ec3a03b9d419323173761bfd14e4a342
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+algebran4.0
+file
+1042
+
+
+
+2008-05-19T17:31:22.000000Z
+e38a1ef87d78932d67c67aa84e1ccf75
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+fib.0
+file
+
+
+
+
+2008-05-17T18:18:00.000000Z
+b968dfc49c1042155cf7df90e7f8e5ad
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+ag_g.3
+file
+1042
+
+
+
+2008-05-19T17:31:20.000000Z
+20534b17025920c73825550fb87ce080
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+parameter3.0
+file
+1042
+
+
+
+2008-05-19T17:33:27.000000Z
+a84451fa9cf4a391d17e8644f8178316
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+malandro03.3
+file
+1042
+
+
+
+2008-05-19T17:33:17.000000Z
+44d577a75f88e2050610bfdfbd14c6be
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+ag_k.3
+file
+1042
+
+
+
+2008-05-19T17:31:20.000000Z
+e65008728ffa41f53928dffb28f6c94b
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h10.call
+file
+
+
+
+
+2008-05-17T18:14:08.000000Z
+2c485b4998bfadced17db390161a05bb
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+test4.2
+file
+1042
+
+
+
+2008-05-19T17:33:30.000000Z
+261f08f201d000da065a3b6e0e4fe522
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+my_f.call
+file
+1042
+
+
+
+2008-05-19T17:33:23.000000Z
+0a039d15f089d3b7e1e83741ad4fcf00
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+f1.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+d00a3189324e0dc908bc4c9ca337b874
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h22.call
+file
+
+
+
+
+2008-05-17T18:16:19.000000Z
+a6ffd7bcd611b80ef7dc135af39112c1
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+malandro07.3
+file
+1042
+
+
+
+2008-05-19T17:33:18.000000Z
+c7d7f7ab7fc7362e4f89df7180f12e63
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+tiefen1.call
+file
+1042
+
+
+
+2008-05-19T17:33:31.000000Z
+267076ac0db282a9e63d3da134d02ac5
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h2.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+35959e8c523c6f4174e6b55ab6b4c8c5
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+f5.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+569ee2be6fb5c62ef86cd3629cac5f3f
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h18.call
+file
+
+
+
+
+2008-05-17T18:15:47.000000Z
+a9a81170498be8f908b88064fd921651
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h6.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+6278e991fa97d2fe44a6b667bf5ce8ce
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+f9.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+cacb3a1b2234ad40bb5845121342ecc5
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+parameter3.call
+file
+1042
+
+
+
+2008-05-19T17:33:27.000000Z
+b83655ced953bc57f27e16d99a375090
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+f4.call
+file
+
+
+
+
+2008-05-17T15:55:14.000000Z
+86cb296fb35261183e0b7cb47da376ac
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_a.0
+file
+1042
+
+
+
+2008-05-19T17:33:21.000000Z
+3bffa81589a4257a11d417591113c422
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+f10.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+2279bf66cdd77b388d7891edd286797c
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+forumx_07.2
+file
+1042
+
+
+
+2008-05-19T17:32:49.000000Z
+2eff768369bb8c5041b9f7d6472e6c09
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+g6.call
+file
+
+
+
+
+2008-05-17T16:02:02.000000Z
+194d639fa1d782d72d1c44fc2078f323
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h10.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+920dd8ceaaccf2467646b2131bb4cbe8
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+g12.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+06094e77abc9ec03ec903a3e24e6b665
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_e.0
+file
+1042
+
+
+
+2008-05-19T17:33:23.000000Z
+8bb24c7ef08877bec6d85c61c7f11486
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h8.call
+file
+
+
+
+
+2008-05-17T18:13:51.000000Z
+ddca9b6763b65ae5d4446c3ce803a4a0
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h14.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+60bf3f187d9a1dbbb3a2465912fe3051
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h18.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+9c1ecac2a855e2fa6a5e099d7785a7c9
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_i.3
+file
+1042
+
+
+
+2008-05-19T17:33:24.000000Z
+87e2ed0079b335710ad819a032522b7f
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+g10.call
+file
+
+
+
+
+2008-05-17T16:02:56.000000Z
+771617f03dfcc89cecf5527b6598eb51
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+malandro12.3
+file
+1042
+
+
+
+2008-05-19T17:33:20.000000Z
+aa0e79272f940413edf4d665c6bf1b13
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+my_c.call
+file
+1042
+
+
+
+2008-05-19T17:33:22.000000Z
+8b6e3530f1036c37b21714cbdabc01c2
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+malandro16.3
+file
+1042
+
+
+
+2008-05-19T17:33:20.000000Z
+dd6cb8db3847a3b5b61dd7472759e41e
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+regfehler.4
+file
+1042
+
+
+
+2008-05-19T17:33:29.000000Z
+05069199bbd9dcebcc33a29331a5ad2e
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h15.call
+file
+
+
+
+
+2008-05-17T18:14:59.000000Z
+6b6c982647c1a7f22e564dd174368033
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+g4.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+9034560365c27619e90055b4da8e5372
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+tiefen.0
+file
+1042
+
+
+
+2008-05-19T17:33:31.000000Z
+894857a81390988f155cfc843435b294
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+my_k.call
+file
+1042
+
+
+
+2008-05-19T17:33:24.000000Z
+865f8ec640f631c4f6402456858abdca
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+g8.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+fe8d7c2e7823e6bdd1c8fc28605bd9f2
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+f1.call
+file
+
+
+
+
+2008-05-17T15:54:59.000000Z
+53fc6b9768c09b7c293a1be97bccbbc8
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+negterm1.0
+file
+1042
+
+
+
+2008-05-19T17:33:25.000000Z
+1988fa90318ee8b68449221ce78c241b
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+g3.call
+file
+
+
+
+
+2008-05-17T16:01:37.000000Z
+e24b4fb290f801e18a3bf96d00461914
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h5.call
+file
+
+
+
+
+2008-05-17T18:13:27.000000Z
+d592a3082cc9d79acd5c6156405522e0
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+f9.call
+file
+
+
+
+
+2008-05-17T15:55:40.000000Z
+9450201506a4516e5e1b1c9fda7c9bab
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h23.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+f2dc8cde2ccfc3b28c646d065432a62a
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+algebran1.0
+file
+1042
+
+
+
+2008-05-19T17:31:21.000000Z
+690865c2dd5b4b91db769c1da6d25140
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+forum_06.3
+file
+1042
+
+
+
+2008-05-19T17:32:48.000000Z
+90f2ef946fd9ef28fcf94df027e89e56
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+ag_h.3
+file
+1042
+
+
+
+2008-05-19T17:31:20.000000Z
+650875eb5a2f896670989d5eb855cb15
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+f10.call
+file
+
+
+
+
+2008-05-17T15:55:45.000000Z
+f01c2a5bfad5e7cbe354daa82f38bf67
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+test1.3
+file
+1042
+
+
+
+2008-05-19T17:33:29.000000Z
+cf01830ebe0eea03c1eaa4b62661d921
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+malandro04.3
+file
+1042
+
+
+
+2008-05-19T17:33:17.000000Z
+2d2e211032ee1340a92a0c1047c6118b
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+parameter4.0
+file
+1042
+
+
+
+2008-05-19T17:33:28.000000Z
+ad9b196b5359debf25e96b7d89594a10
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h12.call
+file
+
+
+
+
+2008-05-17T18:14:31.000000Z
+6215af599791dd3c552445d220889a9a
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+f2.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+29979069993c3662a4e9ddde5923a4b4
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_h.call
+file
+1042
+
+
+
+2008-05-19T17:33:24.000000Z
+e089414c1c9493efaa9df2ee7a9c5fca
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h24.call
+file
+
+
+
+
+2008-05-17T18:16:31.000000Z
+dfb11c2012a60887f5f3be302c327154
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+algebran2.call
+file
+1042
+
+
+
+2008-05-19T17:31:21.000000Z
+b9bdb8dfee8630bde64f5e468a27ab83
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h3.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+40c8a6988c2d1e144c1925fe9c5f5656
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+f6.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+ff8ef2815c929123b8b399719f7d74f9
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+tiefemax.call
+file
+1042
+
+
+
+2008-05-19T17:33:31.000000Z
+89db20d22c0c8952c78b02832a1d6890
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h7.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+0e9afe918174f0bc89b1808f03e33c05
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+parameter5.call
+file
+1042
+
+
+
+2008-05-19T17:33:29.000000Z
+ec07056887a720babfb611b28d880856
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h2.call
+file
+
+
+
+
+2008-05-17T18:13:01.000000Z
+822191cbe70a0099adee9b3f9e2c86d8
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_b.0
+file
+1042
+
+
+
+2008-05-19T17:33:21.000000Z
+a146ace45773876d04625ec0ff58a056
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+forumx_04.3
+file
+1042
+
+
+
+2008-05-19T17:32:48.000000Z
+53d9c7e2e53e504ed29147e475c198ca
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+f6.call
+file
+
+
+
+
+2008-05-17T15:55:25.000000Z
+b2fa8363b75b105954deedddefba509f
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h11.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+dff54389b093db24b8108199477d278c
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_f.0
+file
+1042
+
+
+
+2008-05-19T17:33:23.000000Z
+0651ad5f3f0b89ff295418768ee0f9b9
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+forumx_08.3
+file
+1042
+
+
+
+2008-05-19T17:32:50.000000Z
+79467ccded17f71ad439c95f808fcc2b
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+g8.call
+file
+
+
+
+
+2008-05-17T16:02:15.000000Z
+563ca6eb8935a8ea48110d8fe29569c1
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h15.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+c80e471f2847784226fc2037a551dcd4
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_j.0
+file
+1042
+
+
+
+2008-05-19T17:33:24.000000Z
+1ca4a232bb8d070c35c51fcaeb343760
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+malandro.3
+file
+1042
+
+
+
+2008-05-19T17:33:21.000000Z
+841850e2a940609318a3b8cfbcea5ae6
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h19.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+c61fd976033fc4e9663e7e918282db3e
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+malandro13.3
+file
+1042
+
+
+
+2008-05-19T17:33:20.000000Z
+65c411aa64afeeff2977743f66888419
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+g12.call
+file
+
+
+
+
+2008-05-17T16:03:24.000000Z
+453b2d8fe412acc52b23bc2508816687
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_e.call
+file
+1042
+
+
+
+2008-05-19T17:33:23.000000Z
+aadf182e68032bd4d62184ec98f22f96
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h21.call
+file
+
+
+
+
+2008-05-17T18:16:13.000000Z
+c69e8ba6d274d469dd2633b623f4f2c9
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+g1.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+82a9ac30d92f5afc92769af75534e5ce
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+algebra.call
+file
+1042
+
+
+
+2008-05-19T17:31:21.000000Z
+3017bb3923bd9e6e82471364aaa815b5
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h17.call
+file
+
+
+
+
+2008-05-17T18:15:18.000000Z
+53dfbeab7dcdad7ba8b38eccd01fa8ca
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+g5.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+8aef877a7ce8f2b3b26fd597d526b14c
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+parameter2.call
+file
+1042
+
+
+
+2008-05-19T17:33:26.000000Z
+e7d734676b659257758b46640ed1edbe
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+g9.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+2bf1172b55d9c98b19fc64ebf4ef5013
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+f3.call
+file
+
+
+
+
+2008-05-17T15:56:50.000000Z
+9f74f6b9a2f2bb52089896cfd60dd342
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+localx01.3
+file
+1042
+
+
+
+2008-05-19T17:33:15.000000Z
+dca62f2af71a71eb7ed4e232e530befc
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+g5.call
+file
+
+
+
+
+2008-05-17T16:01:55.000000Z
+fea54a4aeac466fba2b371477119ade2
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h20.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+31285e1e83984533b1a302c077efb47d
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h7.call
+file
+
+
+
+
+2008-05-17T18:13:44.000000Z
+6e1158562af63768dd7619dc10803233
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h24.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+6fe5899c44e3d873842fdc4e62f5bda2
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+algebran2.0
+file
+1042
+
+
+
+2008-05-19T17:31:21.000000Z
+6f66742e13551edc693253c2fab30c31
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+ag_e.3
+file
+1042
+
+
+
+2008-05-19T17:31:20.000000Z
+3c2167748f53462c0b1db85d36117cab
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+forum_07.2
+file
+1042
+
+
+
+2008-05-19T17:32:48.000000Z
+2eff768369bb8c5041b9f7d6472e6c09
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+malandro01.3
+file
+1042
+
+
+
+2008-05-19T17:33:16.000000Z
+8d38fe618dc92f98cbddb87c0819c8cb
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+negterm.0
+file
+1042
+
+
+
+2008-05-19T17:33:25.000000Z
+1988fa90318ee8b68449221ce78c241b
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+parameter1.0
+file
+1042
+
+
+
+2008-05-19T17:33:26.000000Z
+1261f0301022d7e1842bc892c067907e
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+ag_i.3
+file
+1042
+
+
+
+2008-05-19T17:31:20.000000Z
+e7c3efc4c07c5fd29267e8dd51cc3837
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+my_b.call
+file
+1042
+
+
+
+2008-05-19T17:33:22.000000Z
+cf8ce2070e9a5e0209f878697a46df1b
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+testscriptx03.3
+file
+1042
+
+
+
+2008-05-19T17:33:30.000000Z
+d2168be28160d4fef8250aa5fd68cfe1
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+test2.3
+file
+1042
+
+
+
+2008-05-19T17:33:30.000000Z
+00abfc26a30c3aab6fc57a21d46ceb2b
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+parameter5.0
+file
+1042
+
+
+
+2008-05-19T17:33:28.000000Z
+5486f00b73c73fe463a8eed28381154c
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+malandro05.3
+file
+1042
+
+
+
+2008-05-19T17:33:18.000000Z
+1de8dca763ece7a0cee3a5089cf76270
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+f3.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+775d933d70fbc9bf5b376ab7c7ff27a7
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h14.call
+file
+
+
+
+
+2008-05-17T18:14:50.000000Z
+fbad72a47632903211179624698f35d1
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+malandro09.3
+file
+1042
+
+
+
+2008-05-19T17:33:19.000000Z
+0609d00302341b6cf4740d436bb87ad0
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+my_j.call
+file
+1042
+
+
+
+2008-05-19T17:33:24.000000Z
+1be4fc525da884e37231e897d8df9153
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h4.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+4426579c1fb1c0be99974b7118572ab1
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+algebran4.call
+file
+1042
+
+
+
+2008-05-19T17:31:22.000000Z
+1bbb58f1e36e4916cd12fb28254a749e
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+f7.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+3dc7d7476bc4d0b46d5fb184022adb52
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h8.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+7fc0ad824e5fd175879cf626dd56f0dc
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+g2.call
+file
+
+
+
+
+2008-05-17T16:01:27.000000Z
+b445b24b77fdf47000fc1a23d9471e8c
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+forumx_05.3
+file
+1042
+
+
+
+2008-05-19T17:32:49.000000Z
+e8e353ae2a690dc40e3de8029c7543cb
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+my_c.0
+file
+1042
+
+
+
+2008-05-19T17:33:22.000000Z
+b4d20db97a644172a90852ab1de2188b
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h4.call
+file
+
+
+
+
+2008-05-17T18:13:17.000000Z
+031adf99ed7c33e89db84c87a4392f69
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+g10.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+02cf0f938b64a2e5a50835b4d707b4b1
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+f8.call
+file
+
+
+
+
+2008-05-17T15:55:35.000000Z
+b6e9fa907dbb258fad6cead558e7f9df
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h12.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+34605d216eab69393ba1ead08a982d22
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_g.0
+file
+1042
+
+
+
+2008-05-19T17:33:24.000000Z
+733f1c17fd48c5ceb9a8195302a25c7e
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+algebra.0
+file
+1042
+
+
+
+2008-05-19T17:31:20.000000Z
+717629790b90ca013c291ef1bb3a95a0
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+local01.3
+file
+1042
+
+
+
+2008-05-19T17:33:14.000000Z
+dca62f2af71a71eb7ed4e232e530befc
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h16.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+566b21ab8cab3072352b9e18a4ed3fed
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_k.0
+file
+1042
+
+
+
+2008-05-19T17:33:24.000000Z
+debe02b8fb99a1b6c2bcb67b01cb6239
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+malandro10.3
+file
+1042
+
+
+
+2008-05-19T17:33:19.000000Z
+b3b87392dfb554fa731b5e109e83717d
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+tiefemax.0
+file
+1042
+
+
+
+2008-05-19T17:33:31.000000Z
+6d11b557ca68eb04e5c719a4545b8c04
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h11.call
+file
+
+
+
+
+2008-05-17T18:14:18.000000Z
+aa4a6c331e36040999fdc6091a86de53
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+malandro14.3
+file
+1042
+
+
+
+2008-05-19T17:33:20.000000Z
+cdf5c8269940d7e8c2728eab2f130ddf
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+my_g.call
+file
+1042
+
+
+
+2008-05-19T17:33:24.000000Z
+a825f985690e62f5e01807e59c4c7482
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h23.call
+file
+
+
+
+
+2008-05-17T18:16:26.000000Z
+c51b55fe9488292f6a77ea71d4d4aecb
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+g2.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+5e8c78dd741ff50ea614da54efa537b6
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+algebran1.call
+file
+1042
+
+
+
+2008-05-19T17:31:21.000000Z
+b63ea91bf59174863748baf043bf7ad6
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+g6.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+5ab93cfbb449b62c2cd53515f9df4be3
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h19.call
+file
+
+
+
+
+2008-05-17T18:15:58.000000Z
+4406ad63d0375889d65f96ed4e97d39b
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+parameter4.call
+file
+1042
+
+
+
+2008-05-19T17:33:28.000000Z
+3f3ffcf35a86b82feb72cdd985ca1e1f
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h1.call
+file
+1022
+
+
+
+2008-05-17T18:33:40.000000Z
+be6040170888395b1ae70ab05a943484
+2008-05-17T18:33:50.153407Z
+1022
+paulchen
+\f
+f5.call
+file
+
+
+
+
+2008-05-17T15:55:21.000000Z
+8ff3de3a86a2bf00b8c8785e39034592
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+g7.call
+file
+
+
+
+
+2008-05-17T16:02:09.000000Z
+a6393c3b308f83f522919b795b69b1cd
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h21.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+26f0e09fdf5c2ca9f2ec6444d21a68c8
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+ag_b.3
+file
+1042
+
+
+
+2008-05-19T17:31:20.000000Z
+32a248c9ddfc007209d982212d49f258
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h9.call
+file
+
+
+
+
+2008-05-17T18:13:58.000000Z
+1be02f3e94466102b74b448d10ec04ba
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+forum_04.3
+file
+1042
+
+
+
+2008-05-19T17:32:47.000000Z
+d83d32ffa882e4ec405476b4f6adcd3e
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+algebran3.0
+file
+1042
+
+
+
+2008-05-19T17:31:21.000000Z
+b1363161ef4a8deedb9ed90241d931d8
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+malandro02.3
+file
+1042
+
+
+
+2008-05-19T17:33:17.000000Z
+945b02b282475aeffab4cd808c0b878c
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+forum_08.3
+file
+1042
+
+
+
+2008-05-19T17:32:48.000000Z
+c613ec3ddb7ac662168c2b225a0b3297
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+parameter2.0
+file
+1042
+
+
+
+2008-05-19T17:33:26.000000Z
+549d406f0bafaf114784f2be8988aab0
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+ag_j.3
+file
+1042
+
+
+
+2008-05-19T17:31:20.000000Z
+d6e7caf90136e29dd91e2c7d1c93f93a
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+g11.call
+file
+
+
+
+
+2008-05-17T16:03:11.000000Z
+d0ff54d3ff20c20e847a49f57c771142
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_d.call
+file
+1042
+
+
+
+2008-05-19T17:33:22.000000Z
+7dc483abb732b281b49edee6cdcbc30d
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h20.call
+file
+
+
+
+
+2008-05-17T18:16:06.000000Z
+521a7a78c92ca8cf48afffe8360e44c3
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+test3.3
+file
+1042
+
+
+
+2008-05-19T17:33:30.000000Z
+47c8c25fbe3227587a7f10ef1937af2c
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+malandro06.3
+file
+1042
+
+
+
+2008-05-19T17:33:18.000000Z
+c568b31541a0c2fc3d705a83ae0d48b2
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+parameter6.0
+file
+1042
+
+
+
+2008-05-19T17:33:29.000000Z
+d8e483e11fd68ef30c00164967a3a084
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h1.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+7ba7182884f0c9d735e9faaac7dfc7f1
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+f4.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+9184146efc94eceb80f1041fa1d276ce
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h16.call
+file
+
+
+
+
+2008-05-17T18:15:09.000000Z
+0653628e8d663327ddff45fd4eab19ee
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+h5.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+84f8654c81a880f99dc7e3f55b9081ad
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+my_l.call
+file
+1042
+
+
+
+2008-05-19T17:33:25.000000Z
+bccf20fd3bc6ceb1985ed3b2573f103d
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+f8.0
+file
+
+
+
+
+2008-05-17T15:47:39.000000Z
+9af62ae20a4a815560b5259d1a43f5af
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
+negterm.call
+file
+1042
+
+
+
+2008-05-19T17:33:25.000000Z
+bdad2e18de2d65822773cd8c924155f1
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+parameter1.call
+file
+1042
+
+
+
+2008-05-19T17:33:26.000000Z
+ec51e4a1adc8afa59fd5160c332b9645
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+algebra1.0
+file
+1042
+
+
+
+2008-05-19T17:31:20.000000Z
+6ff960ca78782ddb093e1d5ed4887afa
+2008-05-19T17:34:50.071196Z
+1042
+paulchen
+\f
+h9.0
+file
+
+
+
+
+2008-05-17T15:47:40.000000Z
+e177856e7e23dc023d0b82bbd086be47
+2008-05-17T18:19:52.308468Z
+1019
+paulchen
+\f
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/format b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/format
new file mode 100644 (file)
index 0000000..45a4fb7
--- /dev/null
@@ -0,0 +1 @@
+8
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_b.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_b.3.svn-base
new file mode 100644 (file)
index 0000000..aa221b6
--- /dev/null
@@ -0,0 +1,6 @@
+func f()
+       var a := 1;
+       var b := 2;
+
+       c := 5;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_e.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_e.3.svn-base
new file mode 100644 (file)
index 0000000..130f8db
--- /dev/null
@@ -0,0 +1,9 @@
+func f(x,y)
+       var a := 1;
+       var b := 2;
+       if a = b then
+               a := 3;
+               x := z;
+       end;
+       b := x;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_g.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_g.3.svn-base
new file mode 100644 (file)
index 0000000..e9786b8
--- /dev/null
@@ -0,0 +1,9 @@
+struct a b a end;
+
+func f()
+  var off:=10;
+  var bound:=5;
+  var add:=2;
+  return g(off,bound,add); 
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_h.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_h.3.svn-base
new file mode 100644 (file)
index 0000000..c27e6fb
--- /dev/null
@@ -0,0 +1,5 @@
+func f()
+  off := 7;
+  var off:=5;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_i.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_i.3.svn-base
new file mode 100644 (file)
index 0000000..205e1ab
--- /dev/null
@@ -0,0 +1,13 @@
+struct a b end;
+
+func f()
+  var off:=10;
+  var bound:=5;
+  var add:=2;
+  if (1=1) then
+       var x :=17;
+  else
+       return x;
+  end;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_j.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_j.3.svn-base
new file mode 100644 (file)
index 0000000..3402eaa
--- /dev/null
@@ -0,0 +1,12 @@
+struct a b end;
+
+func f()
+  var off:=10;
+  var bound:=5;
+  var add:=2;
+  if (1=1) then
+       var x :=17;
+  end;
+  return x;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_k.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/ag_k.3.svn-base
new file mode 100644 (file)
index 0000000..56757a8
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b end;
+
+func f()
+       var s := 2;
+       s.c := 17;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebra.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebra.0.svn-base
new file mode 100644 (file)
index 0000000..0e42821
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b)
+       return a + 2 + ( 3 * b);
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebra.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebra.call.svn-base
new file mode 100644 (file)
index 0000000..32ab0ce
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long);
+return  ( 2 + 2 + (3 * 4)==test(2,4));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebra1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebra1.0.svn-base
new file mode 100644 (file)
index 0000000..0825f1b
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b)
+       return a + b + ( a * b);
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebra1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebra1.call.svn-base
new file mode 100644 (file)
index 0000000..8ed0c06
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long);
+return  ( 2 + 4 + (2 * 4)==test(2,4));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran1.0.svn-base
new file mode 100644 (file)
index 0000000..a9391c8
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 + 2;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran1.call.svn-base
new file mode 100644 (file)
index 0000000..c9261fc
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 3==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran2.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran2.0.svn-base
new file mode 100644 (file)
index 0000000..4eb74e9
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 * 2;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran2.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran2.call.svn-base
new file mode 100644 (file)
index 0000000..c537d9b
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 2==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran3.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran3.0.svn-base
new file mode 100644 (file)
index 0000000..78ff632
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 * 2 * ( 3 + 4 );
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran3.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran3.call.svn-base
new file mode 100644 (file)
index 0000000..b0dc2a6
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 14==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran4.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran4.0.svn-base
new file mode 100644 (file)
index 0000000..22c8cca
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 * 2 * ( 3 + 4 ) * ( 1 + 2 + 3 + ( 2 * 4 ));
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran4.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/algebran4.call.svn-base
new file mode 100644 (file)
index 0000000..daca892
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 196==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f1.0.svn-base
new file mode 100644 (file)
index 0000000..4851858
--- /dev/null
@@ -0,0 +1 @@
+func f1(a) if a=0 then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f1.call.svn-base
new file mode 100644 (file)
index 0000000..a671bc9
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f1(long a);
+
+return f1(0)==0 && f1(1)==1 && f1(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f10.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f10.0.svn-base
new file mode 100644 (file)
index 0000000..eb43918
--- /dev/null
@@ -0,0 +1 @@
+func f10(a) if (not (not (not (a=0)))) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f10.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f10.call.svn-base
new file mode 100644 (file)
index 0000000..368d3b6
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f10(long a);
+
+return f10(0)==1 && f10(1)==0 && f10(2)==0;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f2.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f2.0.svn-base
new file mode 100644 (file)
index 0000000..d5d4e9d
--- /dev/null
@@ -0,0 +1 @@
+func f2(a) if a=0 or a=1 then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f2.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f2.call.svn-base
new file mode 100644 (file)
index 0000000..84dd655
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f2(long a);
+
+return f2(0)==0 && f2(1)==0 && f2(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f3.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f3.0.svn-base
new file mode 100644 (file)
index 0000000..f555661
--- /dev/null
@@ -0,0 +1 @@
+func f3(a) if not (a=0) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f3.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f3.call.svn-base
new file mode 100644 (file)
index 0000000..2c41e97
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f3(long a);
+
+return f3(0)==1 && f3(1)==0 && f3(2)==0;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f4.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f4.0.svn-base
new file mode 100644 (file)
index 0000000..f938299
--- /dev/null
@@ -0,0 +1 @@
+func f4(a) if (a=0) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f4.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f4.call.svn-base
new file mode 100644 (file)
index 0000000..4e50571
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f4(long a);
+
+return f4(0)==0 && f4(1)==1 && f4(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f5.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f5.0.svn-base
new file mode 100644 (file)
index 0000000..f955fa4
--- /dev/null
@@ -0,0 +1 @@
+func f5(a) if (a=0 or a=1) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f5.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f5.call.svn-base
new file mode 100644 (file)
index 0000000..57b065c
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f5(long a);
+
+return f5(0)==0 && f5(1)==0 && f5(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f6.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f6.0.svn-base
new file mode 100644 (file)
index 0000000..1509257
--- /dev/null
@@ -0,0 +1 @@
+func f6(a) if (not (a=0)) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f6.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f6.call.svn-base
new file mode 100644 (file)
index 0000000..00f1f0c
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f6(long a);
+
+return f6(0)==1 && f6(1)==0 && f6(2)==0;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f7.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f7.0.svn-base
new file mode 100644 (file)
index 0000000..9e82cf8
--- /dev/null
@@ -0,0 +1 @@
+func f7(a) if not (not (a=0)) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f7.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f7.call.svn-base
new file mode 100644 (file)
index 0000000..7e32c70
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f7(long a);
+
+return f7(0)==0 && f7(1)==1 && f7(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f8.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f8.0.svn-base
new file mode 100644 (file)
index 0000000..0e098b2
--- /dev/null
@@ -0,0 +1 @@
+func f8(a) if not (not (a=0 or a=1)) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f8.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f8.call.svn-base
new file mode 100644 (file)
index 0000000..32ef9f5
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f8(long a);
+
+return f8(0)==0 && f8(1)==0 && f8(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f9.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f9.0.svn-base
new file mode 100644 (file)
index 0000000..8d582d5
--- /dev/null
@@ -0,0 +1 @@
+func f9(a) if not ((not (a=0)) or (not (a=1))) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f9.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/f9.call.svn-base
new file mode 100644 (file)
index 0000000..6cd0459
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f9(long a);
+
+return f9(0)==1 && f9(1)==1 && f9(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/fib.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/fib.0.svn-base
new file mode 100644 (file)
index 0000000..1e1c7c4
--- /dev/null
@@ -0,0 +1,17 @@
+func fib(n)
+  if 1 >= n then return n; end;
+  var fib_n := 1; (* fib(n) *)
+  var fib_n1 := 0; (* fib(n-1) *)
+  var r := 0;
+
+  while n >= 2 do
+    (* calculate fib(n+1) *)
+    r := fib_n + fib_n1;
+    (* update fib(n-1) and fib(n) *)
+    fib_n1 := fib_n;
+    fib_n := r;
+    n := n + (-1);
+  end;
+  return r;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/fib.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/fib.call.svn-base
new file mode 100644 (file)
index 0000000..3ab7260
--- /dev/null
@@ -0,0 +1,4 @@
+unsigned long fib(unsigned long n);
+
+return fib(7)+fib(8)==fib(9);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_04.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_04.3.svn-base
new file mode 100644 (file)
index 0000000..4ff470c
--- /dev/null
@@ -0,0 +1,2 @@
+(* a2 wird 2 mal definiert *)
+struct a1 a2 a2 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_05.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_05.3.svn-base
new file mode 100644 (file)
index 0000000..ee0fef4
--- /dev/null
@@ -0,0 +1,3 @@
+(* a2 wird 2 mal definiert *)
+struct a1 a2 a3 end;
+struct a4 a5 a2 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_06.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_06.3.svn-base
new file mode 100644 (file)
index 0000000..4c7d201
--- /dev/null
@@ -0,0 +1,4 @@
+func bla()
+abs.a1 := 100;
+ert.a1 := 200;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_07.2.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_07.2.svn-base
new file mode 100644 (file)
index 0000000..ea4c6dc
--- /dev/null
@@ -0,0 +1 @@
+123.a1
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_08.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forum_08.3.svn-base
new file mode 100644 (file)
index 0000000..e1af2b8
--- /dev/null
@@ -0,0 +1,9 @@
+func f(x, y)
+       if x = y then
+               var a := y;
+               a := x;
+       end;
+
+       (* zugriff auf a nicht mehr erlaubt *)
+       a := x;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_04.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_04.3.svn-base
new file mode 100644 (file)
index 0000000..0ace8af
--- /dev/null
@@ -0,0 +1,5 @@
+(* a2 wird 2 mal definiert *)
+struct end;
+struct a1 a2 a2 end;
+struct end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_05.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_05.3.svn-base
new file mode 100644 (file)
index 0000000..96ba1fc
--- /dev/null
@@ -0,0 +1,5 @@
+(* a2 wird 2 mal definiert *)
+struct end;
+struct a1 a2 a3 end;
+struct a4 a5 a2 end;
+struct end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_06.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_06.3.svn-base
new file mode 100644 (file)
index 0000000..4c7d201
--- /dev/null
@@ -0,0 +1,4 @@
+func bla()
+abs.a1 := 100;
+ert.a1 := 200;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_07.2.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_07.2.svn-base
new file mode 100644 (file)
index 0000000..ea4c6dc
--- /dev/null
@@ -0,0 +1 @@
+123.a1
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_08.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/forumx_08.3.svn-base
new file mode 100644 (file)
index 0000000..518e626
--- /dev/null
@@ -0,0 +1,11 @@
+func f(x, y)
+       if x = y then
+               var a := y;
+               a.t := x;
+       end;
+
+       (* zugriff auf a nicht mehr erlaubt *)
+       (* a := x; *)
+end;
+
+struct b end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g1.0.svn-base
new file mode 100644 (file)
index 0000000..3e1aa7b
--- /dev/null
@@ -0,0 +1 @@
+func g1(a,b) if (a=0 or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g1.call.svn-base
new file mode 100644 (file)
index 0000000..4a51316
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g1(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g1[2][2]={{1,1},{1,0}};
+
+return check_arg2(g1,ret_g1);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g10.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g10.0.svn-base
new file mode 100644 (file)
index 0000000..c36451f
--- /dev/null
@@ -0,0 +1 @@
+func g10(a,b) if not (not ((not (a=0)) or b=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g10.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g10.call.svn-base
new file mode 100644 (file)
index 0000000..4e23018
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g10(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g10[2][2]={{1,0},{1,1}};
+
+return check_arg2(g10,ret_g10);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g11.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g11.0.svn-base
new file mode 100644 (file)
index 0000000..e9126ea
--- /dev/null
@@ -0,0 +1 @@
+func g11(a,b) if not (not (a=0 or (not (b=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g11.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g11.call.svn-base
new file mode 100644 (file)
index 0000000..92174ff
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g11(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g11[2][2]={{1,1},{0,1}};
+
+return check_arg2(g11,ret_g11);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g12.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g12.0.svn-base
new file mode 100644 (file)
index 0000000..86e62c6
--- /dev/null
@@ -0,0 +1 @@
+func g12(a,b) if not (not ((not (a=0)) or (not (b=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g12.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g12.call.svn-base
new file mode 100644 (file)
index 0000000..bb34e88
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g12(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g12[2][2]={{0,1},{1,1}};
+
+return check_arg2(g12,ret_g12);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g2.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g2.0.svn-base
new file mode 100644 (file)
index 0000000..5751378
--- /dev/null
@@ -0,0 +1 @@
+func g2(a,b) if ((not (a=0)) or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g2.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g2.call.svn-base
new file mode 100644 (file)
index 0000000..186e1ef
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g2(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g2[2][2]={{1,0},{1,1}};
+
+return check_arg2(g2,ret_g2);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g3.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g3.0.svn-base
new file mode 100644 (file)
index 0000000..39f38e6
--- /dev/null
@@ -0,0 +1 @@
+func g3(a,b) if (a=0 or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g3.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g3.call.svn-base
new file mode 100644 (file)
index 0000000..42b0114
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g3(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g3[2][2]={{1,1},{0,1}};
+
+return check_arg2(g3,ret_g3);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g4.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g4.0.svn-base
new file mode 100644 (file)
index 0000000..1903693
--- /dev/null
@@ -0,0 +1 @@
+func g4(a,b) if ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g4.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g4.call.svn-base
new file mode 100644 (file)
index 0000000..d8abf9d
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g4(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g4[2][2]={{0,1},{1,1}};
+
+return check_arg2(g4,ret_g4);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g5.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g5.0.svn-base
new file mode 100644 (file)
index 0000000..1848063
--- /dev/null
@@ -0,0 +1 @@
+func g5(a,b) if not (a=0 or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g5.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g5.call.svn-base
new file mode 100644 (file)
index 0000000..c0d02bd
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g5(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g5[2][2]={{0,0},{0,1}};
+
+return check_arg2(g5,ret_g5);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g6.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g6.0.svn-base
new file mode 100644 (file)
index 0000000..19a197b
--- /dev/null
@@ -0,0 +1 @@
+func g6(a,b) if not ((not (a=0)) or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g6.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g6.call.svn-base
new file mode 100644 (file)
index 0000000..0a0dae8
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g6(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g6[2][2]={{0,1},{0,0}};
+
+return check_arg2(g6,ret_g6);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g7.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g7.0.svn-base
new file mode 100644 (file)
index 0000000..f926ddc
--- /dev/null
@@ -0,0 +1 @@
+func g7(a,b) if not (a=0 or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g7.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g7.call.svn-base
new file mode 100644 (file)
index 0000000..f7a2e29
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g7(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g7[2][2]={{0,0},{1,0}};
+
+return check_arg2(g7,ret_g7);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g8.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g8.0.svn-base
new file mode 100644 (file)
index 0000000..0265f42
--- /dev/null
@@ -0,0 +1 @@
+func g8(a,b) if not ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g8.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g8.call.svn-base
new file mode 100644 (file)
index 0000000..c580630
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g8(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g8[2][2]={{1,0},{0,0}};
+
+return check_arg2(g8,ret_g8);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g9.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g9.0.svn-base
new file mode 100644 (file)
index 0000000..29290d1
--- /dev/null
@@ -0,0 +1 @@
+func g9(a,b) if not (not (a=0 or b=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g9.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/g9.call.svn-base
new file mode 100644 (file)
index 0000000..5f4ca1d
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g9(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g9[2][2]={{1,1},{1,0}};
+
+return check_arg2(g9,ret_g9);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h1.0.svn-base
new file mode 100644 (file)
index 0000000..daa0824
--- /dev/null
@@ -0,0 +1 @@
+func h1(a,b,c,d) if (a=0 or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h1.call.svn-base
new file mode 100644 (file)
index 0000000..4c7b92e
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h1(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h1[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+
+return check_arg4(h1,ret_h1);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h10.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h10.0.svn-base
new file mode 100644 (file)
index 0000000..309c891
--- /dev/null
@@ -0,0 +1 @@
+func h10(a,b,c,d) if not (((not (a=0)) or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h10.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h10.call.svn-base
new file mode 100644 (file)
index 0000000..3c4b8be
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h10(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h10[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,1}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+return check_arg4(h10,ret_h10);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h11.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h11.0.svn-base
new file mode 100644 (file)
index 0000000..428ed7b
--- /dev/null
@@ -0,0 +1 @@
+func h11(a,b,c,d) if not ((a=0 or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h11.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h11.call.svn-base
new file mode 100644 (file)
index 0000000..4ef296d
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h11(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h11[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,1}},{{0,0},{0,0}}}};
+
+return check_arg4(h11,ret_h11);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h12.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h12.0.svn-base
new file mode 100644 (file)
index 0000000..b76853b
--- /dev/null
@@ -0,0 +1 @@
+func h12(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h12.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h12.call.svn-base
new file mode 100644 (file)
index 0000000..72c4540
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h12(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h12[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,1},{0,0}}}};
+
+return check_arg4(h12,ret_h12);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h13.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h13.0.svn-base
new file mode 100644 (file)
index 0000000..78a4d46
--- /dev/null
@@ -0,0 +1 @@
+func h13(a,b,c,d) if not ((a=0 or b=0) or (c=0 or (not (d=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h13.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h13.call.svn-base
new file mode 100644 (file)
index 0000000..050e5d9
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h13(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h13[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{1,0}}}};
+
+return check_arg4(h13,ret_h13);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h14.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h14.0.svn-base
new file mode 100644 (file)
index 0000000..010e6ea
--- /dev/null
@@ -0,0 +1 @@
+func h14(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h14.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h14.call.svn-base
new file mode 100644 (file)
index 0000000..c050ddf
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h14(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h14[2][2][2][2]={{{{0,0},{0,1}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+return check_arg4(h14,ret_h14);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h15.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h15.0.svn-base
new file mode 100644 (file)
index 0000000..6fc3e63
--- /dev/null
@@ -0,0 +1 @@
+func h15(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h15.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h15.call.svn-base
new file mode 100644 (file)
index 0000000..b85a6b4
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h15(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h15[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{1,0},{0,0}}}};
+
+return check_arg4(h15,ret_h15);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h16.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h16.0.svn-base
new file mode 100644 (file)
index 0000000..a286b04
--- /dev/null
@@ -0,0 +1 @@
+func h16(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h16.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h16.call.svn-base
new file mode 100644 (file)
index 0000000..e42a601
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h16(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h16[2][2][2][2]={{{{1,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+return check_arg4(h16,ret_h16);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h17.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h17.0.svn-base
new file mode 100644 (file)
index 0000000..7c19502
--- /dev/null
@@ -0,0 +1 @@
+func h17(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h17.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h17.call.svn-base
new file mode 100644 (file)
index 0000000..ca17563
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h17(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h17[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+
+return check_arg4(h17,ret_h17);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h18.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h18.0.svn-base
new file mode 100644 (file)
index 0000000..399f8f1
--- /dev/null
@@ -0,0 +1 @@
+func h18(a,b,c,d) if not (not (((not (a=0)) or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h18.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h18.call.svn-base
new file mode 100644 (file)
index 0000000..70a5084
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h18(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h18[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h18,ret_h18);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h19.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h19.0.svn-base
new file mode 100644 (file)
index 0000000..983d956
--- /dev/null
@@ -0,0 +1 @@
+func h19(a,b,c,d) if not (not ((a=0 or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h19.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h19.call.svn-base
new file mode 100644 (file)
index 0000000..476667c
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h19(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h19[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+
+return check_arg4(h19,ret_h19);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h2.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h2.0.svn-base
new file mode 100644 (file)
index 0000000..640c05c
--- /dev/null
@@ -0,0 +1 @@
+func h2(a,b,c,d) if ((not (a=0)) or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h2.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h2.call.svn-base
new file mode 100644 (file)
index 0000000..d3795d0
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h2(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h2[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h2,ret_h2);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h20.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h20.0.svn-base
new file mode 100644 (file)
index 0000000..a04974b
--- /dev/null
@@ -0,0 +1 @@
+func h20(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h20.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h20.call.svn-base
new file mode 100644 (file)
index 0000000..6232c65
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h20(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h20[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+
+return check_arg4(h20,ret_h20);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h21.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h21.0.svn-base
new file mode 100644 (file)
index 0000000..ce11b58
--- /dev/null
@@ -0,0 +1 @@
+func h21(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or (not (d=0))))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h21.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h21.call.svn-base
new file mode 100644 (file)
index 0000000..30f2d4e
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h21(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h21[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+return check_arg4(h21,ret_h21);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h22.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h22.0.svn-base
new file mode 100644 (file)
index 0000000..2bd2f23
--- /dev/null
@@ -0,0 +1 @@
+func h22(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h22.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h22.call.svn-base
new file mode 100644 (file)
index 0000000..36ce291
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h22(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h22[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h22,ret_h22);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h23.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h23.0.svn-base
new file mode 100644 (file)
index 0000000..6bfbf0f
--- /dev/null
@@ -0,0 +1 @@
+func h23(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h23.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h23.call.svn-base
new file mode 100644 (file)
index 0000000..8344b04
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h23(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h23[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+
+return check_arg4(h23,ret_h23);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h24.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h24.0.svn-base
new file mode 100644 (file)
index 0000000..957d280
--- /dev/null
@@ -0,0 +1 @@
+func h24(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h24.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h24.call.svn-base
new file mode 100644 (file)
index 0000000..129ee96
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h24(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h24[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h24,ret_h24);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h3.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h3.0.svn-base
new file mode 100644 (file)
index 0000000..2e3edd0
--- /dev/null
@@ -0,0 +1 @@
+func h3(a,b,c,d) if (a=0 or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h3.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h3.call.svn-base
new file mode 100644 (file)
index 0000000..5267fa0
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h3(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h3[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+
+return check_arg4(h3,ret_h3);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h4.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h4.0.svn-base
new file mode 100644 (file)
index 0000000..b157f3f
--- /dev/null
@@ -0,0 +1 @@
+func h4(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h4.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h4.call.svn-base
new file mode 100644 (file)
index 0000000..84a49ba
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h4(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h4[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+
+return check_arg4(h4,ret_h4);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h5.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h5.0.svn-base
new file mode 100644 (file)
index 0000000..3df3a8b
--- /dev/null
@@ -0,0 +1 @@
+func h5(a,b,c,d) if (a=0 or b=0) or (c=0 or (not (d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h5.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h5.call.svn-base
new file mode 100644 (file)
index 0000000..b2d1b60
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h5(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h5[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+return check_arg4(h5,ret_h5);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h6.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h6.0.svn-base
new file mode 100644 (file)
index 0000000..ab0cffe
--- /dev/null
@@ -0,0 +1 @@
+func h6(a,b,c,d) if ((not (a=0)) or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h6.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h6.call.svn-base
new file mode 100644 (file)
index 0000000..4b87331
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h6(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h6[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h6,ret_h6);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h7.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h7.0.svn-base
new file mode 100644 (file)
index 0000000..f1670e4
--- /dev/null
@@ -0,0 +1 @@
+func h7(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h7.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h7.call.svn-base
new file mode 100644 (file)
index 0000000..f92ed4b
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h7(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h7[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+
+return check_arg4(h7,ret_h7);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h8.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h8.0.svn-base
new file mode 100644 (file)
index 0000000..341f7d0
--- /dev/null
@@ -0,0 +1 @@
+func h8(a,b,c,d) if ((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h8.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h8.call.svn-base
new file mode 100644 (file)
index 0000000..147aa92
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h8(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h8[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h8,ret_h8);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h9.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h9.0.svn-base
new file mode 100644 (file)
index 0000000..ac07344
--- /dev/null
@@ -0,0 +1 @@
+func h9(a,b,c,d) if not ((a=0 or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h9.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/h9.call.svn-base
new file mode 100644 (file)
index 0000000..6b6b634
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h9(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h9[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,1}}}};
+
+return check_arg4(h9,ret_h9);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/local01.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/local01.3.svn-base
new file mode 100644 (file)
index 0000000..eeaa4b5
--- /dev/null
@@ -0,0 +1,7 @@
+
+struct a1 a2 a3 end;
+
+(* ein Name darf nur einmal im Programm als Feldname definiert werden:
+ * a2, a3 werden hier nochmals definiert  *)
+struct b1 a2 a3 end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/localx01.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/localx01.3.svn-base
new file mode 100644 (file)
index 0000000..eeaa4b5
--- /dev/null
@@ -0,0 +1,7 @@
+
+struct a1 a2 a3 end;
+
+(* ein Name darf nur einmal im Programm als Feldname definiert werden:
+ * a2, a3 werden hier nochmals definiert  *)
+struct b1 a2 a3 end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro.3.svn-base
new file mode 100644 (file)
index 0000000..c68d7f6
--- /dev/null
@@ -0,0 +1,14 @@
+struct a1 a2 a1 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro01.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro01.3.svn-base
new file mode 100644 (file)
index 0000000..0cbc8e7
--- /dev/null
@@ -0,0 +1,5 @@
+func g(x,y)
+    y:=0;
+  return y+z;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro02.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro02.3.svn-base
new file mode 100644 (file)
index 0000000..2087a5f
--- /dev/null
@@ -0,0 +1,6 @@
+func g(x,y)
+    y:=0;
+    z:=5;
+  return y;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro03.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro03.3.svn-base
new file mode 100644 (file)
index 0000000..1ae94f6
--- /dev/null
@@ -0,0 +1,21 @@
+(*no se si esto de verdad deberia de dar erro :) ahora si*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    var e:=5;
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return e;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro04.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro04.3.svn-base
new file mode 100644 (file)
index 0000000..0263da5
--- /dev/null
@@ -0,0 +1,24 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return a;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro05.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro05.3.svn-base
new file mode 100644 (file)
index 0000000..c7f99f5
--- /dev/null
@@ -0,0 +1,28 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return a;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+
+
+struct c1 c2  b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro06.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro06.3.svn-base
new file mode 100644 (file)
index 0000000..369409e
--- /dev/null
@@ -0,0 +1,27 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+ if x = y then
+   return a;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.d2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+
+
+struct c1 c2  b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro07.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro07.3.svn-base
new file mode 100644 (file)
index 0000000..c2c1d85
--- /dev/null
@@ -0,0 +1,26 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return x;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.c1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+struct c1 c2  b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro09.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro09.3.svn-base
new file mode 100644 (file)
index 0000000..cd873c9
--- /dev/null
@@ -0,0 +1,27 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return x;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+struct c1 c2  c3 end;
+struct b1 b2 b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro10.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro10.3.svn-base
new file mode 100644 (file)
index 0000000..aec69c5
--- /dev/null
@@ -0,0 +1,13 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  d:=x.b2;  
+       
+
+  return d;
+end;
+
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro11.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro11.3.svn-base
new file mode 100644 (file)
index 0000000..bebc86e
--- /dev/null
@@ -0,0 +1,24 @@
+(*esto no deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  d:=x.a2;  
+       
+
+  return d;
+end;
+
+
+struct b1 b2 b3 end;
+
+
+
+
+func f(x,y)
+  var a:=1;
+  a:=x.b2;  
+       
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro12.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro12.3.svn-base
new file mode 100644 (file)
index 0000000..2881360
--- /dev/null
@@ -0,0 +1,55 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  
+  var c:=1;
+  d:=x.a2;  
+  return d;
+
+(*esto deberia de dar erro g no esta definida*)
+    var d:=1;
+    if d = g then
+    d:=x.a1;
+    else
+    d:=x.a2;
+    end;
+    return d;
+
+
+end;
+
+
+struct b1 b2 b3 end;
+
+(*un comentario*)
+
+
+func f(x,y)
+  var a:=1;
+  a:=x.f1;  
+       
+  return a;
+end;
+
+struct c1 c2 c3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
+struct f1 f2 d3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro13.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro13.3.svn-base
new file mode 100644 (file)
index 0000000..fbe767d
--- /dev/null
@@ -0,0 +1,56 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  
+  var c:=1;
+  d:=x.a2;  
+  return d;
+
+(*esto deberia de dar error t no visible*)
+    var d:=1;
+    if d = g then
+    var t:=5;
+    t:=x.a1;
+    else
+    d:=x.a2;
+    end;
+    return t;
+
+
+end;
+
+
+struct b1 b2 b3 end;
+
+(*un comentario*)
+
+
+func f(x,y)
+  var a:=1;
+  a:=x.f1;  
+       
+  return a;
+end;
+
+struct c1 c2 c3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
+struct f1 f2 d3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro14.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro14.3.svn-base
new file mode 100644 (file)
index 0000000..e066ffd
--- /dev/null
@@ -0,0 +1,62 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  
+  var c:=1;
+  d:=x.a2;  
+  return d;
+
+(*esto deberia de dar error t no visible*)
+    var d:=1;
+    if d = g then
+    var t:=5;
+    t:=x.a1;
+    else
+    d:=x.a2;
+    end;
+    return t;
+
+
+end;
+
+
+struct b1 b2 b3 end;
+
+(*un comentario*)
+
+
+func f(x,y)
+
+    var g:=8;
+    if d = g then
+    var t:=5;
+    t:=x.a1;
+    else
+    g:=x.a2;
+    end;
+    return g;
+
+end;
+
+struct c1 c2 c3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
+struct f1 f2 d3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro15.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro15.3.svn-base
new file mode 100644 (file)
index 0000000..12ebc35
--- /dev/null
@@ -0,0 +1,23 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 a4 end;
+
+func f(a1,a2)
+  
+  var a3:=1;
+  var a4:=1;
+  a4:=a2.a2;  
+  return a1;
+
+(*esto deberia de dar error t no visible*)
+    if a1 = a3 then
+    a4:=a1.a1;
+    else
+    a4:=a2.a2;
+    end;
+    return a4;
+
+
+end;
+
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro16.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/malandro16.3.svn-base
new file mode 100644 (file)
index 0000000..472dcea
--- /dev/null
@@ -0,0 +1,19 @@
+(*esto  deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  
+    var g:=1;
+    var d:=1;
+    if d = g then
+    var t:=5;
+    d:=x.a1;
+    else
+    t:=x.a2;
+    end;
+    return t;
+
+
+end;
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_a.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_a.0.svn-base
new file mode 100644 (file)
index 0000000..cd57308
--- /dev/null
@@ -0,0 +1,3 @@
+func f()
+  return -2;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_a.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_a.call.svn-base
new file mode 100644 (file)
index 0000000..4b2cd63
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  ( -2==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_b.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_b.0.svn-base
new file mode 100644 (file)
index 0000000..8d81d42
--- /dev/null
@@ -0,0 +1,5 @@
+
+func f()
+  return 1+2+3+4;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_b.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_b.call.svn-base
new file mode 100644 (file)
index 0000000..02205cd
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (10==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_c.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_c.0.svn-base
new file mode 100644 (file)
index 0000000..522ce1b
--- /dev/null
@@ -0,0 +1,5 @@
+
+func f()
+  return 1+(2*3)+4;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_c.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_c.call.svn-base
new file mode 100644 (file)
index 0000000..97f1369
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (11==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_d.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_d.0.svn-base
new file mode 100644 (file)
index 0000000..a67a076
--- /dev/null
@@ -0,0 +1,5 @@
+
+func f()
+  return 1*2*3*4;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_d.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_d.call.svn-base
new file mode 100644 (file)
index 0000000..93a5f48
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (24==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_e.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_e.0.svn-base
new file mode 100644 (file)
index 0000000..76a4e1d
--- /dev/null
@@ -0,0 +1,4 @@
+func f()
+  return (1*((-2)+5))+(-1)+(((-2)+2)*17)+3;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_e.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_e.call.svn-base
new file mode 100644 (file)
index 0000000..5c3992a
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (5==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_f.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_f.0.svn-base
new file mode 100644 (file)
index 0000000..810ee86
--- /dev/null
@@ -0,0 +1,4 @@
+func f(x)
+  return x;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_f.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_f.call.svn-base
new file mode 100644 (file)
index 0000000..c1f6158
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f(long);
+return  (5==f((long)5));
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_g.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_g.0.svn-base
new file mode 100644 (file)
index 0000000..4d66d0a
--- /dev/null
@@ -0,0 +1,4 @@
+func f(x,y)
+  return x+y;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_g.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_g.call.svn-base
new file mode 100644 (file)
index 0000000..602cc85
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f(long, long);
+return  (12==f(5,7));
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_h.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_h.0.svn-base
new file mode 100644 (file)
index 0000000..38bc6a7
--- /dev/null
@@ -0,0 +1,8 @@
+func f(x,y,z)
+  return x+y+1+z+1;
+end;
+
+func g(z)
+  return z+3;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_h.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_h.call.svn-base
new file mode 100644 (file)
index 0000000..6a10bbb
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f(long, long, long);
+extern long g(long);
+return  (15==f(5,7,1) && 7==g(4));
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_i.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_i.3.svn-base
new file mode 100644 (file)
index 0000000..b9dc472
--- /dev/null
@@ -0,0 +1,8 @@
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func g(a1)
+  var x := 5;
+  return x.a1;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_j.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_j.0.svn-base
new file mode 100644 (file)
index 0000000..e01b5e7
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b c end;
+
+func f(s,s)
+  return s.a+s.b;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_j.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_j.call.svn-base
new file mode 100644 (file)
index 0000000..78ed0b0
--- /dev/null
@@ -0,0 +1,5 @@
+struct S {long a1; long a2; long a3;} s={10,20,30};
+struct T {long a1; long a2; long a3;} t={1,2,3};
+extern long f(long*,long*);
+
+return  ( 3==f((long*)&s, (long*)&t));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_k.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_k.0.svn-base
new file mode 100644 (file)
index 0000000..45e0e2a
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b c end;
+
+func f(s,s,s,s,t,s)
+  return s.a+s.b+t.c;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_k.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_k.call.svn-base
new file mode 100644 (file)
index 0000000..a353792
--- /dev/null
@@ -0,0 +1,9 @@
+struct A {long a1; long a2; long a3;} a={10,20,30};
+struct B {long a1; long a2; long a3;} b={10,20,30};
+struct C {long a1; long a2; long a3;} c={10,20,30};
+struct D {long a1; long a2; long a3;} d={10,20,30};
+struct E {long a1; long a2; long a3;} e={10,20,30};
+struct T {long a1; long a2; long a3;} t={1,2,3};
+extern long f(long*,long*,long*,long*,long*,long*);
+
+return  ( 33==f((long*)&a, (long*)&b, (long*)&c, (long*)&d, (long*)&e, (long*)&t));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_l.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_l.0.svn-base
new file mode 100644 (file)
index 0000000..38d9ff1
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b c end;
+
+func f(s)
+  return s.a.a+((-3)*s.b.c)+s.c.b;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_l.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/my_l.call.svn-base
new file mode 100644 (file)
index 0000000..7bdddf9
--- /dev/null
@@ -0,0 +1,7 @@
+struct A {long a1; long a2; long a3;} a={1,2,3};
+struct B {long a1; long a2; long a3;} b={10,20,30};
+struct C {long a1; long a2; long a3;} c={100,200,300};
+struct S {long a1; long a2; long a3;} s={(long*)&a,(long*)&b,(long*)&c};
+extern long f(long*);
+
+return  ( 111==f((long*)&s));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/negterm.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/negterm.0.svn-base
new file mode 100644 (file)
index 0000000..03eda66
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a)
+       return -a;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/negterm.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/negterm.call.svn-base
new file mode 100644 (file)
index 0000000..7726e38
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long);
+return  (-5==test(5));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/negterm1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/negterm1.0.svn-base
new file mode 100644 (file)
index 0000000..03eda66
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a)
+       return -a;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/negterm1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/negterm1.call.svn-base
new file mode 100644 (file)
index 0000000..6af387d
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long);
+return  (5==test(-5));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter1.0.svn-base
new file mode 100644 (file)
index 0000000..98c634a
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b)
+       return a + b;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter1.call.svn-base
new file mode 100644 (file)
index 0000000..9b5ae8f
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long);
+return  ( 34==test(29,5));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter2.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter2.0.svn-base
new file mode 100644 (file)
index 0000000..adb30ea
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b, c, d, e, f)
+       return a + b + c + d + e + f;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter2.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter2.call.svn-base
new file mode 100644 (file)
index 0000000..d9f04fd
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long,long,long,long,long);
+return  ( 21==test(1,2,3,4,5,6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter3.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter3.0.svn-base
new file mode 100644 (file)
index 0000000..35bfa51
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2,s3,s4,s5,s6)
+  return s1.a1 + s2.a2 + s3.a3 + s4.a1 + s5.a2 + s6.a3 ;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter3.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter3.call.svn-base
new file mode 100644 (file)
index 0000000..7609412
--- /dev/null
@@ -0,0 +1,12 @@
+
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+S_t s3 ={70,80,90};
+S_t s4 ={100,110,120};
+S_t s5 ={130,140,150};
+S_t s6 ={160,170,180};
+
+extern long test(long*,long*, long*, long*, long*, long*);
+
+return  ( (10+50+90+100+140+180)==test((long*)&s1,(long*)&s2,(long*)&s3,(long*)&s4,(long*)&s5,(long*)&s6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter4.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter4.0.svn-base
new file mode 100644 (file)
index 0000000..e611e82
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2,s3,s4,s5,s6)
+  return s1.a1 * s2.a2 * s3.a3 * s4.a1 * s5.a2 * s6.a3 ;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter4.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter4.call.svn-base
new file mode 100644 (file)
index 0000000..beb0013
--- /dev/null
@@ -0,0 +1,12 @@
+
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+S_t s3 ={70,80,90};
+S_t s4 ={100,110,120};
+S_t s5 ={130,140,150};
+S_t s6 ={160,170,180};
+
+extern long test(long*,long*, long*, long*, long*, long*);
+
+return  ( (10L*50L*90L*100L*140L*180L)==test((long*)&s1,(long*)&s2,(long*)&s3,(long*)&s4,(long*)&s5,(long*)&s6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter5.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter5.0.svn-base
new file mode 100644 (file)
index 0000000..6392d8e
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2)
+  return s1.a1 * s2.a2;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter5.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter5.call.svn-base
new file mode 100644 (file)
index 0000000..b6c8eaa
--- /dev/null
@@ -0,0 +1,7 @@
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+
+extern long test(long*,long*);
+
+return  ( (10*50)==test((long*)&s1,(long*)&s2));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter6.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter6.0.svn-base
new file mode 100644 (file)
index 0000000..6c4e304
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2,s3,s4,s5,s6)
+  return (s1.a1 * s2.a2) + ( s3.a3 * s4.a1) +( s5.a2 * s6.a3 );
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter6.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/parameter6.call.svn-base
new file mode 100644 (file)
index 0000000..300a941
--- /dev/null
@@ -0,0 +1,12 @@
+
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+S_t s3 ={70,80,90};
+S_t s4 ={100,110,120};
+S_t s5 ={130,140,150};
+S_t s6 ={160,170,180};
+
+extern long test(long*,long*, long*, long*, long*, long*);
+
+return  ( ((10L*50L)+(90L*100L)+(140L*180L))==test((long*)&s1,(long*)&s2,(long*)&s3,(long*)&s4,(long*)&s5,(long*)&s6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/regfehler.4.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/regfehler.4.svn-base
new file mode 100644 (file)
index 0000000..ca4f4e9
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b)
+  return (a * b) + (  a * b * ( a + b + ( a * b * ( a + b + ( a * b * (a + b))))));
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/test1.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/test1.3.svn-base
new file mode 100644 (file)
index 0000000..634a79e
--- /dev/null
@@ -0,0 +1,19 @@
+struct f1 f2 end;\r
+\r
+func f(p1)\r
+  var fx:=p1;\r
+  p1:=1;\r
+  (* f1 not defined *)\r
+  f1:=4;\r
+  (* shoult throw one of\r
+     - f1 not defined\r
+     - field access not allowed (var fx exists)\r
+     - field fx not defined\r
+  *)\r
+  f1.fx:=p1;\r
+  p1.f1:=p1.f2;\r
+  f(p1,p1.f2).f3:=0AFFEH;\r
+  var f1:=3;\r
+end;\r
+\r
+struct f3 end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/test2.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/test2.3.svn-base
new file mode 100644 (file)
index 0000000..eb9e51b
--- /dev/null
@@ -0,0 +1,10 @@
+func test()\r
+  var v1:=1;\r
+  if 1=1 then\r
+    v1:=2;\r
+    var v2:=1;\r
+  end;\r
+\r
+  (* v2 not visible *)\r
+  v2:=3;\r
+end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/test3.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/test3.3.svn-base
new file mode 100644 (file)
index 0000000..5a54492
--- /dev/null
@@ -0,0 +1,6 @@
+struct f end;\r
+\r
+func x()\r
+  (* f is a field, not a variable *)\r
+  f := 4;\r
+end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/test4.2.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/test4.2.svn-base
new file mode 100644 (file)
index 0000000..9c5de0d
--- /dev/null
@@ -0,0 +1,8 @@
+\r
+func x()\r
+  var z:=3;\r
+  (* field feld not defined *)\r
+  z.feld:=x(4,5,a);\r
+  (* syntax error *)\r
+  return z+z*z;\r
+end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/testscriptx03.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/testscriptx03.3.svn-base
new file mode 100644 (file)
index 0000000..dde46ed
--- /dev/null
@@ -0,0 +1,19 @@
+func g(x,y,z)
+  var res:=0;
+  res:=x;
+  while y>=0 or (not x=z) do
+    y:=y+(-1);
+    res:=res+z;
+  end;
+  return res;
+end;
+
+struct end;
+
+func f()
+  var off:=10 + (xx * 3);
+  var bound:= -test.c5;
+  var add:= g(test.c5) + 2;
+  return g(off,bound,add);
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefemax.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefemax.0.svn-base
new file mode 100644 (file)
index 0000000..4e9bb50
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b)
+  return (a * b) + (  a * b * ( a + b + ( a * b * ( a + b + ( a * b)))));
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefemax.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefemax.call.svn-base
new file mode 100644 (file)
index 0000000..b5d6800
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test(long,long);
+return ((3 * 8) + (3 * 8 * ( 3 + 8 + ( 3 * 8 * ( 3 + 8 + ( 3 * 8 ))))) == test(3,8)) ;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefen.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefen.0.svn-base
new file mode 100644 (file)
index 0000000..133e82b
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b,c,d,e,f)
+  return (a * b) + ( c * d) + (e  * f );
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefen.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefen.call.svn-base
new file mode 100644 (file)
index 0000000..d2b3f14
--- /dev/null
@@ -0,0 +1,4 @@
+
+extern long test(long,long, long, long, long, long);
+
+return  ( ( 1 * 2 ) + (3 * 4) + ( 5 * 6 ) == test(1,2,3,4,5,6)) ;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefen1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefen1.0.svn-base
new file mode 100644 (file)
index 0000000..2b56241
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b)
+  return (a * b) + (  a * b * ( a + b + ( a * b)));
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefen1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/.svn/text-base/tiefen1.call.svn-base
new file mode 100644 (file)
index 0000000..62fba13
--- /dev/null
@@ -0,0 +1,4 @@
+
+extern long test(long,long);
+
+return  ( ( 3 * 5 ) + ( 3 *  5 * (3 + 5 + ( 3 * 5))) == test(3,5)) ;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_b.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_b.3
new file mode 100644 (file)
index 0000000..aa221b6
--- /dev/null
@@ -0,0 +1,6 @@
+func f()
+       var a := 1;
+       var b := 2;
+
+       c := 5;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_e.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_e.3
new file mode 100644 (file)
index 0000000..130f8db
--- /dev/null
@@ -0,0 +1,9 @@
+func f(x,y)
+       var a := 1;
+       var b := 2;
+       if a = b then
+               a := 3;
+               x := z;
+       end;
+       b := x;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_g.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_g.3
new file mode 100644 (file)
index 0000000..e9786b8
--- /dev/null
@@ -0,0 +1,9 @@
+struct a b a end;
+
+func f()
+  var off:=10;
+  var bound:=5;
+  var add:=2;
+  return g(off,bound,add); 
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_h.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_h.3
new file mode 100644 (file)
index 0000000..c27e6fb
--- /dev/null
@@ -0,0 +1,5 @@
+func f()
+  off := 7;
+  var off:=5;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_i.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_i.3
new file mode 100644 (file)
index 0000000..205e1ab
--- /dev/null
@@ -0,0 +1,13 @@
+struct a b end;
+
+func f()
+  var off:=10;
+  var bound:=5;
+  var add:=2;
+  if (1=1) then
+       var x :=17;
+  else
+       return x;
+  end;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_j.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_j.3
new file mode 100644 (file)
index 0000000..3402eaa
--- /dev/null
@@ -0,0 +1,12 @@
+struct a b end;
+
+func f()
+  var off:=10;
+  var bound:=5;
+  var add:=2;
+  if (1=1) then
+       var x :=17;
+  end;
+  return x;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_k.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/ag_k.3
new file mode 100644 (file)
index 0000000..56757a8
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b end;
+
+func f()
+       var s := 2;
+       s.c := 17;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebra.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebra.0
new file mode 100644 (file)
index 0000000..0e42821
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b)
+       return a + 2 + ( 3 * b);
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebra.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebra.call
new file mode 100644 (file)
index 0000000..32ab0ce
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long);
+return  ( 2 + 2 + (3 * 4)==test(2,4));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebra1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebra1.0
new file mode 100644 (file)
index 0000000..0825f1b
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b)
+       return a + b + ( a * b);
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebra1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebra1.call
new file mode 100644 (file)
index 0000000..8ed0c06
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long);
+return  ( 2 + 4 + (2 * 4)==test(2,4));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran1.0
new file mode 100644 (file)
index 0000000..a9391c8
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 + 2;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran1.call
new file mode 100644 (file)
index 0000000..c9261fc
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 3==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran2.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran2.0
new file mode 100644 (file)
index 0000000..4eb74e9
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 * 2;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran2.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran2.call
new file mode 100644 (file)
index 0000000..c537d9b
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 2==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran3.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran3.0
new file mode 100644 (file)
index 0000000..78ff632
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 * 2 * ( 3 + 4 );
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran3.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran3.call
new file mode 100644 (file)
index 0000000..b0dc2a6
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 14==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran4.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran4.0
new file mode 100644 (file)
index 0000000..22c8cca
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 * 2 * ( 3 + 4 ) * ( 1 + 2 + 3 + ( 2 * 4 ));
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran4.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/algebran4.call
new file mode 100644 (file)
index 0000000..daca892
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 196==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f1.0
new file mode 100644 (file)
index 0000000..4851858
--- /dev/null
@@ -0,0 +1 @@
+func f1(a) if a=0 then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f1.call
new file mode 100644 (file)
index 0000000..a671bc9
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f1(long a);
+
+return f1(0)==0 && f1(1)==1 && f1(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f10.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f10.0
new file mode 100644 (file)
index 0000000..eb43918
--- /dev/null
@@ -0,0 +1 @@
+func f10(a) if (not (not (not (a=0)))) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f10.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f10.call
new file mode 100644 (file)
index 0000000..368d3b6
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f10(long a);
+
+return f10(0)==1 && f10(1)==0 && f10(2)==0;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f2.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f2.0
new file mode 100644 (file)
index 0000000..d5d4e9d
--- /dev/null
@@ -0,0 +1 @@
+func f2(a) if a=0 or a=1 then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f2.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f2.call
new file mode 100644 (file)
index 0000000..84dd655
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f2(long a);
+
+return f2(0)==0 && f2(1)==0 && f2(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f3.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f3.0
new file mode 100644 (file)
index 0000000..f555661
--- /dev/null
@@ -0,0 +1 @@
+func f3(a) if not (a=0) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f3.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f3.call
new file mode 100644 (file)
index 0000000..2c41e97
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f3(long a);
+
+return f3(0)==1 && f3(1)==0 && f3(2)==0;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f4.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f4.0
new file mode 100644 (file)
index 0000000..f938299
--- /dev/null
@@ -0,0 +1 @@
+func f4(a) if (a=0) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f4.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f4.call
new file mode 100644 (file)
index 0000000..4e50571
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f4(long a);
+
+return f4(0)==0 && f4(1)==1 && f4(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f5.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f5.0
new file mode 100644 (file)
index 0000000..f955fa4
--- /dev/null
@@ -0,0 +1 @@
+func f5(a) if (a=0 or a=1) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f5.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f5.call
new file mode 100644 (file)
index 0000000..57b065c
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f5(long a);
+
+return f5(0)==0 && f5(1)==0 && f5(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f6.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f6.0
new file mode 100644 (file)
index 0000000..1509257
--- /dev/null
@@ -0,0 +1 @@
+func f6(a) if (not (a=0)) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f6.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f6.call
new file mode 100644 (file)
index 0000000..00f1f0c
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f6(long a);
+
+return f6(0)==1 && f6(1)==0 && f6(2)==0;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f7.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f7.0
new file mode 100644 (file)
index 0000000..9e82cf8
--- /dev/null
@@ -0,0 +1 @@
+func f7(a) if not (not (a=0)) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f7.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f7.call
new file mode 100644 (file)
index 0000000..7e32c70
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f7(long a);
+
+return f7(0)==0 && f7(1)==1 && f7(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f8.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f8.0
new file mode 100644 (file)
index 0000000..0e098b2
--- /dev/null
@@ -0,0 +1 @@
+func f8(a) if not (not (a=0 or a=1)) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f8.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f8.call
new file mode 100644 (file)
index 0000000..32ef9f5
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f8(long a);
+
+return f8(0)==0 && f8(1)==0 && f8(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f9.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f9.0
new file mode 100644 (file)
index 0000000..8d582d5
--- /dev/null
@@ -0,0 +1 @@
+func f9(a) if not ((not (a=0)) or (not (a=1))) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f9.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/f9.call
new file mode 100644 (file)
index 0000000..6cd0459
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f9(long a);
+
+return f9(0)==1 && f9(1)==1 && f9(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/fib.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/fib.0
new file mode 100644 (file)
index 0000000..1e1c7c4
--- /dev/null
@@ -0,0 +1,17 @@
+func fib(n)
+  if 1 >= n then return n; end;
+  var fib_n := 1; (* fib(n) *)
+  var fib_n1 := 0; (* fib(n-1) *)
+  var r := 0;
+
+  while n >= 2 do
+    (* calculate fib(n+1) *)
+    r := fib_n + fib_n1;
+    (* update fib(n-1) and fib(n) *)
+    fib_n1 := fib_n;
+    fib_n := r;
+    n := n + (-1);
+  end;
+  return r;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/fib.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/fib.call
new file mode 100644 (file)
index 0000000..3ab7260
--- /dev/null
@@ -0,0 +1,4 @@
+unsigned long fib(unsigned long n);
+
+return fib(7)+fib(8)==fib(9);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_04.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_04.3
new file mode 100644 (file)
index 0000000..4ff470c
--- /dev/null
@@ -0,0 +1,2 @@
+(* a2 wird 2 mal definiert *)
+struct a1 a2 a2 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_05.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_05.3
new file mode 100644 (file)
index 0000000..ee0fef4
--- /dev/null
@@ -0,0 +1,3 @@
+(* a2 wird 2 mal definiert *)
+struct a1 a2 a3 end;
+struct a4 a5 a2 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_06.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_06.3
new file mode 100644 (file)
index 0000000..4c7d201
--- /dev/null
@@ -0,0 +1,4 @@
+func bla()
+abs.a1 := 100;
+ert.a1 := 200;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_07.2 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_07.2
new file mode 100644 (file)
index 0000000..ea4c6dc
--- /dev/null
@@ -0,0 +1 @@
+123.a1
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_08.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forum_08.3
new file mode 100644 (file)
index 0000000..e1af2b8
--- /dev/null
@@ -0,0 +1,9 @@
+func f(x, y)
+       if x = y then
+               var a := y;
+               a := x;
+       end;
+
+       (* zugriff auf a nicht mehr erlaubt *)
+       a := x;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_04.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_04.3
new file mode 100644 (file)
index 0000000..0ace8af
--- /dev/null
@@ -0,0 +1,5 @@
+(* a2 wird 2 mal definiert *)
+struct end;
+struct a1 a2 a2 end;
+struct end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_05.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_05.3
new file mode 100644 (file)
index 0000000..96ba1fc
--- /dev/null
@@ -0,0 +1,5 @@
+(* a2 wird 2 mal definiert *)
+struct end;
+struct a1 a2 a3 end;
+struct a4 a5 a2 end;
+struct end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_06.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_06.3
new file mode 100644 (file)
index 0000000..4c7d201
--- /dev/null
@@ -0,0 +1,4 @@
+func bla()
+abs.a1 := 100;
+ert.a1 := 200;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_07.2 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_07.2
new file mode 100644 (file)
index 0000000..ea4c6dc
--- /dev/null
@@ -0,0 +1 @@
+123.a1
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_08.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/forumx_08.3
new file mode 100644 (file)
index 0000000..518e626
--- /dev/null
@@ -0,0 +1,11 @@
+func f(x, y)
+       if x = y then
+               var a := y;
+               a.t := x;
+       end;
+
+       (* zugriff auf a nicht mehr erlaubt *)
+       (* a := x; *)
+end;
+
+struct b end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g1.0
new file mode 100644 (file)
index 0000000..3e1aa7b
--- /dev/null
@@ -0,0 +1 @@
+func g1(a,b) if (a=0 or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g1.call
new file mode 100644 (file)
index 0000000..4a51316
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g1(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g1[2][2]={{1,1},{1,0}};
+
+return check_arg2(g1,ret_g1);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g10.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g10.0
new file mode 100644 (file)
index 0000000..c36451f
--- /dev/null
@@ -0,0 +1 @@
+func g10(a,b) if not (not ((not (a=0)) or b=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g10.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g10.call
new file mode 100644 (file)
index 0000000..4e23018
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g10(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g10[2][2]={{1,0},{1,1}};
+
+return check_arg2(g10,ret_g10);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g11.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g11.0
new file mode 100644 (file)
index 0000000..e9126ea
--- /dev/null
@@ -0,0 +1 @@
+func g11(a,b) if not (not (a=0 or (not (b=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g11.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g11.call
new file mode 100644 (file)
index 0000000..92174ff
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g11(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g11[2][2]={{1,1},{0,1}};
+
+return check_arg2(g11,ret_g11);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g12.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g12.0
new file mode 100644 (file)
index 0000000..86e62c6
--- /dev/null
@@ -0,0 +1 @@
+func g12(a,b) if not (not ((not (a=0)) or (not (b=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g12.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g12.call
new file mode 100644 (file)
index 0000000..bb34e88
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g12(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g12[2][2]={{0,1},{1,1}};
+
+return check_arg2(g12,ret_g12);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g2.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g2.0
new file mode 100644 (file)
index 0000000..5751378
--- /dev/null
@@ -0,0 +1 @@
+func g2(a,b) if ((not (a=0)) or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g2.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g2.call
new file mode 100644 (file)
index 0000000..186e1ef
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g2(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g2[2][2]={{1,0},{1,1}};
+
+return check_arg2(g2,ret_g2);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g3.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g3.0
new file mode 100644 (file)
index 0000000..39f38e6
--- /dev/null
@@ -0,0 +1 @@
+func g3(a,b) if (a=0 or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g3.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g3.call
new file mode 100644 (file)
index 0000000..42b0114
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g3(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g3[2][2]={{1,1},{0,1}};
+
+return check_arg2(g3,ret_g3);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g4.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g4.0
new file mode 100644 (file)
index 0000000..1903693
--- /dev/null
@@ -0,0 +1 @@
+func g4(a,b) if ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g4.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g4.call
new file mode 100644 (file)
index 0000000..d8abf9d
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g4(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g4[2][2]={{0,1},{1,1}};
+
+return check_arg2(g4,ret_g4);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g5.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g5.0
new file mode 100644 (file)
index 0000000..1848063
--- /dev/null
@@ -0,0 +1 @@
+func g5(a,b) if not (a=0 or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g5.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g5.call
new file mode 100644 (file)
index 0000000..c0d02bd
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g5(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g5[2][2]={{0,0},{0,1}};
+
+return check_arg2(g5,ret_g5);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g6.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g6.0
new file mode 100644 (file)
index 0000000..19a197b
--- /dev/null
@@ -0,0 +1 @@
+func g6(a,b) if not ((not (a=0)) or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g6.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g6.call
new file mode 100644 (file)
index 0000000..0a0dae8
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g6(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g6[2][2]={{0,1},{0,0}};
+
+return check_arg2(g6,ret_g6);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g7.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g7.0
new file mode 100644 (file)
index 0000000..f926ddc
--- /dev/null
@@ -0,0 +1 @@
+func g7(a,b) if not (a=0 or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g7.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g7.call
new file mode 100644 (file)
index 0000000..f7a2e29
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g7(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g7[2][2]={{0,0},{1,0}};
+
+return check_arg2(g7,ret_g7);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g8.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g8.0
new file mode 100644 (file)
index 0000000..0265f42
--- /dev/null
@@ -0,0 +1 @@
+func g8(a,b) if not ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g8.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g8.call
new file mode 100644 (file)
index 0000000..c580630
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g8(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g8[2][2]={{1,0},{0,0}};
+
+return check_arg2(g8,ret_g8);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g9.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g9.0
new file mode 100644 (file)
index 0000000..29290d1
--- /dev/null
@@ -0,0 +1 @@
+func g9(a,b) if not (not (a=0 or b=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g9.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/g9.call
new file mode 100644 (file)
index 0000000..5f4ca1d
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g9(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g9[2][2]={{1,1},{1,0}};
+
+return check_arg2(g9,ret_g9);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h1.0
new file mode 100644 (file)
index 0000000..daa0824
--- /dev/null
@@ -0,0 +1 @@
+func h1(a,b,c,d) if (a=0 or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h1.call
new file mode 100644 (file)
index 0000000..4c7b92e
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h1(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h1[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+
+return check_arg4(h1,ret_h1);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h10.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h10.0
new file mode 100644 (file)
index 0000000..309c891
--- /dev/null
@@ -0,0 +1 @@
+func h10(a,b,c,d) if not (((not (a=0)) or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h10.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h10.call
new file mode 100644 (file)
index 0000000..3c4b8be
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h10(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h10[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,1}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+return check_arg4(h10,ret_h10);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h11.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h11.0
new file mode 100644 (file)
index 0000000..428ed7b
--- /dev/null
@@ -0,0 +1 @@
+func h11(a,b,c,d) if not ((a=0 or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h11.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h11.call
new file mode 100644 (file)
index 0000000..4ef296d
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h11(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h11[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,1}},{{0,0},{0,0}}}};
+
+return check_arg4(h11,ret_h11);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h12.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h12.0
new file mode 100644 (file)
index 0000000..b76853b
--- /dev/null
@@ -0,0 +1 @@
+func h12(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h12.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h12.call
new file mode 100644 (file)
index 0000000..72c4540
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h12(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h12[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,1},{0,0}}}};
+
+return check_arg4(h12,ret_h12);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h13.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h13.0
new file mode 100644 (file)
index 0000000..78a4d46
--- /dev/null
@@ -0,0 +1 @@
+func h13(a,b,c,d) if not ((a=0 or b=0) or (c=0 or (not (d=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h13.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h13.call
new file mode 100644 (file)
index 0000000..050e5d9
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h13(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h13[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{1,0}}}};
+
+return check_arg4(h13,ret_h13);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h14.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h14.0
new file mode 100644 (file)
index 0000000..010e6ea
--- /dev/null
@@ -0,0 +1 @@
+func h14(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h14.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h14.call
new file mode 100644 (file)
index 0000000..c050ddf
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h14(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h14[2][2][2][2]={{{{0,0},{0,1}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+return check_arg4(h14,ret_h14);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h15.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h15.0
new file mode 100644 (file)
index 0000000..6fc3e63
--- /dev/null
@@ -0,0 +1 @@
+func h15(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h15.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h15.call
new file mode 100644 (file)
index 0000000..b85a6b4
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h15(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h15[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{1,0},{0,0}}}};
+
+return check_arg4(h15,ret_h15);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h16.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h16.0
new file mode 100644 (file)
index 0000000..a286b04
--- /dev/null
@@ -0,0 +1 @@
+func h16(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h16.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h16.call
new file mode 100644 (file)
index 0000000..e42a601
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h16(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h16[2][2][2][2]={{{{1,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+return check_arg4(h16,ret_h16);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h17.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h17.0
new file mode 100644 (file)
index 0000000..7c19502
--- /dev/null
@@ -0,0 +1 @@
+func h17(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h17.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h17.call
new file mode 100644 (file)
index 0000000..ca17563
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h17(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h17[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+
+return check_arg4(h17,ret_h17);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h18.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h18.0
new file mode 100644 (file)
index 0000000..399f8f1
--- /dev/null
@@ -0,0 +1 @@
+func h18(a,b,c,d) if not (not (((not (a=0)) or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h18.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h18.call
new file mode 100644 (file)
index 0000000..70a5084
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h18(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h18[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h18,ret_h18);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h19.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h19.0
new file mode 100644 (file)
index 0000000..983d956
--- /dev/null
@@ -0,0 +1 @@
+func h19(a,b,c,d) if not (not ((a=0 or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h19.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h19.call
new file mode 100644 (file)
index 0000000..476667c
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h19(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h19[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+
+return check_arg4(h19,ret_h19);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h2.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h2.0
new file mode 100644 (file)
index 0000000..640c05c
--- /dev/null
@@ -0,0 +1 @@
+func h2(a,b,c,d) if ((not (a=0)) or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h2.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h2.call
new file mode 100644 (file)
index 0000000..d3795d0
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h2(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h2[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h2,ret_h2);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h20.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h20.0
new file mode 100644 (file)
index 0000000..a04974b
--- /dev/null
@@ -0,0 +1 @@
+func h20(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h20.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h20.call
new file mode 100644 (file)
index 0000000..6232c65
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h20(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h20[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+
+return check_arg4(h20,ret_h20);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h21.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h21.0
new file mode 100644 (file)
index 0000000..ce11b58
--- /dev/null
@@ -0,0 +1 @@
+func h21(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or (not (d=0))))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h21.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h21.call
new file mode 100644 (file)
index 0000000..30f2d4e
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h21(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h21[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+return check_arg4(h21,ret_h21);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h22.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h22.0
new file mode 100644 (file)
index 0000000..2bd2f23
--- /dev/null
@@ -0,0 +1 @@
+func h22(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h22.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h22.call
new file mode 100644 (file)
index 0000000..36ce291
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h22(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h22[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h22,ret_h22);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h23.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h23.0
new file mode 100644 (file)
index 0000000..6bfbf0f
--- /dev/null
@@ -0,0 +1 @@
+func h23(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h23.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h23.call
new file mode 100644 (file)
index 0000000..8344b04
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h23(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h23[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+
+return check_arg4(h23,ret_h23);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h24.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h24.0
new file mode 100644 (file)
index 0000000..957d280
--- /dev/null
@@ -0,0 +1 @@
+func h24(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h24.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h24.call
new file mode 100644 (file)
index 0000000..129ee96
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h24(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h24[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h24,ret_h24);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h3.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h3.0
new file mode 100644 (file)
index 0000000..2e3edd0
--- /dev/null
@@ -0,0 +1 @@
+func h3(a,b,c,d) if (a=0 or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h3.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h3.call
new file mode 100644 (file)
index 0000000..5267fa0
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h3(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h3[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+
+return check_arg4(h3,ret_h3);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h4.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h4.0
new file mode 100644 (file)
index 0000000..b157f3f
--- /dev/null
@@ -0,0 +1 @@
+func h4(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h4.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h4.call
new file mode 100644 (file)
index 0000000..84a49ba
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h4(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h4[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+
+return check_arg4(h4,ret_h4);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h5.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h5.0
new file mode 100644 (file)
index 0000000..3df3a8b
--- /dev/null
@@ -0,0 +1 @@
+func h5(a,b,c,d) if (a=0 or b=0) or (c=0 or (not (d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h5.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h5.call
new file mode 100644 (file)
index 0000000..b2d1b60
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h5(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h5[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+return check_arg4(h5,ret_h5);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h6.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h6.0
new file mode 100644 (file)
index 0000000..ab0cffe
--- /dev/null
@@ -0,0 +1 @@
+func h6(a,b,c,d) if ((not (a=0)) or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h6.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h6.call
new file mode 100644 (file)
index 0000000..4b87331
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h6(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h6[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h6,ret_h6);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h7.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h7.0
new file mode 100644 (file)
index 0000000..f1670e4
--- /dev/null
@@ -0,0 +1 @@
+func h7(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h7.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h7.call
new file mode 100644 (file)
index 0000000..f92ed4b
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h7(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h7[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+
+return check_arg4(h7,ret_h7);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h8.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h8.0
new file mode 100644 (file)
index 0000000..341f7d0
--- /dev/null
@@ -0,0 +1 @@
+func h8(a,b,c,d) if ((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h8.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h8.call
new file mode 100644 (file)
index 0000000..147aa92
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h8(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h8[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h8,ret_h8);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h9.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h9.0
new file mode 100644 (file)
index 0000000..ac07344
--- /dev/null
@@ -0,0 +1 @@
+func h9(a,b,c,d) if not ((a=0 or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h9.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/h9.call
new file mode 100644 (file)
index 0000000..6b6b634
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h9(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h9[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,1}}}};
+
+return check_arg4(h9,ret_h9);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/local01.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/local01.3
new file mode 100644 (file)
index 0000000..eeaa4b5
--- /dev/null
@@ -0,0 +1,7 @@
+
+struct a1 a2 a3 end;
+
+(* ein Name darf nur einmal im Programm als Feldname definiert werden:
+ * a2, a3 werden hier nochmals definiert  *)
+struct b1 a2 a3 end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/localx01.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/localx01.3
new file mode 100644 (file)
index 0000000..eeaa4b5
--- /dev/null
@@ -0,0 +1,7 @@
+
+struct a1 a2 a3 end;
+
+(* ein Name darf nur einmal im Programm als Feldname definiert werden:
+ * a2, a3 werden hier nochmals definiert  *)
+struct b1 a2 a3 end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro.3
new file mode 100644 (file)
index 0000000..c68d7f6
--- /dev/null
@@ -0,0 +1,14 @@
+struct a1 a2 a1 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro01.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro01.3
new file mode 100644 (file)
index 0000000..0cbc8e7
--- /dev/null
@@ -0,0 +1,5 @@
+func g(x,y)
+    y:=0;
+  return y+z;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro02.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro02.3
new file mode 100644 (file)
index 0000000..2087a5f
--- /dev/null
@@ -0,0 +1,6 @@
+func g(x,y)
+    y:=0;
+    z:=5;
+  return y;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro03.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro03.3
new file mode 100644 (file)
index 0000000..1ae94f6
--- /dev/null
@@ -0,0 +1,21 @@
+(*no se si esto de verdad deberia de dar erro :) ahora si*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    var e:=5;
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return e;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro04.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro04.3
new file mode 100644 (file)
index 0000000..0263da5
--- /dev/null
@@ -0,0 +1,24 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return a;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro05.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro05.3
new file mode 100644 (file)
index 0000000..c7f99f5
--- /dev/null
@@ -0,0 +1,28 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return a;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+
+
+struct c1 c2  b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro06.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro06.3
new file mode 100644 (file)
index 0000000..369409e
--- /dev/null
@@ -0,0 +1,27 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+ if x = y then
+   return a;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.d2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+
+
+struct c1 c2  b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro07.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro07.3
new file mode 100644 (file)
index 0000000..c2c1d85
--- /dev/null
@@ -0,0 +1,26 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return x;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.c1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+struct c1 c2  b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro09.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro09.3
new file mode 100644 (file)
index 0000000..cd873c9
--- /dev/null
@@ -0,0 +1,27 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return x;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+struct c1 c2  c3 end;
+struct b1 b2 b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro10.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro10.3
new file mode 100644 (file)
index 0000000..aec69c5
--- /dev/null
@@ -0,0 +1,13 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  d:=x.b2;  
+       
+
+  return d;
+end;
+
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro11.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro11.3
new file mode 100644 (file)
index 0000000..bebc86e
--- /dev/null
@@ -0,0 +1,24 @@
+(*esto no deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  d:=x.a2;  
+       
+
+  return d;
+end;
+
+
+struct b1 b2 b3 end;
+
+
+
+
+func f(x,y)
+  var a:=1;
+  a:=x.b2;  
+       
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro12.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro12.3
new file mode 100644 (file)
index 0000000..2881360
--- /dev/null
@@ -0,0 +1,55 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  
+  var c:=1;
+  d:=x.a2;  
+  return d;
+
+(*esto deberia de dar erro g no esta definida*)
+    var d:=1;
+    if d = g then
+    d:=x.a1;
+    else
+    d:=x.a2;
+    end;
+    return d;
+
+
+end;
+
+
+struct b1 b2 b3 end;
+
+(*un comentario*)
+
+
+func f(x,y)
+  var a:=1;
+  a:=x.f1;  
+       
+  return a;
+end;
+
+struct c1 c2 c3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
+struct f1 f2 d3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro13.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro13.3
new file mode 100644 (file)
index 0000000..fbe767d
--- /dev/null
@@ -0,0 +1,56 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  
+  var c:=1;
+  d:=x.a2;  
+  return d;
+
+(*esto deberia de dar error t no visible*)
+    var d:=1;
+    if d = g then
+    var t:=5;
+    t:=x.a1;
+    else
+    d:=x.a2;
+    end;
+    return t;
+
+
+end;
+
+
+struct b1 b2 b3 end;
+
+(*un comentario*)
+
+
+func f(x,y)
+  var a:=1;
+  a:=x.f1;  
+       
+  return a;
+end;
+
+struct c1 c2 c3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
+struct f1 f2 d3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro14.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro14.3
new file mode 100644 (file)
index 0000000..e066ffd
--- /dev/null
@@ -0,0 +1,62 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  
+  var c:=1;
+  d:=x.a2;  
+  return d;
+
+(*esto deberia de dar error t no visible*)
+    var d:=1;
+    if d = g then
+    var t:=5;
+    t:=x.a1;
+    else
+    d:=x.a2;
+    end;
+    return t;
+
+
+end;
+
+
+struct b1 b2 b3 end;
+
+(*un comentario*)
+
+
+func f(x,y)
+
+    var g:=8;
+    if d = g then
+    var t:=5;
+    t:=x.a1;
+    else
+    g:=x.a2;
+    end;
+    return g;
+
+end;
+
+struct c1 c2 c3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
+struct f1 f2 d3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro15.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro15.3
new file mode 100644 (file)
index 0000000..12ebc35
--- /dev/null
@@ -0,0 +1,23 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 a4 end;
+
+func f(a1,a2)
+  
+  var a3:=1;
+  var a4:=1;
+  a4:=a2.a2;  
+  return a1;
+
+(*esto deberia de dar error t no visible*)
+    if a1 = a3 then
+    a4:=a1.a1;
+    else
+    a4:=a2.a2;
+    end;
+    return a4;
+
+
+end;
+
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro16.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/malandro16.3
new file mode 100644 (file)
index 0000000..472dcea
--- /dev/null
@@ -0,0 +1,19 @@
+(*esto  deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  
+    var g:=1;
+    var d:=1;
+    if d = g then
+    var t:=5;
+    d:=x.a1;
+    else
+    t:=x.a2;
+    end;
+    return t;
+
+
+end;
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_a.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_a.0
new file mode 100644 (file)
index 0000000..cd57308
--- /dev/null
@@ -0,0 +1,3 @@
+func f()
+  return -2;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_a.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_a.call
new file mode 100644 (file)
index 0000000..4b2cd63
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  ( -2==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_b.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_b.0
new file mode 100644 (file)
index 0000000..8d81d42
--- /dev/null
@@ -0,0 +1,5 @@
+
+func f()
+  return 1+2+3+4;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_b.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_b.call
new file mode 100644 (file)
index 0000000..02205cd
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (10==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_c.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_c.0
new file mode 100644 (file)
index 0000000..522ce1b
--- /dev/null
@@ -0,0 +1,5 @@
+
+func f()
+  return 1+(2*3)+4;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_c.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_c.call
new file mode 100644 (file)
index 0000000..97f1369
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (11==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_d.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_d.0
new file mode 100644 (file)
index 0000000..a67a076
--- /dev/null
@@ -0,0 +1,5 @@
+
+func f()
+  return 1*2*3*4;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_d.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_d.call
new file mode 100644 (file)
index 0000000..93a5f48
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (24==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_e.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_e.0
new file mode 100644 (file)
index 0000000..76a4e1d
--- /dev/null
@@ -0,0 +1,4 @@
+func f()
+  return (1*((-2)+5))+(-1)+(((-2)+2)*17)+3;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_e.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_e.call
new file mode 100644 (file)
index 0000000..5c3992a
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (5==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_f.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_f.0
new file mode 100644 (file)
index 0000000..810ee86
--- /dev/null
@@ -0,0 +1,4 @@
+func f(x)
+  return x;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_f.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_f.call
new file mode 100644 (file)
index 0000000..c1f6158
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f(long);
+return  (5==f((long)5));
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_g.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_g.0
new file mode 100644 (file)
index 0000000..4d66d0a
--- /dev/null
@@ -0,0 +1,4 @@
+func f(x,y)
+  return x+y;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_g.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_g.call
new file mode 100644 (file)
index 0000000..602cc85
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f(long, long);
+return  (12==f(5,7));
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_h.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_h.0
new file mode 100644 (file)
index 0000000..38bc6a7
--- /dev/null
@@ -0,0 +1,8 @@
+func f(x,y,z)
+  return x+y+1+z+1;
+end;
+
+func g(z)
+  return z+3;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_h.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_h.call
new file mode 100644 (file)
index 0000000..6a10bbb
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f(long, long, long);
+extern long g(long);
+return  (15==f(5,7,1) && 7==g(4));
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_i.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_i.3
new file mode 100644 (file)
index 0000000..b9dc472
--- /dev/null
@@ -0,0 +1,8 @@
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func g(a1)
+  var x := 5;
+  return x.a1;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_j.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_j.0
new file mode 100644 (file)
index 0000000..e01b5e7
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b c end;
+
+func f(s,s)
+  return s.a+s.b;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_j.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_j.call
new file mode 100644 (file)
index 0000000..78ed0b0
--- /dev/null
@@ -0,0 +1,5 @@
+struct S {long a1; long a2; long a3;} s={10,20,30};
+struct T {long a1; long a2; long a3;} t={1,2,3};
+extern long f(long*,long*);
+
+return  ( 3==f((long*)&s, (long*)&t));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_k.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_k.0
new file mode 100644 (file)
index 0000000..45e0e2a
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b c end;
+
+func f(s,s,s,s,t,s)
+  return s.a+s.b+t.c;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_k.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_k.call
new file mode 100644 (file)
index 0000000..a353792
--- /dev/null
@@ -0,0 +1,9 @@
+struct A {long a1; long a2; long a3;} a={10,20,30};
+struct B {long a1; long a2; long a3;} b={10,20,30};
+struct C {long a1; long a2; long a3;} c={10,20,30};
+struct D {long a1; long a2; long a3;} d={10,20,30};
+struct E {long a1; long a2; long a3;} e={10,20,30};
+struct T {long a1; long a2; long a3;} t={1,2,3};
+extern long f(long*,long*,long*,long*,long*,long*);
+
+return  ( 33==f((long*)&a, (long*)&b, (long*)&c, (long*)&d, (long*)&e, (long*)&t));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_l.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_l.0
new file mode 100644 (file)
index 0000000..38d9ff1
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b c end;
+
+func f(s)
+  return s.a.a+((-3)*s.b.c)+s.c.b;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_l.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/my_l.call
new file mode 100644 (file)
index 0000000..7bdddf9
--- /dev/null
@@ -0,0 +1,7 @@
+struct A {long a1; long a2; long a3;} a={1,2,3};
+struct B {long a1; long a2; long a3;} b={10,20,30};
+struct C {long a1; long a2; long a3;} c={100,200,300};
+struct S {long a1; long a2; long a3;} s={(long*)&a,(long*)&b,(long*)&c};
+extern long f(long*);
+
+return  ( 111==f((long*)&s));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/negterm.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/negterm.0
new file mode 100644 (file)
index 0000000..03eda66
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a)
+       return -a;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/negterm.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/negterm.call
new file mode 100644 (file)
index 0000000..7726e38
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long);
+return  (-5==test(5));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/negterm1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/negterm1.0
new file mode 100644 (file)
index 0000000..03eda66
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a)
+       return -a;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/negterm1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/negterm1.call
new file mode 100644 (file)
index 0000000..6af387d
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long);
+return  (5==test(-5));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter1.0
new file mode 100644 (file)
index 0000000..98c634a
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b)
+       return a + b;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter1.call
new file mode 100644 (file)
index 0000000..9b5ae8f
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long);
+return  ( 34==test(29,5));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter2.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter2.0
new file mode 100644 (file)
index 0000000..adb30ea
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b, c, d, e, f)
+       return a + b + c + d + e + f;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter2.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter2.call
new file mode 100644 (file)
index 0000000..d9f04fd
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long,long,long,long,long);
+return  ( 21==test(1,2,3,4,5,6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter3.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter3.0
new file mode 100644 (file)
index 0000000..35bfa51
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2,s3,s4,s5,s6)
+  return s1.a1 + s2.a2 + s3.a3 + s4.a1 + s5.a2 + s6.a3 ;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter3.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter3.call
new file mode 100644 (file)
index 0000000..7609412
--- /dev/null
@@ -0,0 +1,12 @@
+
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+S_t s3 ={70,80,90};
+S_t s4 ={100,110,120};
+S_t s5 ={130,140,150};
+S_t s6 ={160,170,180};
+
+extern long test(long*,long*, long*, long*, long*, long*);
+
+return  ( (10+50+90+100+140+180)==test((long*)&s1,(long*)&s2,(long*)&s3,(long*)&s4,(long*)&s5,(long*)&s6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter4.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter4.0
new file mode 100644 (file)
index 0000000..e611e82
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2,s3,s4,s5,s6)
+  return s1.a1 * s2.a2 * s3.a3 * s4.a1 * s5.a2 * s6.a3 ;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter4.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter4.call
new file mode 100644 (file)
index 0000000..beb0013
--- /dev/null
@@ -0,0 +1,12 @@
+
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+S_t s3 ={70,80,90};
+S_t s4 ={100,110,120};
+S_t s5 ={130,140,150};
+S_t s6 ={160,170,180};
+
+extern long test(long*,long*, long*, long*, long*, long*);
+
+return  ( (10L*50L*90L*100L*140L*180L)==test((long*)&s1,(long*)&s2,(long*)&s3,(long*)&s4,(long*)&s5,(long*)&s6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter5.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter5.0
new file mode 100644 (file)
index 0000000..6392d8e
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2)
+  return s1.a1 * s2.a2;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter5.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter5.call
new file mode 100644 (file)
index 0000000..b6c8eaa
--- /dev/null
@@ -0,0 +1,7 @@
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+
+extern long test(long*,long*);
+
+return  ( (10*50)==test((long*)&s1,(long*)&s2));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter6.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter6.0
new file mode 100644 (file)
index 0000000..6c4e304
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2,s3,s4,s5,s6)
+  return (s1.a1 * s2.a2) + ( s3.a3 * s4.a1) +( s5.a2 * s6.a3 );
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter6.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/parameter6.call
new file mode 100644 (file)
index 0000000..300a941
--- /dev/null
@@ -0,0 +1,12 @@
+
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+S_t s3 ={70,80,90};
+S_t s4 ={100,110,120};
+S_t s5 ={130,140,150};
+S_t s6 ={160,170,180};
+
+extern long test(long*,long*, long*, long*, long*, long*);
+
+return  ( ((10L*50L)+(90L*100L)+(140L*180L))==test((long*)&s1,(long*)&s2,(long*)&s3,(long*)&s4,(long*)&s5,(long*)&s6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/regfehler.4 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/regfehler.4
new file mode 100644 (file)
index 0000000..ca4f4e9
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b)
+  return (a * b) + (  a * b * ( a + b + ( a * b * ( a + b + ( a * b * (a + b))))));
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/test1.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/test1.3
new file mode 100644 (file)
index 0000000..634a79e
--- /dev/null
@@ -0,0 +1,19 @@
+struct f1 f2 end;\r
+\r
+func f(p1)\r
+  var fx:=p1;\r
+  p1:=1;\r
+  (* f1 not defined *)\r
+  f1:=4;\r
+  (* shoult throw one of\r
+     - f1 not defined\r
+     - field access not allowed (var fx exists)\r
+     - field fx not defined\r
+  *)\r
+  f1.fx:=p1;\r
+  p1.f1:=p1.f2;\r
+  f(p1,p1.f2).f3:=0AFFEH;\r
+  var f1:=3;\r
+end;\r
+\r
+struct f3 end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/test2.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/test2.3
new file mode 100644 (file)
index 0000000..eb9e51b
--- /dev/null
@@ -0,0 +1,10 @@
+func test()\r
+  var v1:=1;\r
+  if 1=1 then\r
+    v1:=2;\r
+    var v2:=1;\r
+  end;\r
+\r
+  (* v2 not visible *)\r
+  v2:=3;\r
+end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/test3.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/test3.3
new file mode 100644 (file)
index 0000000..5a54492
--- /dev/null
@@ -0,0 +1,6 @@
+struct f end;\r
+\r
+func x()\r
+  (* f is a field, not a variable *)\r
+  f := 4;\r
+end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/test4.2 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/test4.2
new file mode 100644 (file)
index 0000000..9c5de0d
--- /dev/null
@@ -0,0 +1,8 @@
+\r
+func x()\r
+  var z:=3;\r
+  (* field feld not defined *)\r
+  z.feld:=x(4,5,a);\r
+  (* syntax error *)\r
+  return z+z*z;\r
+end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/testscriptx03.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/testscriptx03.3
new file mode 100644 (file)
index 0000000..dde46ed
--- /dev/null
@@ -0,0 +1,19 @@
+func g(x,y,z)
+  var res:=0;
+  res:=x;
+  while y>=0 or (not x=z) do
+    y:=y+(-1);
+    res:=res+z;
+  end;
+  return res;
+end;
+
+struct end;
+
+func f()
+  var off:=10 + (xx * 3);
+  var bound:= -test.c5;
+  var add:= g(test.c5) + 2;
+  return g(off,bound,add);
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefemax.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefemax.0
new file mode 100644 (file)
index 0000000..4e9bb50
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b)
+  return (a * b) + (  a * b * ( a + b + ( a * b * ( a + b + ( a * b)))));
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefemax.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefemax.call
new file mode 100644 (file)
index 0000000..b5d6800
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test(long,long);
+return ((3 * 8) + (3 * 8 * ( 3 + 8 + ( 3 * 8 * ( 3 + 8 + ( 3 * 8 ))))) == test(3,8)) ;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefen.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefen.0
new file mode 100644 (file)
index 0000000..133e82b
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b,c,d,e,f)
+  return (a * b) + ( c * d) + (e  * f );
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefen.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefen.call
new file mode 100644 (file)
index 0000000..d2b3f14
--- /dev/null
@@ -0,0 +1,4 @@
+
+extern long test(long,long, long, long, long, long);
+
+return  ( ( 1 * 2 ) + (3 * 4) + ( 5 * 6 ) == test(1,2,3,4,5,6)) ;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefen1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefen1.0
new file mode 100644 (file)
index 0000000..2b56241
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b)
+  return (a * b) + (  a * b * ( a + b + ( a * b)));
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefen1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/testcases/tiefen1.call
new file mode 100644 (file)
index 0000000..62fba13
--- /dev/null
@@ -0,0 +1,4 @@
+
+extern long test(long,long);
+
+return  ( ( 3 * 5 ) + ( 3 *  5 * (3 + 5 + ( 3 * 5))) == test(3,5)) ;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/tree.c b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/tree.c
new file mode 100755 (executable)
index 0000000..c3e0a44
--- /dev/null
@@ -0,0 +1,157 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "tree.h"
+#include "code_gen.h"
+
+/* new_node: create "standard node" with one or two children and
+ * given operation
+ */
+treenode *new_node(int op, treenode *left, treenode *right) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+
+#ifdef DEBUG
+       printf("new_node: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=(char *)NULL;
+
+       return new;
+}
+
+/* new_node_value: create "standard node" with one or two children and
+ * given operation and the given value
+ */
+treenode *new_node_value(int op, treenode *left, treenode *right, long value, int param) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+
+#ifdef DEBUG
+       printf("new_node: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=(char *)NULL;
+       new->value=value;
+       new->param_index=param;
+
+       return new;
+}
+
+/* new_leaf: create leaf - node with no children */
+treenode *new_leaf(int op) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_leaf: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=(char *)NULL;
+
+       return new;
+}
+
+/* new_named_leaf: create leaf with name (used for identifier or
+ * value of number)
+ */
+treenode *new_named_leaf(int op, char *name) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_leaf: %i (%s), %s\n",op,rule_names[op],name);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=name;
+
+       return new;
+}
+
+/* new_named_leaf_value: create leaf with name (used for identifier or
+ * value of number)
+ */
+treenode *new_named_leaf_value(int op, char *name, long value, int param) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_leaf_value: %i (%s), %s, %li\n",op,rule_names[op],name,value);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=name;
+       new->value=value;
+       new->param_index=param;
+
+       return new;
+}
+
+/* new_named_node: create node with one or two children and a name (can be
+ * used for storing a procedure's name)
+ */
+treenode *new_named_node(int op, treenode *left, treenode *right, char *name) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_node: %i (%s), %s\n",op,rule_names[op],name);
+#endif
+       
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=name;
+
+       return new;
+}
+
+void write_indent(int indent) {
+       int a;
+       for(a=0;a<indent;a++) {
+               printf("|");
+       }
+}
+
+/* write_tree: display the tree generated by the attributed grammar; this tree willk
+ * be traversed by iburg
+ */
+void write_tree(treenode *node, int indent) {
+       write_indent(indent);
+       printf("%s, %s, %s\n",rule_names[node->op],node->name,node->reg);
+       if(node->kids[0]!=(treenode *)NULL || node->kids[1]!=(treenode *)NULL) {
+               if(node->kids[0]!=(treenode *)NULL) {
+                       write_tree(node->kids[0], indent+1);
+               }
+               if(node->kids[1]!=(treenode *)NULL) {
+                       write_tree(node->kids[1], indent+1);
+               }
+       }
+}
+
+treenode *new_number_leaf(long value) {
+       treenode *node;
+
+        if(value==0) {
+               node=new_leaf(OP_Zero);
+       }
+       else if(value==1) {
+               node=new_leaf(OP_One);
+       }
+       else {
+               node=new_leaf(OP_Number);
+        }
+
+       node->value=value;
+
+       return node;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/tree.h b/aus_sammelwut/paulchen/ublu/ss08/abgabe/codeb/tree.h
new file mode 100755 (executable)
index 0000000..a9f6d1c
--- /dev/null
@@ -0,0 +1,94 @@
+#ifndef __TREE_H_
+#define __TREE_H_
+
+#ifndef CODE
+typedef struct burm_state *STATEPTR_TYPE; 
+#endif
+
+enum {
+       OP_Not=1,
+       OP_Negation,
+       OP_Addition,
+       OP_Multiplication,
+       OP_Disjunction,
+       OP_Greater,
+       OP_Equal,
+       OP_ID,
+       OP_Number,
+       OP_Field,
+       OP_Return,
+       OP_Zero,
+       OP_One,
+       OP_Exprs,
+       OP_Call,
+       OP_Assign,
+       OP_If,
+       OP_Stats,
+       OP_Empty,
+       OP_Ifstats,
+       OP_While
+};
+
+static char rule_names[100][100]={
+       "",
+        "OP_Not",
+        "OP_Negation",
+        "OP_Addition",
+        "OP_Multiplication",
+        "OP_Disjunction",
+        "OP_Greater",
+        "OP_Equal",
+        "OP_ID",
+        "OP_Number",
+        "OP_Field",
+       "OP_Return",
+       "OP_Zero",
+       "OP_One",
+       "OP_Exprs",
+       "OP_Call",
+       "OP_Assign",
+       "OP_If",
+       "OP_Stats",
+       "OP_Empty",
+       "OP_Ifstats",
+       "OP_While"
+};
+         
+
+/* struct for the tree build by ox for iburg */
+typedef struct treenode {
+       int op;
+       struct treenode *kids[2];
+       STATEPTR_TYPE label;
+       char *name;
+       long value;
+       char *reg;
+       struct treenode *parent;
+       int skip_reg;
+       int param_index; /* -1 if not a parameter */
+} treenode;
+
+typedef treenode *treenodep;
+
+/* macros for iburg being able to traverse the tree */
+#define NODEPTR_TYPE           treenodep
+#define OP_LABEL(p)            ((p)->op)
+#define LEFT_CHILD(p)          ((p)->kids[0])
+#define RIGHT_CHILD(p)         ((p)->kids[1])
+#define STATE_LABEL(p)         ((p)->label)
+#define PANIC                  printf
+
+/* see tree.c for description about these procedures */
+treenode *new_node(int op, treenode *left, treenode *right);
+treenode *new_node_value(int op, treenode *left, treenode *right, long value, int param);
+treenode *new_leaf(int op);
+treenode *new_number_leaf(long value);
+treenode *new_named_leaf(int op, char *name);
+treenode *new_named_leaf_value(int op, char *name, long value, int param);
+treenode *new_named_node(int op, treenode *left, treenode *right, char *name);
+
+void write_indent(int indent);
+void write_tree(treenode *node, int indent);
+
+#endif /* __TREE_H */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/all-wcprops b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/all-wcprops
new file mode 100644 (file)
index 0000000..db7c255
--- /dev/null
@@ -0,0 +1,77 @@
+K 25
+svn:wc:ra_dav:version-url
+V 39
+/svn/private/!svn/ver/774/ublu08/gesamt
+END
+scanner.lex
+K 25
+svn:wc:ra_dav:version-url
+V 51
+/svn/private/!svn/ver/774/ublu08/gesamt/scanner.lex
+END
+test.c
+K 25
+svn:wc:ra_dav:version-url
+V 46
+/svn/private/!svn/ver/774/ublu08/gesamt/test.c
+END
+tree.c
+K 25
+svn:wc:ra_dav:version-url
+V 47
+/svn/private/!svn/ver/1023/ublu08/gesamt/tree.c
+END
+symbol_table.h
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1023/ublu08/gesamt/symbol_table.h
+END
+parser.y
+K 25
+svn:wc:ra_dav:version-url
+V 49
+/svn/private/!svn/ver/1209/ublu08/gesamt/parser.y
+END
+code_gen.c
+K 25
+svn:wc:ra_dav:version-url
+V 51
+/svn/private/!svn/ver/1209/ublu08/gesamt/code_gen.c
+END
+code.bfe
+K 25
+svn:wc:ra_dav:version-url
+V 49
+/svn/private/!svn/ver/1209/ublu08/gesamt/code.bfe
+END
+tree.h
+K 25
+svn:wc:ra_dav:version-url
+V 47
+/svn/private/!svn/ver/1023/ublu08/gesamt/tree.h
+END
+code_gen.h
+K 25
+svn:wc:ra_dav:version-url
+V 51
+/svn/private/!svn/ver/1209/ublu08/gesamt/code_gen.h
+END
+Makefile
+K 25
+svn:wc:ra_dav:version-url
+V 49
+/svn/private/!svn/ver/1039/ublu08/gesamt/Makefile
+END
+symbol_table.c
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1203/ublu08/gesamt/symbol_table.c
+END
+test.input
+K 25
+svn:wc:ra_dav:version-url
+V 50
+/svn/private/!svn/ver/774/ublu08/gesamt/test.input
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/entries b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/entries
new file mode 100644 (file)
index 0000000..91aa273
--- /dev/null
@@ -0,0 +1,192 @@
+8
+
+dir
+774
+http://localhost/svn/private/ublu08/gesamt
+http://localhost/svn/private
+
+
+
+2008-04-12T18:48:48.845570Z
+774
+paulchen
+
+
+svn:special svn:externals svn:needs-lock
+\f
+scanner.lex
+file
+
+
+
+
+2008-06-14T15:59:25.000000Z
+e5193bdf0f2e3175afb5173efc7ac4ec
+2008-04-12T18:48:48.845570Z
+774
+paulchen
+\f
+tree.c
+file
+1023
+
+
+
+2008-06-14T15:59:25.000000Z
+ef665922d0ae02b671453df7d0864e46
+2008-05-17T18:34:11.290176Z
+1023
+paulchen
+has-props
+\f
+test.c
+file
+
+
+
+
+2008-04-12T18:47:12.000000Z
+786bf407e40a331f56122d346a7d9f58
+2008-04-12T18:48:48.845570Z
+774
+paulchen
+\f
+symbol_table.h
+file
+1023
+
+
+
+2008-06-14T15:59:25.000000Z
+a09966463523b8d5b80a106a9f546831
+2008-05-17T18:34:11.290176Z
+1023
+paulchen
+has-props
+\f
+parser.y
+file
+1209
+
+
+
+2008-06-14T15:59:24.000000Z
+3d7898a48f8dd3716587c42f355eec66
+2008-06-14T15:59:36.988491Z
+1209
+paulchen
+\f
+code_gen.c
+file
+1209
+
+
+
+2008-06-14T15:59:24.000000Z
+180200b2225ce36b5c34c4a49c3531f9
+2008-06-14T15:59:36.988491Z
+1209
+paulchen
+\f
+tree.h
+file
+1023
+
+
+
+2008-06-14T15:59:25.000000Z
+c49aaeebea85333816c84c38e382f1a7
+2008-05-17T18:34:11.290176Z
+1023
+paulchen
+has-props
+\f
+code.bfe
+file
+1209
+
+
+
+2008-06-14T15:59:24.000000Z
+a0c3f55d27285d4502f379edc2ceb350
+2008-06-14T15:59:36.988491Z
+1209
+paulchen
+has-props
+\f
+code_gen.h
+file
+1209
+
+
+
+2008-06-14T15:59:24.000000Z
+25a38059196df1fe92fe793da90c564c
+2008-06-14T15:59:36.988491Z
+1209
+paulchen
+\f
+svn-commit.tmp
+file
+775
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+deleted
+\f
+symbol_table.c
+file
+1203
+
+
+
+2008-06-14T15:59:25.000000Z
+b453aa450374c10280eb6fa5888bff27
+2008-05-29T18:44:14.114779Z
+1203
+paulchen
+has-props
+\f
+Makefile
+file
+1039
+
+
+
+2008-06-14T15:59:24.000000Z
+30ad7389bf3ba50050f0cc0d63ae702e
+2008-05-19T16:45:22.394235Z
+1039
+paulchen
+\f
+test.input
+file
+
+
+
+
+2008-04-12T18:26:57.000000Z
+50083309858f4c96c0b9c0873e407393
+2008-04-12T18:48:48.845570Z
+774
+paulchen
+\f
+testcases
+dir
+\f
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/format b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/format
new file mode 100644 (file)
index 0000000..45a4fb7
--- /dev/null
@@ -0,0 +1 @@
+8
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/code.bfe.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/code.bfe.svn-base
new file mode 100644 (file)
index 0000000..869ac71
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/symbol_table.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/symbol_table.c.svn-base
new file mode 100644 (file)
index 0000000..869ac71
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/symbol_table.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/symbol_table.h.svn-base
new file mode 100644 (file)
index 0000000..869ac71
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/tree.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/tree.c.svn-base
new file mode 100644 (file)
index 0000000..869ac71
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/tree.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/prop-base/tree.h.svn-base
new file mode 100644 (file)
index 0000000..869ac71
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/Makefile.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/Makefile.svn-base
new file mode 100644 (file)
index 0000000..a3bcbd4
--- /dev/null
@@ -0,0 +1,38 @@
+all: gesamt
+
+scanner.c: oxout.l
+       flex -oscanner.c oxout.l
+
+scanner.o: scanner.c parser.h symbol_table.h
+       gcc -g -c -ansi -pedantic scanner.c -D_GNU_SOURCE
+
+gesamt: scanner.o parser.o symbol_table.o code_gen.o tree.o code.o
+       gcc -o gesamt symbol_table.o scanner.o parser.o code_gen.o tree.o code.o -lfl
+
+tree.o: tree.c tree.h
+       gcc -g -c -ansi -pedantic -Wall tree.c
+
+code_gen.o: code_gen.c code_gen.h
+       gcc -g -c -ansi -pedantic -Wall code_gen.c -D_GNU_SOURCE
+
+symbol_table.o: symbol_table.c symbol_table.h
+       gcc -g -c -ansi -pedantic -Wall symbol_table.c -D_GNU_SOURCE
+
+parser.o: parser.c symbol_table.h code_gen.h tree.h
+       gcc -g -c -ansi -pedantic parser.c
+
+parser.c parser.h: oxout.y
+       yacc -d oxout.y -o parser.c
+
+oxout.y oxout.l: parser.y scanner.lex
+       ox parser.y scanner.lex
+
+code.o: code.c tree.h
+       gcc -g -ansi -c code.c
+
+code.c: code.bfe
+       bfe < code.bfe | iburg > code.c
+
+clean:
+       rm -f gesamt scanner.o scanner.c parser.h parser.c parser.o oxout.y oxout.l symbol_table.o code_gen.o tree.o code.c code.o testgesamt* a.out
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/code.bfe.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/code.bfe.svn-base
new file mode 100644 (file)
index 0000000..69de53b
--- /dev/null
@@ -0,0 +1,88 @@
+%{
+/* vim: filetype=c
+ */
+#define CODE
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#include "tree.h"
+#include "code_gen.h"
+
+/* TODO (-a)+b */
+/* TODO imul -> imulq, add -> addq */
+/* TODO bugs - hopefully fixed:
+ * func f(a,b,c,d) return ((a+1)+(b+1))+((c+1)+(d+1)); end;
+ * func f(a,b,c,d) var b:=a; var c:=b; var d:=c; return a+b+c+d; end;
+ * mul, add etc. with direct memory access
+ */
+/* TODO immediate values in assignments */
+/* TODO assignment with immediate value/variable on RHS */
+/* TODO immediate values in boolean expressions */
+/* TODO optimize boolean expressions */
+/* FIXME if_then label not inserted */
+%}
+
+%start stat
+%term OP_Not=1 OP_Negation=2 OP_Addition=3 OP_Multiplication=4 OP_Disjunction=5 OP_Greater=6 OP_Equal=7 OP_ID=8 OP_Number=9 OP_Field=10 OP_Return=11 OP_Zero=12 OP_One=13 OP_Exprs=14 OP_Call=15 OP_Assign=16 OP_If=17 OP_Stats=18 OP_Empty=19 OP_Ifstats=20 OP_While=21 OP_CallNoParam=22 OP_Arg=23
+
+%%
+
+stat:  ret                                     # 0 #
+stat:  assign                                  # 0 #
+stat:  bexpr                                   # 0 #
+stat:  expr                                    # 0 #
+
+assign:        OP_Assign(OP_ID, expr)                  # 1 # if(bnode->kids[0]->param_index!=-1 && !call) { printf("\tmovq %%%s, %%%s /* x */\n", bnode->reg, get_param_reg(bnode->kids[0]->param_index)); } else if(bnode->kids[0]->param_index!=-1 && call) { printf("\tmovq %%%s, %i(%%rsp) /* y */\n", bnode->reg, 8*(variables-bnode->kids[0]->param_index)); } else { printf("\tmovq %%%s, %i(%%rsp) /* z */\n", bnode->reg, bnode->kids[0]->value); }
+assign:        OP_Assign(OP_Field(expr,OP_ID), expr)   # 1 # printf("\tmovq %%%s, %li(%%%s)\n", bnode->kids[1]->reg, 8*bnode->kids[0]->value, bnode->kids[0]->reg); 
+
+ret:   OP_Return(expr)                         # 1 # move(bnode->reg, "rax"); ret(); 
+
+expr:  OP_ID                                   # 1 # if(bnode->param_index!=-1 && !call) { move(get_param_reg(bnode->param_index), bnode->reg); } else if(bnode->param_index!=-1 && call) { printf("\tmov %i(%%rsp), %%%s\n", 8*(variables-bnode->param_index), bnode->reg); } else { printf("\tmovq %i(%%rsp), %%%s\n", bnode->value, bnode->reg); }
+expr:  imm                                     # 1 # printf("\tmovq $%li, %%%s\n", bnode->value, bnode->reg);
+expr:  call                                    # 0 #
+expr:  OP_Negation(expr)                       # 1 # printf("\tnegq %%%s\n", bnode->reg);
+expr:  OP_Addition(expr,expr)                  # 1 # printf("\taddq %%%s, %%%s\n", bnode->kids[1]->reg, bnode->kids[0]->reg);
+expr:  OP_Addition(imm,expr)                   # 1 # printf("\taddq $%li, %%%s\n", bnode->kids[0]->value, bnode->kids[1]->reg); move(bnode->kids[1]->reg, bnode->reg);
+expr:  OP_Addition(expr,imm)                   # 1 # if(bnode->kids[0]->op==OP_ID) { move(bnode->kids[0]->reg, bnode->reg); printf("\taddq $%li, %%%s /* x2 */\n", bnode->kids[1]->value, bnode->reg); } else { printf("\taddq $%li, %%%s /* y2 */\n", bnode->kids[1]->value, bnode->kids[0]->reg); }
+expr:  OP_Multiplication(expr,expr)            # 1 # printf("\timulq %%%s, %%%s\n", bnode->kids[1]->reg, bnode->kids[0]->reg);
+expr:  OP_Multiplication(imm,expr)             # 1 # printf("\timulq $%li, %%%s\n", bnode->kids[0]->value, bnode->kids[1]->reg); move(bnode->kids[1]->reg, bnode->reg);
+expr:  OP_Multiplication(expr,imm)             # 1 # if(bnode->kids[0]->op==OP_ID) { move(bnode->kids[0]->reg, bnode->reg); printf("\timulq $%li, %%%s\n", bnode->kids[1]->value, bnode->reg); } else { printf("\timulq $%li, %%%s\n", bnode->kids[1]->value, bnode->kids[0]->reg); }
+expr:  OP_Field(expr,OP_ID)                    # 2 # printf("\tmovq %li(%%%s), %%%s\n", 8*bnode->value, bnode->kids[0]->reg, bnode->reg);
+expr:  OP_Field(imm,OP_ID)                     # 1 # printf("\tmovq %li, %%%s\n", bnode->kids[0]->value+bnode->value*8, bnode->reg);
+
+call:  OP_Call(exprs)                          # 0 # prepare_call(bnode->name, bnode->reg); /* reg_return=bnode->reg; */ do_call(bnode->name, bnode->reg);
+call:  OP_CallNoParam                          # 0 # # prepare_call(bnode->name, bnode->reg); /* reg_return=bnode->reg; */ /* prepare_call(bnode->name); */ do_call(bnode->name, bnode->reg);
+
+exprs: OP_Arg(expr)                            # 0 # /* reg_return=bnode->reg; function_name=bnode->name; */ /* prepare_call(bnode->name); */
+exprs: OP_Exprs(exprs,exprs)                   # 0 #
+
+zero:  OP_Negation(zero)                       # 0 #
+zero:  OP_Zero                                 # 0 #
+zero:  OP_Multiplication(zexpr,zero)           # 0 #
+zero:  OP_Multiplication(zero,zexpr)           # 0 #
+
+zexpr: zero                                    # 0 #
+zexpr: imm                                     # 0 #
+zexpr: OP_Negation(zexpr)                      # 0 #
+zexpr: OP_Addition(zexpr,zexpr)                # 0 #
+zexpr: OP_Multiplication(zexpr,zexpr)          # 0 #
+zexpr: OP_Field(zexpr,OP_ID)                   # 0 #
+zexpr: OP_ID                                   # 0 #
+
+imm:   zero                                    # 0 #
+imm:   OP_Negation(imm)                        # 0 # bnode->value=-bnode->kids[0]->value;
+imm:   OP_Addition(imm,imm)                    # 0 # bnode->value=bnode->kids[0]->value+bnode->kids[1]->value;
+imm:   OP_Multiplication(imm,imm)              # 0 # bnode->value=bnode->kids[0]->value*bnode->kids[1]->value;
+imm:   OP_Number                               # 0 #
+imm:   OP_Zero                                 # 0 #
+imm:   OP_One                                  # 0 #
+
+bexpr: OP_Disjunction(bexpr,bexpr)             # 0 #
+bexpr: OP_Not(bexpr)                           # 0 #
+bexpr: OP_Greater(expr,expr)                   # 0 #
+bexpr: OP_Equal(expr,expr)                     # 0 #
+
+%%
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/code_gen.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/code_gen.c.svn-base
new file mode 100644 (file)
index 0000000..179dca5
--- /dev/null
@@ -0,0 +1,104 @@
+#include <stdio.h>
+#include <string.h>
+#include "code_gen.h"
+
+int variables, call;
+/* char *function_name; */
+/* char *reg_return; */
+extern char *saved_reg;
+
+char *reg_names[]={"rax", "r10", "r11", "r9", "r8", "rcx", "rdx", "rsi", "rdi"};
+
+void function_header(char *name, int vars, int has_call, int num_pars) {
+       int a;
+
+       variables = vars+(has_call ? num_pars : 0);
+       printf("# setting call to %i\n", has_call);
+       call = has_call;
+
+       printf("\t.globl %s\n\t.type %s, @function\n%s:\n", name, name, name);
+       printf("# %i %i %i %i\n",vars,has_call,num_pars,(has_call ? num_pars : 0));
+       if(vars+(has_call ? num_pars : 0)>0) {
+               printf("\tpushq %%rbp\n\tmovq %%rsp, %%rbp\n\tsubq $%i, %%rsp\n", 8*(vars+num_pars));
+               if(num_pars>0 && has_call) {
+                       for(a=0;a<num_pars;a++) {
+                               printf("\tmovq %%%s, %i(%%rsp)\n",get_param_reg(a+1),8*(vars+num_pars-a-1));
+                       }
+               }
+       }
+}
+
+void prepare_call(char *function, char *reg_return) {
+       int a;
+       /* TODO don't save all registers */
+       for(a=0;a<9;a++) {
+               printf("\tpushq %%%s\n",reg_names[a]);
+       }
+}
+
+void do_call(char *function, char *reg_return) {
+       int a;
+       /* TODO don't restore all registers */
+       printf("\tcall %s\n", function);
+       move("rax",reg_return);
+       /* TODO return value? */
+       for(a=8;a>=0;a--) {
+               if(strcmp(reg_return,reg_names[a])) {
+                       printf("\tpopq %%%s\n",reg_names[a]);
+               }
+               else {
+                       printf("\taddq $8, %%rsp\n");
+               }
+       }
+}
+
+char *get_next_reg(char *name, int skip_reg) {
+       int index, a;
+       if(name==(char *)NULL) {
+               index=0;
+       }
+       else {
+               for(a=0;a<9;a++) {
+                       if(!strcmp(name,reg_names[a])) {
+                               index=a+1;
+                               break;
+                       }
+               }
+       }
+       if(skip_reg) {
+               index++;
+       }
+       if(index>8) {
+               return saved_reg;
+       }
+       return reg_names[index];
+}
+
+char *get_next_param_reg(char *reg) {
+       int a=1;
+       while(1) {
+               if(strcmp(get_param_reg(a),reg)==0) {
+                       return get_param_reg(a+1);
+               }
+               a++;
+       }
+}
+
+char *get_param_reg(long number) {
+       char *reg_names[]={"rdi", "rsi", "rdx", "rcx", "r8", "r9"};
+       return reg_names[number-1];
+}
+
+void ret(void) {
+       if(variables>0) {
+               printf("\tleave\n");
+       }
+       printf("\tret\n");
+}
+
+void move(char *src, char *dst) {
+       if(strcmp(src,dst)) {
+               printf("\tmovq %%%s, %%%s\n",src,dst);
+       }
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/code_gen.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/code_gen.h.svn-base
new file mode 100644 (file)
index 0000000..41ef621
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef _CODE_GEN_H_
+#define _CODE_GEN_H_
+
+void function_header(char *name, int vars, int has_call, int num_param);
+char *get_next_reg(char *name, int skip_reg);
+char *get_next_param_reg(char *reg);
+char *get_param_reg(long number);
+void ret(void);
+void move(char *src, char *dest);
+void do_call(char *function, char *reg_return);
+void prepare_call(char *function, char *reg_return);
+
+/* extern char *function_name; */
+extern int call, variables;
+/* extern char *reg_return; */
+
+#endif /* _CODE_GEN_H_ */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/parser.y.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/parser.y.svn-base
new file mode 100644 (file)
index 0000000..585b19b
--- /dev/null
@@ -0,0 +1,595 @@
+%{
+       #include <stdio.h>
+       #include <stdlib.h>
+       #include <string.h>
+       #include "symbol_table.h"
+       #include "code_gen.h"
+       #include "tree.h"
+
+       #define imm_prefix "$"
+
+       char *saved_reg;
+
+/* TODO failed test case: func f(a) if not (a=0 or a=1) then return 0; end; end; */
+%}
+
+%start         Input
+%token         FUNC END STRUCT VAR IF THEN ELSE WHILE DO RETURN OR NOT
+%token         ID NUM ASSIGN GREATER
+
+@autoinh symbols stack_offset all_pars if_in jump_true jump_false
+@autosyn node defined_vars immediate if_out has_call
+
+@attributes    { char *name; } ID
+@attributes    { long value; } NUM
+@attributes    { struct symbol_t *fields; struct symbol_t *symbols; int if_in; } Program
+@attributes    { struct symbol_t *fields; } Structdef
+@attributes    { struct symbol_t *fields; int offset; } Ids
+@attributes    { struct symbol_t *pars; int num_pars; int all_pars; } Pars
+@attributes    { struct symbol_t *symbols; int defined_vars; int if_in; int if_out; } Funcdef 
+@attributes    { struct symbol_t *symbols; int defined_vars; int stack_offset; treenode *node; int if_in; int if_out; int has_call; } Stats
+@attributes    { struct symbol_t *symbols; treenode *node; int immediate; int has_call; } Expr Term Plusterm Malterm
+@attributes    { struct symbol_t *symbols; treenode *node; int has_call; } Call Lexpr Field Exprs
+@attributes    { struct symbol_t *symbols; treenode *node; char *jump_true; char *jump_false; int negated; int if_in; int if_out; int negated2; int top_level; int has_call; } Bool Orterm Subbool Bterm
+@attributes    { struct symbol_t *in_symbols; struct symbol_t *out_symbols; treenode *node; int defined_vars; int stack_offset; int if_in; int if_out; int has_call; } Stat
+@attributes    { struct symbol_t *symbols; treenode *node; int defined_vars; int stack_offset; int if_in; int if_out; int if_nr; int has_call; } Blubb
+
+@traversal @postorder check
+@traversal @preorder reg
+@traversal @preorder codegen
+
+%%
+
+Input:           Program
+               @{
+                  @i @Program.symbols@ = @Program.fields@;
+                  @i @Program.if_in@ = 0;
+
+                  @codegen printf("\t.text\n");
+               @}
+
+               ;
+
+Program:         Funcdef ';' Program
+               @{
+                  @i @Program.fields@ = @Program.1.fields@;
+                  @i @Program.1.if_in@ = @Funcdef.if_out@;
+               @}
+
+               | Structdef ';' Program
+               @{
+                  @i @Program.fields@ = table_merge(@Structdef.fields@, @Program.1.fields@, 1);
+                  @i @Program.1.symbols@ = @Program.0.symbols@;
+               @}
+
+               |
+               @{ @i @Program.fields@ = new_table(); @}
+
+               ;
+Funcdef:         FUNC ID '(' Pars ')' Stats END
+                       @{
+                  @i @Stats.symbols@ = table_merge(@Funcdef.symbols@, @Pars.pars@, 0);
+                  @i @Stats.stack_offset@ = 0;
+                  @i @Pars.all_pars@ = @Pars.num_pars@;
+
+                  @codegen function_header(@ID.name@, @Funcdef.defined_vars@, @Stats.has_call@, @Pars.num_pars@);
+               @}
+
+               | FUNC ID '(' ')' Stats END
+                       @{
+                  @i @Stats.symbols@ = table_merge(@Funcdef.symbols@, new_table(), 0);
+                  @i @Stats.stack_offset@ = 0;
+
+                  @codegen function_header(@ID.name@, @Funcdef.defined_vars@, @Stats.has_call@, 0);
+               @}
+
+               ;  
+Structdef:       STRUCT Ids END
+               @{
+                  @i @Structdef.fields@ = @Ids.fields@;
+                  @i @Ids.offset@ = 0;
+               @}
+
+               ;  
+
+Ids:             ID Ids
+               @{
+                  @i @Ids.fields@ = table_add_symbol(@Ids.1.fields@, @ID.name@, SYMBOL_TYPE_FIELD, 1, @Ids.offset@);
+                  @i @Ids.1.offset@ = @Ids.offset@ + 1;
+               @}
+
+               |
+               @{ @i @Ids.fields@ = new_table(); @}
+
+               ;
+
+Pars:            Pars ',' ID
+               @{
+                   @i @Pars.pars@ = table_add_param(@Pars.1.pars@, @ID.name@, @Pars.num_pars@);
+                  @i @Pars.num_pars@ = @Pars.1.num_pars@ + 1;
+                @}
+
+               | ID
+               @{
+                   @i @Pars.pars@ = table_add_param(new_table(), @ID.name@, 1);
+                   @i @Pars.num_pars@ = 1;
+                @}
+
+               ; 
+Stats:           Stat ';' Stats
+               @{
+                  @i @Stat.in_symbols@ = @Stats.symbols@;
+                  @i @Stats.1.symbols@ = @Stat.out_symbols@;
+                  @i @Stats.defined_vars@ = @Stat.defined_vars@ + @Stats.1.defined_vars@;
+                  @i @Stats.1.stack_offset@ = @Stats.stack_offset@ + @Stat.defined_vars@ * 8;
+                  @i @Stats.node@ = new_node(OP_Stats, @Stat.node@, @Stats.1.node@);
+                  @i @Stat.if_in@ = @Stats.if_in@;
+                  @i @Stats.1.if_in@ = @Stat.if_out@;
+                  @i @Stats.if_out@ = @Stats.1.if_out@;
+                  @i @Stats.has_call@ = @Stat.has_call@ || @Stats.1.has_call@;
+               @}
+
+               |
+               @{
+                  @i @Stats.node@ = new_leaf(OP_Empty); /* TODO */
+                  @i @Stats.defined_vars@ = 0;
+                  @i @Stats.if_out@ = @Stats.if_in@;
+                  @i @Stats.has_call@ = 0;
+               @}
+
+               ;  
+Stat:            VAR ID ASSIGN Expr /* Nodes necessary for IF, DO, ... ? */
+               @{
+                  @i @Stat.out_symbols@ = table_add_symbol(clone_table(@Stat.in_symbols@), @ID.name@, SYMBOL_TYPE_VAR, 0, @Stat.stack_offset@);
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Assign, new_named_leaf_value(OP_ID, @ID.name@, @Stat.stack_offset@, -1), @Expr.node@);
+                  @i @Stat.defined_vars@ = 1;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+
+                  @reg @Expr.node@->reg = get_next_reg((char *)NULL, 0); @Stat.node@->reg = @Expr.node@->reg;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               | Lexpr ASSIGN Expr
+               @{
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Lexpr.symbols@ = @Stat.in_symbols@;
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Assign, @Lexpr.node@, @Expr.node@);
+                  @i @Stat.defined_vars@ = 0;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+                  @i @Stat.has_call@ = @Lexpr.has_call@ || @Expr.has_call@;
+
+                  @reg @Lexpr.node@->reg = get_next_reg((char *)NULL, 0); @Expr.node@->reg = get_next_reg(@Lexpr.node@->reg, 0); @Stat.node@->reg = @Expr.node@->reg;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               | IF Bool THEN Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_If, @Bool.node@, @Stats.node@);
+                  @i @Bool.if_in@ = @Stat.if_in@ + 1;
+                  @i @Stats.if_in@ = @Bool.if_out@;
+                  @i @Stat.if_out@ = @Stats.if_out@;
+                  @e Bool.jump_true : Stats.if_in; @Bool.jump_true@ = malloc(100); sprintf(@Bool.jump_true@, "if_then%i", @Stats.if_in@);
+                  @e Bool.jump_false : Stats.if_in; @Bool.jump_false@ = malloc(100); sprintf(@Bool.jump_false@, "if_end%i", @Stats.if_in@);
+                  @i @Stat.has_call@ = @Bool.has_call@ || @Stats.has_call@;
+
+                  @reg @Bool.node@->reg = get_next_reg((char *)NULL, 0);
+
+                  @codegen /* write_tree(@Bool.node@, 0); burm_label(@Bool.node@); burm_reduce(@Bool.node@, 1); printf("\ttest %s1, %%%s\n\tjz if_end%i\n", imm_prefix, @Bool.node@->reg, @Stats.if_in@); */
+                  @codegen @revorder(1) printf("if_end%i:\n", @Stats.if_in@);
+               @}
+
+               | IF Bool THEN Stats Blubb END 
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Blubb.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;              
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Ifstats, @Stats.node@, @Blubb.node@);
+                  @i @Stat.defined_vars@ = @Stats.defined_vars@ + @Blubb.defined_vars@;
+                  @i @Bool.if_in@ = @Stat.if_in@ + 1;
+                  @i @Stats.if_in@ = @Bool.if_out@;
+                  @i @Blubb.if_in@ = @Stats.if_out@;
+                  @i @Stat.if_out@ = @Blubb.if_out@;
+                  @i @Blubb.if_nr@ = @Stats.if_in@;
+                  @e Bool.jump_true : Stats.if_in; @Bool.jump_true@ = malloc(100); sprintf(@Bool.jump_true@, "if_then%i", @Stats.if_in@);
+                  @e Bool.jump_false : Stats.if_in; @Bool.jump_false@ = malloc(100); sprintf(@Bool.jump_false@, "if_else%i", @Stats.if_in@);
+                  @i @Stat.has_call@ = @Bool.has_call@ || @Stats.has_call@ || @Blubb.has_call@;
+
+                  @reg @Bool.node@->reg = get_next_reg((char *)NULL, 0);
+
+                  @codegen /* write_tree(@Bool.node@, 0); burm_label(@Bool.node@); burm_reduce(@Bool.node@, 1); printf("\ttest %s1, %%%s\n\tjz if_else%i\n", imm_prefix, @Bool.node@->reg, @Stats.if_in@); */
+                  @codegen @revorder(1) printf("if_end%i:\n", @Stats.if_in@);
+               @}
+
+               | WHILE Bool DO Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_While, @Bool.node@, @Stats.node@);
+                  @i @Bool.if_in@ = @Stat.if_in@ + 1;
+                  @i @Stats.if_in@ = @Bool.if_out@;
+                  @i @Stat.if_out@ = @Stats.if_out@;
+                  @e Bool.jump_true : Stats.if_in; @Bool.jump_true@ = malloc(100); sprintf(@Bool.jump_true@, "do_enter%i", @Stats.if_in@);
+                  @e Bool.jump_false : Stats.if_in; @Bool.jump_false@ = malloc(100); sprintf(@Bool.jump_false@, "do_end%i", @Stats.if_in@);
+                  @i @Stat.has_call@ = @Bool.has_call@ || @Stats.has_call@;
+
+                  @reg @Bool.node@->reg = get_next_reg((char *)NULL, 0);
+
+                  @codegen printf("do_start%i:\n", @Stats.if_in@); /* write_tree(@Bool.node@, 0); burm_label(@Bool.node@); burm_reduce(@Bool.node@, 1); printf("\ttest %s1, %%%s\n\tjz do_end%i\n", imm_prefix, @Bool.node@->reg, @Stats.if_in@); */
+                  @codegen @revorder(1) printf("\tjmp do_start%i\ndo_end%i:\n", @Stats.if_in@, @Stats.if_in@);
+               @}
+
+               | Call
+               @{
+                  @i @Call.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+                  @i @Stat.defined_vars@ = 0;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+
+                  @reg @Call.node@->reg = "rax";
+               @}
+
+               | RETURN Expr
+               @{
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Return, @Expr.node@, (treenode *)NULL);
+                  @i @Stat.defined_vars@ = 0;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+
+                  @reg if(@Expr.node@->op == OP_Call) { @Stat.node@->reg = get_next_reg("rax", 0); } else { @Stat.node@->reg = get_next_reg((char *)NULL, 0); } @Expr.node@->reg = @Stat.node@->reg;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               ;
+
+Blubb:           ELSE Stats
+               @{
+                  @codegen printf("\tjmp if_end%i\nif_else%i:\n", @Blubb.if_nr@, @Blubb.if_nr@);
+               @}
+
+Lexpr:           ID
+               @{
+                  @i @Lexpr.node@ = new_named_leaf_value(OP_ID, @ID.name@, (table_lookup(@Lexpr.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Lexpr.symbols@, @ID.name@)->stack_offset, (table_lookup(@Lexpr.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Lexpr.symbols@, @ID.name@)->param_index);
+
+                  @i @Lexpr.has_call@ = 0;
+                  @check check_variable(@Lexpr.symbols@, @ID.name@);
+               @}
+
+               | Field
+               ;
+Expr:            '-' Term
+               @{
+                  @i @Expr.node@ = new_node(OP_Negation, @Term.node@, (treenode *)NULL);
+
+                  @reg @Term.node@->reg = @Expr.node@->reg;
+               @}
+
+               | Term
+               @{ @reg @Term.node@->reg = @Expr.node@->reg; @}
+
+               | Term Plusterm
+               @{
+                  @i @Expr.node@ = new_node(OP_Addition, @Plusterm.node@, @Term.node@);
+                  @i @Expr.immediate@ = @Term.immediate@ && @Plusterm.immediate@;
+                  @i @Expr.has_call@ = @Term.has_call@ || @Plusterm.has_call@;
+
+                  @reg if(!@Plusterm.immediate@) { @Plusterm.node@->reg = @Expr.node@->reg; @Term.node@->reg = get_next_reg(@Plusterm.node@->reg, @Expr.node@->skip_reg); @Plusterm.node@->skip_reg = 1; } else { @Term.node@->reg = @Expr.node@->reg; @Plusterm.node@->reg = get_next_reg(@Term.node@->reg, @Expr.node@->skip_reg); }
+               @}
+
+               | Term Malterm
+               @{
+                  @i @Expr.node@ = new_node(OP_Multiplication, @Malterm.node@, @Term.node@);
+                  @i @Expr.immediate@ = @Term.immediate@ && @Malterm.immediate@;
+                  @i @Expr.has_call@ = @Term.has_call@ || @Malterm.has_call@;
+
+                  @reg if(!@Malterm.immediate@) { @Malterm.node@->reg = @Expr.node@->reg; @Term.node@->reg = get_next_reg(@Malterm.node@->reg, @Expr.node@->skip_reg); @Malterm.node@->skip_reg = 1; } else { @Term.node@-> reg = @Expr.node@->reg; @Malterm.node@->reg = get_next_reg(@Term.node@->reg, @Expr.node@->skip_reg); }
+               @}
+
+               ;
+
+Plusterm:        '+' Term Plusterm
+               @{
+                  @i @Plusterm.node@ = new_node(OP_Addition, @Plusterm.1.node@, @Term.node@);
+                  @i @Plusterm.immediate@ = @Term.immediate@ && @Plusterm.1.immediate@;
+                  @i @Plusterm.has_call@ = @Term.has_call@ || @Plusterm.1.has_call@;
+
+                  @reg @Plusterm.1.node@->reg = @Plusterm.node@->reg; @Term.node@->reg = get_next_reg(@Plusterm.1.node@->reg, @Plusterm.node@->skip_reg); 
+               @}
+
+               | '+' Term
+               @{ @reg @Term.node@->reg = @Plusterm.node@->reg; @}
+
+               ;
+
+Malterm:         '*' Term Malterm
+               @{
+                  @i @Malterm.node@ = new_node(OP_Multiplication, @Malterm.1.node@, @Term.node@);
+                  @i @Malterm.immediate@ = @Term.immediate@ && @Malterm.1.immediate@;
+                  @i @Malterm.has_call@ = @Term.has_call@ || @Malterm.1.has_call@;
+
+                  @reg @Malterm.1.node@->reg = @Malterm.node@->reg; @Term.node@->reg = get_next_reg(@Malterm.1.node@->reg, @Malterm.node@->skip_reg); 
+               @}
+
+                       | '*' Term
+               @{ @reg @Term.node@->reg = @Malterm.node@->reg; @}
+
+               ;
+Term:            '(' Expr ')'
+               @{ @reg @Expr.node@->reg = @Term.node@->reg; @}
+
+               | ID
+               @{
+                  @i @Term.node@ = new_named_leaf_value(OP_ID, @ID.name@, (table_lookup(@Term.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Term.symbols@, @ID.name@)->stack_offset, (table_lookup(@Term.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Term.symbols@, @ID.name@)->param_index);
+                  @i @Term.immediate@ = 0;
+                  @i @Term.has_call@ = 0;
+
+                  @check check_variable(@Term.symbols@, @ID.name@);
+               @}
+
+               | NUM
+               @{
+                  @i @Term.node@ = new_number_leaf(@NUM.value@);
+                  @i @Term.immediate@ = 1;
+                  @i @Term.has_call@ = 0;
+               @}
+
+               | Call
+               @{
+                  @i @Term.immediate@ = 0;
+
+                  @reg @Call.node@->reg = @Term.node@->reg;
+               @}
+
+               | Field
+               @{
+                  @i @Term.immediate@ = 0;
+
+                  @reg @Field.node@->reg = @Term.node@->reg;
+               @}
+
+               ;
+
+/* TODO replace by Bool -> Subbool */
+Bool:            Bterm
+               @{
+                  @i @Bool.negated@ = 0;
+                  @i @Bool.negated2@ = 0;
+                  @i @Bterm.negated@ = 0;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Bool.top_level@ = 1;
+                  @i @Bterm.top_level@ = 1;
+
+                  @codegen @revorder(1) if(@Bterm.node@->op!=OP_Disjunction) { printf("\tjmp %s # foo1\n", @Bool.jump_false@); } printf("%s:\n", @Bool.jump_true@); /* printf("\tjmp %s\n%s:\n", @Bool.jump_false@, @Bool.jump_true@); */
+               @}
+
+               | Bterm Orterm
+               @{
+                  @i @Bool.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.node@);
+                  @i @Bool.negated@ = 0;
+                  @i @Bool.negated2@ = 0;
+                  @i @Bterm.negated@ = 0;
+                  @i @Orterm.negated@ = 0;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Orterm.negated2@ = 0;
+                  @e Bterm.jump_true : Bool.negated Bool.jump_true Bool.if_in; if(!@Bool.negated@) { @Bterm.jump_true@ = malloc(100); sprintf(@Bterm.jump_true@, "bool_true%i", @Bool.if_in@); } else { @Bterm.jump_true@ = @Bool.jump_true@; }
+                  @i @Orterm.jump_true@ = @Bterm.jump_true@;
+                  @e Bterm.jump_false : Bool.negated Bool.jump_false Bool.if_in; if(@Bool.negated@) { @Bterm.jump_false@ = malloc(100); sprintf(@Bterm.jump_false@, "bool_false%i", @Bool.if_in@); } else { @Bterm.jump_false@ = @Bool.jump_false@; }
+                  @i @Orterm.jump_false@ = @Bterm.jump_false@;
+                  @i @Bterm.if_in@ = @Bool.if_in@ + 1;
+                  @i @Orterm.if_in@ = @Bterm.if_out@;
+                  @i @Bool.if_out@ = @Orterm.if_out@;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Orterm.top_level@ = 0;
+                  @i @Bool.top_level@ = 1;
+                  @i @Bool.has_call@ = @Bterm.has_call@ || @Orterm.has_call@;
+
+                  @reg @Bterm.node@->reg = @Bool.node@->reg; @Orterm.node@->reg = @Bool.node@->reg;
+
+                  @codegen @revorder(1) printf("\tjmp %s # foo2\n", @Bool.jump_false@); printf(@Bool.negated@ ? "bool_false%i:\n" : "bool_true%i:\n", @Bool.if_in@); printf("%s:\n", @Bool.jump_true@); /* printf("\tjmp %s\n%s:\n", @Bool.jump_false@, @Bool.jump_true@); */
+               @}
+
+               | NOT Bterm
+               @{
+                  @i @Bool.node@ = new_node(OP_Not, @Bterm.node@, (treenode *)NULL);
+                  @i @Bterm.jump_true@ = @Bool.jump_true@;
+                  @i @Bool.negated@ = 0;
+                  @i @Bool.negated2@ = 0;
+                  @i @Bterm.negated@ = 1;
+                  @i @Bterm.negated2@ = 1;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Bool.top_level@ = 1;
+
+                  @reg @Bterm.node@-> reg = @Bool.node@->reg;
+
+                  @codegen @revorder(1) if(@Bterm.node@->op!=OP_Not) { printf("\tjmp %s # foo3\n", @Bool.jump_false@); } printf("%s:\n", @Bool.jump_true@); /* printf("\tjmp %s\nnot_break%i:\n\tjmp %s\n%s:\n", @Bool.jump_true@, 0, @Bool.jump_false@, @Bool.jump_true@); */
+               @}
+
+               ;
+
+Subbool:         Bterm
+               @{
+                  @i @Bterm.negated@ = @Subbool.negated@;
+                  @i @Bterm.negated2@ = @Subbool.negated2@;
+                  @i @Bterm.top_level@ = @Subbool.top_level@;
+                  @codegen @revorder(1) /* printf("\tjmp %s\n%s:\n", @Subbool.jump_false@, @Subbool.jump_true@); */
+               @}
+
+               | Bterm Orterm
+               @{
+                  @i @Subbool.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.node@);
+                  @i @Bterm.negated@ = @Subbool.negated@;
+                  @i @Orterm.negated@ = @Subbool.negated@;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Orterm.negated2@ = 0;
+                  @e Bterm.jump_true : Subbool.negated Subbool.negated2 Subbool.jump_true Subbool.if_in; if(!@Subbool.negated@ && @Subbool.negated2@) { @Bterm.jump_true@ = malloc(100); sprintf(@Bterm.jump_true@, "bool_true%i", @Subbool.if_in@); } else { @Bterm.jump_true@ = @Subbool.jump_true@; }
+                  @i @Orterm.jump_true@ = @Bterm.jump_true@;
+                  @e Bterm.jump_false : Subbool.negated Subbool.negated2 Subbool.jump_false Subbool.if_in; if(@Subbool.negated@ && @Subbool.negated2@) { @Bterm.jump_false@ = malloc(100); sprintf(@Bterm.jump_false@, "bool_false%i", @Subbool.if_in@); } else { @Bterm.jump_false@ = @Subbool.jump_false@; }
+                  @i @Orterm.jump_false@ = @Bterm.jump_false@;
+                  @i @Bterm.if_in@ = @Subbool.if_in@ + 1;
+                  @i @Orterm.if_in@ = @Bterm.if_out@;
+                  @i @Subbool.if_out@ = @Orterm.if_out@;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Orterm.top_level@ = 0;
+                  @i @Subbool.has_call@ = @Bterm.has_call@ || @Orterm.has_call@;
+
+                  @reg @Bterm.node@->reg = @Subbool.node@->reg; @Orterm.node@->reg = @Subbool.node@->reg;
+
+                  @codegen @revorder(1) /* TODO output if on top level */ if(@Subbool.negated2@ || @Subbool.top_level@) { printf("\tjmp %s # foo4\n", @Subbool.negated2@ ? @Subbool.jump_true@ : @Subbool.jump_false@); } printf(!@Subbool.negated@ ? "bool_true%i:\n" : "bool_false%i:\n", @Subbool.if_in@); /* printf("\tjmp %s\n# %s:\n", @Subbool.jump_true@, @Subbool.jump_true@);  */
+               @}
+
+               | NOT Bterm
+               @{
+                  @i @Subbool.node@ = new_node(OP_Not, @Bterm.node@, (treenode *)NULL);
+                  @i @Bterm.jump_true@ = @Subbool.jump_true@;
+                  @i @Bterm.negated@ = 1 - @Subbool.negated@;
+                  @i @Bterm.negated2@ = 1 - @Subbool.negated2@;
+                  @i @Bterm.top_level@ = 0;
+
+                  @reg @Bterm.node@-> reg = @Subbool.node@->reg; /* printf("%s, %s\n", @Bterm.jump_true@, @Subbool.jump_false@); */
+
+                  @codegen @revorder(1) printf("# !!\n"); if(@Subbool.negated2@ || @Subbool.top_level@) { printf("\tjmp %s # foo9\n", @Subbool.negated2@ ? @Subbool.jump_false@ : @Subbool.jump_false@); } /* printf("\tjmp %s\nnot_break%i:\n", @Subbool.negated@ ? @Bterm.jump_true@ : @Subbool.jump_false@, 0); printf("\tjmp %s\n%s:\n", @Subbool.jump_false@, @Subbool.jump_true@); */
+               @}
+
+               ;
+
+
+Orterm:                  OR Bterm Orterm
+               @{
+                  @i @Orterm.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.1.node@);
+                  @i @Bterm.negated@ = @Orterm.negated@;
+                  @i @Orterm.1.negated@ = @Orterm.negated@;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Orterm.1.negated2@ = 0;
+                  @i @Orterm.1.if_in@ = @Bterm.if_out@;
+                  @i @Orterm.if_out@ = @Orterm.1.if_out@;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Orterm.1.top_level@ = 0;
+                  @i @Orterm.has_call@ = @Bterm.has_call@ || @Orterm.1.has_call@;
+
+                  @reg @Bterm.node@->reg = @Orterm.node@->reg; @Orterm.1.node@->reg = @Orterm.node@->reg;
+               @}
+
+               | OR Bterm
+               @{
+                  @i @Bterm.negated@ = @Orterm.negated@;
+                  @i @Bterm.negated2@ = @Orterm.negated2@;
+                  @i @Bterm.top_level@ = 0;
+               @}
+
+               ;
+
+Bterm:           Term GREATER Term
+               @{
+                  @i @Bterm.node@ = new_node(OP_Greater, @Term.node@, @Term.1.node@);
+                  @i @Bterm.if_out@ = @Bterm.if_in@;
+                  @i @Bterm.has_call@ = @Term.has_call@ || @Term.1.has_call@;
+                  
+                  @reg @Term.node@->reg = @Bterm.node@->reg; @Term.1.node@->reg = get_next_reg(@Bterm.node@->reg, 0);
+
+                  @codegen /* write_tree(@Term.node@, 0); */ burm_label(@Term.node@); burm_reduce(@Term.node@, 1); /* write_tree(@Term.1.node@, 0); */ burm_label(@Term.1.node@); burm_reduce(@Term.1.node@, 1); printf(@Bterm.negated2@ ? "\tcmp %%%s, %%%s\n\tjs %s # %s %s %i %i\n" : "\tcmp %%%s, %%%s\n\tjns %s # %s %s %i %i\n", @Term.1.node@->reg, @Term.node@->reg, ((@Bterm.negated2@ ^ @Bterm.negated@)) ? @Bterm.jump_false@ : @Bterm.jump_true@, @Bterm.jump_true@, @Bterm.jump_false@, @Bterm.negated2@, @Bterm.negated@);
+               @}
+
+               | Term '=' Term
+               @{
+                  @i @Bterm.node@ = new_node(OP_Equal, @Term.node@, @Term.1.node@);
+                  @i @Bterm.if_out@ = @Bterm.if_in@;
+                  @i @Bterm.has_call@ = @Term.has_call@ || @Term.1.has_call@;
+
+                  @reg @Term.node@->reg = @Bterm.node@->reg; @Term.1.node@->reg = get_next_reg(@Bterm.node@->reg, 0);
+
+                  @codegen /* write_tree(@Term.node@, 0); */ burm_label(@Term.node@); burm_reduce(@Term.node@, 1); /* write_tree(@Term.1.node@, 0); */ burm_label(@Term.1.node@); burm_reduce(@Term.1.node@, 1); printf(@Bterm.negated2@ ? "\tcmp %%%s, %%%s\n\tjnz %s # %s %s %i %i\n" : "\tcmp %%%s, %%%s\n\tjz %s # %s %s %i %i\n", @Term.node@->reg, @Term.1.node@->reg, ((@Bterm.negated2@ ^ @Bterm.negated@)) ? @Bterm.jump_false@ : @Bterm.jump_true@, @Bterm.jump_true@, @Bterm.jump_false@, @Bterm.negated2@, @Bterm.negated@);
+               @}
+
+               | '(' Subbool ')'
+               @{
+                  @i @Subbool.negated@ = @Bterm.negated@;
+                  @i @Subbool.negated2@ = @Bterm.negated2@;
+                  @i @Subbool.top_level@ = @Bterm.top_level@;
+               @}
+
+               ;
+
+Field:           Term '.' ID
+               @{
+                  @i @Field.node@ = new_node_value(OP_Field, @Term.node@, new_named_leaf(OP_ID, @ID.name@), table_lookup(@Field.symbols@, @ID.name@)==(struct symbol_t *)NULL ? 0 : table_lookup(@Field.symbols@, @ID.name@)->stack_offset, -1);
+
+                  @check check_field(@Field.symbols@, @ID.name@);
+
+                  @reg @Term.node@->reg = @Field.node@->reg; @Field.node@->kids[1]->reg = get_next_reg(@Field.node@->reg, 0); 
+               @}
+
+               ;
+
+Call:            ID '(' Exprs ')'
+               @{
+                  @i @Call.node@ = new_named_node(OP_Call, @Exprs.node@, (treenode *)NULL, @ID.name@);
+                  @i @Call.has_call@ = 1;
+
+                  @reg saved_reg = @Call.node@->reg; @Exprs.node@->reg = "rdi"; @Exprs.node@->name=@Call.node@->name;
+
+                  @codegen /* reg_return=@Call.node@->reg; function_name = @ID.name@; prepare_call(function_name); */
+               @}
+
+               | ID '(' ')'
+               @{
+                  @i @Call.node@ = new_node(OP_CallNoParam, (treenode *)NULL, (treenode *)NULL);
+                  @i @Call.has_call@ = 1;
+
+                  @codegen /* reg_return=@Call.node@->reg; do_call(@ID.name@); */
+               @}
+
+               ;
+
+Exprs:           Expr
+               @{
+                  @i @Exprs.node@ = new_node(OP_Arg, @Expr.node@, (treenode *)NULL);
+                  
+                  @reg @Expr.node@->reg = @Exprs.node@->reg;
+
+                  @codegen /* write_tree(@Expr.node@); */ /* burm_label(@Expr.node@); burm_reduce(@Expr.node@, 1); do_call(function_name); */
+               @}
+
+               | Expr ',' Exprs
+               @{
+                  @i @Exprs.node@ = new_node(OP_Exprs, new_node(OP_Arg, @Expr.node@, (treenode *)NULL), @Exprs.1.node@);
+                  @i @Exprs.has_call@ = @Exprs.1.has_call@ || @Expr.has_call@;
+
+                  @reg @Expr.node@->reg = @Exprs.node@->reg; @Exprs.1.node@->reg = get_next_param_reg(@Exprs.node@->reg); @Exprs.node@->kids[0]->name = @Exprs.node@->name; @Exprs.1.node@->name = @Exprs.node@->name;
+
+                  @codegen /* write_tree(@Expr.node@); */ /* burm_label(@Expr.node@); burm_reduce(@Expr.node@, 1); */
+               @}
+
+               ;
+
+%%
+
+extern int yylex();
+extern int yylineno;
+
+int yyerror(char *error_text) {
+       fprintf(stderr,"Line %i: %s\n",yylineno, error_text);
+       exit(2);
+}
+
+int main(int argc, char **argv) {
+       yyparse();
+       return 0;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/scanner.lex.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/scanner.lex.svn-base
new file mode 100644 (file)
index 0000000..5cf6520
--- /dev/null
@@ -0,0 +1,67 @@
+       #include <stdio.h>
+       #include <stdlib.h>
+       #include <string.h>
+       #include "parser.h"
+       #include "tree.h"
+
+KEYWORD                func|end|struct|var|if|then|else|while|do|return|or|not
+IDENTIFIER     [[:alpha:]_][[:alnum:]_]*
+NUMBER_HEX     [0-9][0-9A-Fa-f]*H
+NUMBER_DEC     [0-9]+
+WHITESPACE     [\t\n\r ]
+COMMENT_START  \(\*
+COMMENT_END    \*\)
+
+%x COMMENT
+%option yylineno
+%%
+
+{COMMENT_START}                        BEGIN(COMMENT);
+
+<COMMENT>{COMMENT_END}         BEGIN(INITIAL);
+
+<COMMENT>{COMMENT_START}       fprintf(stderr, "Possibly nested comment on line %i\n", yylineno);
+
+<COMMENT><<EOF>>               { fprintf(stderr, "Unterminated comment.\n"); exit(1); }
+
+<COMMENT>{WHITESPACE}          /* ignore */
+
+<COMMENT>.                     /* ignore everything inside comment */
+
+func                           return(FUNC);
+end                            return(END);
+struct                         return(STRUCT);
+var                            return(VAR);
+if                             return(IF);
+then                           return(THEN);
+else                           return(ELSE);
+while                          return(WHILE);
+do                             return(DO);
+return                         return(RETURN);
+or                             return(OR);
+not                            return(NOT);
+
+{IDENTIFIER}                   return(ID); @{ @ID.name@=strdup(yytext); @}
+
+{NUMBER_DEC}                   return(NUM); @{ @NUM.value@=strtol(yytext,(char **)NULL,10); @}
+{NUMBER_HEX}                   return(NUM); @{ yytext[strlen(yytext)-1]='\0'; @NUM.value@=strtol(yytext,(char **)NULL,16); @}
+                               
+\:=                            return(ASSIGN);
+>=                             return(GREATER);
+\;                             return(';');
+\.                             return('.');
+\(                             return('(');
+\)                             return(')');
+\,                             return(',');
+\-                             return('-');
+\+                             return('+');
+\*                             return('*');
+=                              return('=');
+
+{WHITESPACE}                   /* ignore */
+
+.                              { fprintf(stderr, "Lexical error on line %i\n", yylineno); exit(1); }
+
+%%
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/symbol_table.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/symbol_table.c.svn-base
new file mode 100644 (file)
index 0000000..bf66a65
--- /dev/null
@@ -0,0 +1,192 @@
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "symbol_table.h"
+
+struct symbol_t *new_table(void) {
+       return (struct symbol_t *)NULL;
+}
+
+struct symbol_t *clone_table(struct symbol_t *table) {
+       struct symbol_t *element;
+       struct symbol_t *new_tablex;
+
+       element=table;
+       new_tablex=new_table();
+       while((struct symbol_t *)NULL!=element) {
+               /* check return value */
+               if(element->param_index!=-1) {
+                       new_tablex=table_add_param(new_tablex,element->identifier,element->param_index);
+               }
+               else {
+                       new_tablex=table_add_symbol(new_tablex,element->identifier,element->type,0,element->stack_offset);
+               }
+               element=element->next;
+       }
+
+       return new_tablex;
+}
+
+struct symbol_t *table_add_symbol(struct symbol_t *table, char *identifier, short type, short check, int stack_offset) {
+       struct symbol_t *element;
+       struct symbol_t *new_element;
+
+       if(table_lookup(table,identifier)!=(struct symbol_t *)NULL) {
+               if(check) {
+                       fprintf(stderr,"Duplicate field %s.\n",identifier);
+                       exit(3);
+               }
+
+               table=table_remove_symbol(table,identifier);
+       }
+       
+       new_element=(struct symbol_t *)malloc(sizeof(struct symbol_t));
+       new_element->next=(struct symbol_t *)NULL;
+       new_element->identifier=strdup(identifier);
+       new_element->type=type;
+       new_element->stack_offset=stack_offset;
+       new_element->param_index=-1;
+
+       if((struct symbol_t *)NULL==table) {
+               return new_element;
+       }
+       element=table;
+
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+       }
+
+       element->next=new_element;
+       
+       return table;
+}
+
+struct symbol_t *table_add_param(struct symbol_t *table, char *identifier, int param_index) {
+       struct symbol_t *element;
+       struct symbol_t *new_element;
+
+       if(table_lookup(table,identifier)!=(struct symbol_t *)NULL) {
+               table=table_remove_symbol(table,identifier);
+       }
+       
+       new_element=(struct symbol_t *)malloc(sizeof(struct symbol_t));
+       new_element->next=(struct symbol_t *)NULL;
+       new_element->identifier=strdup(identifier);
+       new_element->type=SYMBOL_TYPE_PARAM;
+       new_element->param_index=param_index;
+
+       if((struct symbol_t *)NULL==table) {
+               return new_element;
+       }
+       element=table;
+
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+       }
+
+       element->next=new_element;
+       
+       return table;
+}
+
+struct symbol_t *table_lookup(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element;
+
+       element=table;
+
+       if((struct symbol_t *)NULL==table) {
+               return (struct symbol_t *)NULL;
+       }
+       
+       if(strcmp(element->identifier,identifier)==0) {
+               return element;
+       }
+       
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+               if(strcmp(element->identifier,identifier)==0) {
+                       return element;
+               }
+       }
+
+       return (struct symbol_t *)NULL;
+}
+
+struct symbol_t *table_merge(struct symbol_t *table, struct symbol_t *to_add, short check) {
+       struct symbol_t *element;
+       struct symbol_t *new_table=clone_table(table);
+       
+       element=to_add;
+       while(element!=(struct symbol_t *)NULL) {
+               if(element->param_index!=-1) {
+                       new_table=table_add_param(new_table,element->identifier,element->param_index);
+               }
+               else {
+                       new_table=table_add_symbol(new_table,element->identifier,element->type,check,element->stack_offset);
+               }
+               element=element->next;
+       }
+
+       return new_table;
+}
+
+struct symbol_t *table_remove_symbol(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element;
+       struct symbol_t *previous_element;
+       struct symbol_t *new_element;
+
+       if((struct symbol_t *)NULL==table) {
+               return table;
+       }
+
+       previous_element=(struct symbol_t *)NULL;
+       element=table;
+
+       while((struct symbol_t *)NULL!=element) {
+               if(strcmp(element->identifier,identifier)==0) {
+                       if((struct symbol_t *)NULL==previous_element) {
+                               new_element=element->next;
+                       }
+                       else {
+                               previous_element->next=element->next;
+                               new_element=table;
+                       }
+                       (void)free(element->identifier);
+                       (void)free(element);
+                       return new_element;
+               }
+               previous_element=element;
+               element=element->next;
+       }
+
+       return table;
+}
+
+void check_variable(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element=table_lookup(table,identifier);
+       if(element!=(struct symbol_t *)NULL) {
+               if(element->type!=SYMBOL_TYPE_VAR && element->type!=SYMBOL_TYPE_PARAM) {
+                       fprintf(stderr,"Identifier %s not a variable.\n",identifier);
+                       exit(3);
+               }
+       }
+       else {
+               fprintf(stderr,"Unknown identifier %s.\n",identifier);
+               exit(3);
+       }
+}
+
+void check_field(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element=table_lookup(table,identifier);
+       if(element!=(struct symbol_t *)NULL) {
+               if(element->type!=SYMBOL_TYPE_FIELD) {
+                       fprintf(stderr,"Identifier %s not a variable.\n",identifier);
+                       exit(3);
+               }
+       }
+       else {
+               fprintf(stderr,"Unknown identifier %s.\n",identifier);
+               exit(3);
+       }
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/symbol_table.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/symbol_table.h.svn-base
new file mode 100644 (file)
index 0000000..f8f3687
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef SYMBOL_TABLE_H
+#define SYMBOL_TABLE_H
+
+#define SYMBOL_TYPE_FIELD 1
+#define SYMBOL_TYPE_VAR 2
+#define SYMBOL_TYPE_PARAM 3
+
+struct symbol_t {
+       char *identifier;
+       struct symbol_t *next;
+       short type;
+       int stack_offset;
+       int param_index; /* -1 if not a parameter */
+};
+
+struct symbol_t *clone_table(struct symbol_t *table);
+struct symbol_t *new_table(void);
+struct symbol_t *table_add_symbol(struct symbol_t *table, char *identifier, short type, short check, int stack_offset);
+struct symbol_t *table_add_param(struct symbol_t *table, char *identifier, int param_index);
+struct symbol_t *table_lookup(struct symbol_t *table, char *identifier);
+struct symbol_t *table_remove_symbol(struct symbol_t *table, char *identifier);
+struct symbol_t *table_merge(struct symbol_t *table, struct symbol_t *to_add, short check);
+void check_variable(struct symbol_t *table, char *identifier);
+void check_field(struct symbol_t *table, char *identifier);
+
+#endif /* SYMBOL_TABLE_H */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/test.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/test.c.svn-base
new file mode 100644 (file)
index 0000000..7b38912
--- /dev/null
@@ -0,0 +1,187 @@
+ #include <stdio.h>
+
+extern long f1(long a);
+extern long f2(long a);
+extern long f3(long a);
+extern long f4(long a);
+extern long f5(long a);
+extern long f6(long a);
+extern long f7(long a);
+extern long f8(long a);
+extern long f9(long a);
+extern long f10(long a);
+
+extern long g1(long a, long b);
+extern long g2(long a, long b);
+extern long g3(long a, long b);
+extern long g4(long a, long b);
+extern long g5(long a, long b);
+extern long g6(long a, long b);
+extern long g7(long a, long b);
+extern long g8(long a, long b);
+extern long g9(long a, long b);
+extern long g10(long a, long b);
+extern long g11(long a, long b);
+extern long g12(long a, long b);
+
+extern long h1(long a, long b, long c, long d);
+extern long h2(long a, long b, long c, long d);
+extern long h3(long a, long b, long c, long d);
+extern long h4(long a, long b, long c, long d);
+extern long h5(long a, long b, long c, long d);
+extern long h6(long a, long b, long c, long d);
+extern long h7(long a, long b, long c, long d);
+extern long h8(long a, long b, long c, long d);
+extern long h9(long a, long b, long c, long d);
+extern long h10(long a, long b, long c, long d);
+extern long h11(long a, long b, long c, long d);
+extern long h12(long a, long b, long c, long d);
+extern long h13(long a, long b, long c, long d);
+extern long h14(long a, long b, long c, long d);
+extern long h15(long a, long b, long c, long d);
+extern long h16(long a, long b, long c, long d);
+extern long h17(long a, long b, long c, long d);
+extern long h18(long a, long b, long c, long d);
+extern long h19(long a, long b, long c, long d);
+extern long h20(long a, long b, long c, long d);
+extern long h21(long a, long b, long c, long d);
+extern long h22(long a, long b, long c, long d);
+extern long h23(long a, long b, long c, long d);
+extern long h24(long a, long b, long c, long d);
+
+int check_arg1(char *name, long (*function)(long), long ret0, long ret1, long ret2) {
+       int ret;
+       ret=function(0)==ret0 && function(1)==ret1 && function(2)==ret2;
+       printf("%s: %li/%li, %li/%li, %li/%li - %s\n", name,function(0), ret0, function(1), ret1, function(2), ret2, ret ? "ok" : "FAIL");
+       return ret;
+}
+
+int check_arg2(char *name, long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       printf("%s - ", name);
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+                       printf("%li/%li ", function(a,b),blubb[a][b]);
+               }
+       }
+       printf("- %s\n", ret ? "ok" : "FAIL");
+       return ret;
+}
+
+int check_arg4(char *name, long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       printf("%s - ", name);
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                                       printf("%li/%li ", function(a,b,c,d),blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       printf("- %s\n", ret ? "ok" : "FAIL");
+       return ret;
+}
+
+int main(int argc, char **argv) {
+       int ret;
+
+       long ret_g1[2][2]={{1,1},{1,0}};
+       long ret_g2[2][2]={{1,0},{1,1}};
+       long ret_g3[2][2]={{1,1},{0,1}};
+       long ret_g4[2][2]={{0,1},{1,1}};
+       long ret_g5[2][2]={{0,0},{0,1}};
+       long ret_g6[2][2]={{0,1},{0,0}};
+       long ret_g7[2][2]={{0,0},{1,0}};
+       long ret_g8[2][2]={{1,0},{0,0}};
+       long ret_g9[2][2]={{1,1},{1,0}};
+       long ret_g10[2][2]={{1,0},{1,1}};
+       long ret_g11[2][2]={{1,1},{0,1}};
+       long ret_g12[2][2]={{0,1},{1,1}};
+
+       long ret_h1[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+       long ret_h2[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h3[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+       long ret_h4[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+       long ret_h5[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+       long ret_h6[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h7[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+       long ret_h8[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+       long ret_h9[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,1}}}};
+       long ret_h10[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,1}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+       long ret_h11[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,1}},{{0,0},{0,0}}}};
+       long ret_h12[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,1},{0,0}}}};
+       long ret_h13[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{1,0}}}};
+       long ret_h14[2][2][2][2]={{{{0,0},{0,1}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+       long ret_h15[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{1,0},{0,0}}}};
+       long ret_h16[2][2][2][2]={{{{1,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+       long ret_h17[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+       long ret_h18[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h19[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+       long ret_h20[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+       long ret_h21[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+       long ret_h22[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h23[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+       long ret_h24[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+       ret=check_arg1("f1",f1,0,1,1);
+       ret&=check_arg1("f2",f2,0,0,1);
+       ret&=check_arg1("f3",f3,1,0,0);
+       ret&=check_arg1("f4",f4,0,1,1);
+       ret&=check_arg1("f5",f5,0,0,1);
+       ret&=check_arg1("f6",f6,1,0,0);
+       ret&=check_arg1("f7",f7,0,1,1);
+       ret&=check_arg1("f8",f8,0,0,1);
+       ret&=check_arg1("f9",f9,1,1,1);
+       ret&=check_arg1("f10",f10,1,0,0);
+
+       ret&=check_arg2("g1",g1,ret_g1);
+       ret&=check_arg2("g2",g2,ret_g2);
+       ret&=check_arg2("g3",g3,ret_g3);
+       ret&=check_arg2("g4",g4,ret_g4);
+       ret&=check_arg2("g5",g5,ret_g5);
+       ret&=check_arg2("g6",g6,ret_g6);
+       ret&=check_arg2("g7",g7,ret_g7);
+       ret&=check_arg2("g8",g8,ret_g8);
+       ret&=check_arg2("g9",g9,ret_g9);
+       ret&=check_arg2("g10",g10,ret_g10);
+       ret&=check_arg2("g11",g11,ret_g11);
+       ret&=check_arg2("g12",g12,ret_g12);
+
+       ret&=check_arg4("h1",h1,ret_h1);
+       ret&=check_arg4("h2",h2,ret_h2);
+       ret&=check_arg4("h3",h3,ret_h3);
+       ret&=check_arg4("h4",h4,ret_h4);
+       ret&=check_arg4("h5",h5,ret_h5);
+       ret&=check_arg4("h6",h6,ret_h6);
+       ret&=check_arg4("h7",h7,ret_h7);
+       ret&=check_arg4("h8",h8,ret_h8);
+       ret&=check_arg4("h9",h9,ret_h9);
+       ret&=check_arg4("h10",h10,ret_h10);
+       ret&=check_arg4("h11",h11,ret_h11);
+       ret&=check_arg4("h12",h12,ret_h12);
+       ret&=check_arg4("h13",h13,ret_h13);
+       ret&=check_arg4("h14",h14,ret_h14);
+       ret&=check_arg4("h15",h15,ret_h15);
+       ret&=check_arg4("h16",h16,ret_h16);
+       ret&=check_arg4("h17",h17,ret_h17);
+       ret&=check_arg4("h18",h18,ret_h18);
+       ret&=check_arg4("h19",h19,ret_h19);
+       ret&=check_arg4("h20",h20,ret_h20);
+       ret&=check_arg4("h21",h21,ret_h21);
+       ret&=check_arg4("h22",h22,ret_h22);
+       ret&=check_arg4("h23",h23,ret_h23);
+       ret&=check_arg4("h24",h24,ret_h24);
+
+       return !ret;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/test.input.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/test.input.svn-base
new file mode 100644 (file)
index 0000000..54a2eae
--- /dev/null
@@ -0,0 +1,55 @@
+func f1(a) if a=0 then return 0; else return 1; end; end;
+func f2(a) if a=0 or a=1 then return 0; else return 1; end; end;
+func f3(a) if not (a=0) then return 0; else return 1; end; end;
+func f4(a) if (a=0) then return 0; else return 1; end; end;
+func f5(a) if (a=0 or a=1) then return 0; else return 1; end; end;
+func f6(a) if (not (a=0)) then return 0; else return 1; end; end;
+func f7(a) if not (not (a=0)) then return 0; else return 1; end; end;
+func f8(a) if not (not (a=0 or a=1)) then return 0; else return 1; end; end;
+func f9(a) if not ((not (a=0)) or (not (a=1))) then return 0; else return 1; end; end;
+func f10(a) if (not (not (not (a=0)))) then return 0; else return 1; end; end;
+
+func g1(a,b) if (a=0 or b=0) then return 1; else return 0; end; end;
+func g2(a,b) if ((not (a=0)) or b=0) then return 1; else return 0; end; end;
+func g3(a,b) if (a=0 or (not (b=0))) then return 1; else return 0; end; end;
+func g4(a,b) if ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
+func g5(a,b) if not (a=0 or b=0) then return 1; else return 0; end; end;
+func g6(a,b) if not ((not (a=0)) or b=0) then return 1; else return 0; end; end;
+func g7(a,b) if not (a=0 or (not (b=0))) then return 1; else return 0; end; end;
+func g8(a,b) if not ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
+func g9(a,b) if not (not (a=0 or b=0)) then return 1; else return 0; end; end;
+func g10(a,b) if not (not ((not (a=0)) or b=0)) then return 1; else return 0; end; end;
+func g11(a,b) if not (not (a=0 or (not (b=0)))) then return 1; else return 0; end; end;
+func g12(a,b) if not (not ((not (a=0)) or (not (b=0)))) then return 1; else return 0; end; end;
+
+func h1(a,b,c,d) if (a=0 or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h2(a,b,c,d) if ((not (a=0)) or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h3(a,b,c,d) if (a=0 or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h4(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or d=0) then return 1; else return 0; end; end;
+func h5(a,b,c,d) if (a=0 or b=0) or (c=0 or (not (d=0))) then return 1; else return 0; end; end;
+func h6(a,b,c,d) if ((not (a=0)) or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h7(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
+func h8(a,b,c,d) if ((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
+func h9(a,b,c,d) if not ((a=0 or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h10(a,b,c,d) if not (((not (a=0)) or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h11(a,b,c,d) if not ((a=0 or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h12(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or d=0)) then return 1; else return 0; end; end;
+func h13(a,b,c,d) if not ((a=0 or b=0) or (c=0 or (not (d=0)))) then return 1; else return 0; end; end;
+func h14(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h15(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
+func h16(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
+func h17(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h18(a,b,c,d) if not (not (((not (a=0)) or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h19(a,b,c,d) if not (not ((a=0 or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h20(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or d=0))) then return 1; else return 0; end; end;
+func h21(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or (not (d=0))))) then return 1; else return 0; end; end;
+func h22(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h23(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
+func h24(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
+
+func g(a) if (a=0 or a=1) then return 0; else return 1; end; end;
+func h(a,b) if not (a=0 or b=0) then return 1; else return 0; end; end;
+func i(a) if not (not (a=0 or a=1)) then return 0; else return 1; end; end;
+func j(a,b) if not ((not a=0) or (not b=0)) then return 0; else return 1; end; end;
+func k(a,b,c,d) if not ((not (a=0 or b=0)) or (not (c=0 or d=0))) then return 1; else return 0; end; end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/tree.c.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/tree.c.svn-base
new file mode 100644 (file)
index 0000000..c3e0a44
--- /dev/null
@@ -0,0 +1,157 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "tree.h"
+#include "code_gen.h"
+
+/* new_node: create "standard node" with one or two children and
+ * given operation
+ */
+treenode *new_node(int op, treenode *left, treenode *right) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+
+#ifdef DEBUG
+       printf("new_node: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=(char *)NULL;
+
+       return new;
+}
+
+/* new_node_value: create "standard node" with one or two children and
+ * given operation and the given value
+ */
+treenode *new_node_value(int op, treenode *left, treenode *right, long value, int param) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+
+#ifdef DEBUG
+       printf("new_node: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=(char *)NULL;
+       new->value=value;
+       new->param_index=param;
+
+       return new;
+}
+
+/* new_leaf: create leaf - node with no children */
+treenode *new_leaf(int op) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_leaf: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=(char *)NULL;
+
+       return new;
+}
+
+/* new_named_leaf: create leaf with name (used for identifier or
+ * value of number)
+ */
+treenode *new_named_leaf(int op, char *name) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_leaf: %i (%s), %s\n",op,rule_names[op],name);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=name;
+
+       return new;
+}
+
+/* new_named_leaf_value: create leaf with name (used for identifier or
+ * value of number)
+ */
+treenode *new_named_leaf_value(int op, char *name, long value, int param) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_leaf_value: %i (%s), %s, %li\n",op,rule_names[op],name,value);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=name;
+       new->value=value;
+       new->param_index=param;
+
+       return new;
+}
+
+/* new_named_node: create node with one or two children and a name (can be
+ * used for storing a procedure's name)
+ */
+treenode *new_named_node(int op, treenode *left, treenode *right, char *name) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_node: %i (%s), %s\n",op,rule_names[op],name);
+#endif
+       
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=name;
+
+       return new;
+}
+
+void write_indent(int indent) {
+       int a;
+       for(a=0;a<indent;a++) {
+               printf("|");
+       }
+}
+
+/* write_tree: display the tree generated by the attributed grammar; this tree willk
+ * be traversed by iburg
+ */
+void write_tree(treenode *node, int indent) {
+       write_indent(indent);
+       printf("%s, %s, %s\n",rule_names[node->op],node->name,node->reg);
+       if(node->kids[0]!=(treenode *)NULL || node->kids[1]!=(treenode *)NULL) {
+               if(node->kids[0]!=(treenode *)NULL) {
+                       write_tree(node->kids[0], indent+1);
+               }
+               if(node->kids[1]!=(treenode *)NULL) {
+                       write_tree(node->kids[1], indent+1);
+               }
+       }
+}
+
+treenode *new_number_leaf(long value) {
+       treenode *node;
+
+        if(value==0) {
+               node=new_leaf(OP_Zero);
+       }
+       else if(value==1) {
+               node=new_leaf(OP_One);
+       }
+       else {
+               node=new_leaf(OP_Number);
+        }
+
+       node->value=value;
+
+       return node;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/tree.h.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/.svn/text-base/tree.h.svn-base
new file mode 100644 (file)
index 0000000..7ac2789
--- /dev/null
@@ -0,0 +1,98 @@
+#ifndef __TREE_H_
+#define __TREE_H_
+
+#ifndef CODE
+typedef struct burm_state *STATEPTR_TYPE; 
+#endif
+
+enum {
+       OP_Not=1,
+       OP_Negation,
+       OP_Addition,
+       OP_Multiplication,
+       OP_Disjunction,
+       OP_Greater,
+       OP_Equal,
+       OP_ID,
+       OP_Number,
+       OP_Field,
+       OP_Return,
+       OP_Zero,
+       OP_One,
+       OP_Exprs,
+       OP_Call,
+       OP_Assign,
+       OP_If,
+       OP_Stats,
+       OP_Empty,
+       OP_Ifstats,
+       OP_While,
+       OP_CallNoParam,
+       OP_Arg
+};
+
+static char rule_names[100][100]={
+       "",
+        "OP_Not",
+        "OP_Negation",
+        "OP_Addition",
+        "OP_Multiplication",
+        "OP_Disjunction",
+        "OP_Greater",
+        "OP_Equal",
+        "OP_ID",
+        "OP_Number",
+        "OP_Field",
+       "OP_Return",
+       "OP_Zero",
+       "OP_One",
+       "OP_Exprs",
+       "OP_Call",
+       "OP_Assign",
+       "OP_If",
+       "OP_Stats",
+       "OP_Empty",
+       "OP_Ifstats",
+       "OP_While",
+       "OP_CallNoParam",
+       "OP_Arg"
+};
+         
+
+/* struct for the tree build by ox for iburg */
+typedef struct treenode {
+       int op;
+       struct treenode *kids[2];
+       STATEPTR_TYPE label;
+       char *name;
+       long value;
+       char *reg;
+       struct treenode *parent;
+       int skip_reg;
+       int param_index; /* -1 if not a parameter */
+} treenode;
+
+typedef treenode *treenodep;
+
+/* macros for iburg being able to traverse the tree */
+#define NODEPTR_TYPE           treenodep
+#define OP_LABEL(p)            ((p)->op)
+#define LEFT_CHILD(p)          ((p)->kids[0])
+#define RIGHT_CHILD(p)         ((p)->kids[1])
+#define STATE_LABEL(p)         ((p)->label)
+#define PANIC                  printf
+
+/* see tree.c for description about these procedures */
+treenode *new_node(int op, treenode *left, treenode *right);
+treenode *new_node_value(int op, treenode *left, treenode *right, long value, int param);
+treenode *new_leaf(int op);
+treenode *new_number_leaf(long value);
+treenode *new_named_leaf(int op, char *name);
+treenode *new_named_leaf_value(int op, char *name, long value, int param);
+treenode *new_named_node(int op, treenode *left, treenode *right, char *name);
+
+void write_indent(int indent);
+void write_tree(treenode *node, int indent);
+
+#endif /* __TREE_H */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/Makefile b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/Makefile
new file mode 100644 (file)
index 0000000..a3bcbd4
--- /dev/null
@@ -0,0 +1,38 @@
+all: gesamt
+
+scanner.c: oxout.l
+       flex -oscanner.c oxout.l
+
+scanner.o: scanner.c parser.h symbol_table.h
+       gcc -g -c -ansi -pedantic scanner.c -D_GNU_SOURCE
+
+gesamt: scanner.o parser.o symbol_table.o code_gen.o tree.o code.o
+       gcc -o gesamt symbol_table.o scanner.o parser.o code_gen.o tree.o code.o -lfl
+
+tree.o: tree.c tree.h
+       gcc -g -c -ansi -pedantic -Wall tree.c
+
+code_gen.o: code_gen.c code_gen.h
+       gcc -g -c -ansi -pedantic -Wall code_gen.c -D_GNU_SOURCE
+
+symbol_table.o: symbol_table.c symbol_table.h
+       gcc -g -c -ansi -pedantic -Wall symbol_table.c -D_GNU_SOURCE
+
+parser.o: parser.c symbol_table.h code_gen.h tree.h
+       gcc -g -c -ansi -pedantic parser.c
+
+parser.c parser.h: oxout.y
+       yacc -d oxout.y -o parser.c
+
+oxout.y oxout.l: parser.y scanner.lex
+       ox parser.y scanner.lex
+
+code.o: code.c tree.h
+       gcc -g -ansi -c code.c
+
+code.c: code.bfe
+       bfe < code.bfe | iburg > code.c
+
+clean:
+       rm -f gesamt scanner.o scanner.c parser.h parser.c parser.o oxout.y oxout.l symbol_table.o code_gen.o tree.o code.c code.o testgesamt* a.out
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/code.bfe b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/code.bfe
new file mode 100755 (executable)
index 0000000..69de53b
--- /dev/null
@@ -0,0 +1,88 @@
+%{
+/* vim: filetype=c
+ */
+#define CODE
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+
+#include "tree.h"
+#include "code_gen.h"
+
+/* TODO (-a)+b */
+/* TODO imul -> imulq, add -> addq */
+/* TODO bugs - hopefully fixed:
+ * func f(a,b,c,d) return ((a+1)+(b+1))+((c+1)+(d+1)); end;
+ * func f(a,b,c,d) var b:=a; var c:=b; var d:=c; return a+b+c+d; end;
+ * mul, add etc. with direct memory access
+ */
+/* TODO immediate values in assignments */
+/* TODO assignment with immediate value/variable on RHS */
+/* TODO immediate values in boolean expressions */
+/* TODO optimize boolean expressions */
+/* FIXME if_then label not inserted */
+%}
+
+%start stat
+%term OP_Not=1 OP_Negation=2 OP_Addition=3 OP_Multiplication=4 OP_Disjunction=5 OP_Greater=6 OP_Equal=7 OP_ID=8 OP_Number=9 OP_Field=10 OP_Return=11 OP_Zero=12 OP_One=13 OP_Exprs=14 OP_Call=15 OP_Assign=16 OP_If=17 OP_Stats=18 OP_Empty=19 OP_Ifstats=20 OP_While=21 OP_CallNoParam=22 OP_Arg=23
+
+%%
+
+stat:  ret                                     # 0 #
+stat:  assign                                  # 0 #
+stat:  bexpr                                   # 0 #
+stat:  expr                                    # 0 #
+
+assign:        OP_Assign(OP_ID, expr)                  # 1 # if(bnode->kids[0]->param_index!=-1 && !call) { printf("\tmovq %%%s, %%%s /* x */\n", bnode->reg, get_param_reg(bnode->kids[0]->param_index)); } else if(bnode->kids[0]->param_index!=-1 && call) { printf("\tmovq %%%s, %i(%%rsp) /* y */\n", bnode->reg, 8*(variables-bnode->kids[0]->param_index)); } else { printf("\tmovq %%%s, %i(%%rsp) /* z */\n", bnode->reg, bnode->kids[0]->value); }
+assign:        OP_Assign(OP_Field(expr,OP_ID), expr)   # 1 # printf("\tmovq %%%s, %li(%%%s)\n", bnode->kids[1]->reg, 8*bnode->kids[0]->value, bnode->kids[0]->reg); 
+
+ret:   OP_Return(expr)                         # 1 # move(bnode->reg, "rax"); ret(); 
+
+expr:  OP_ID                                   # 1 # if(bnode->param_index!=-1 && !call) { move(get_param_reg(bnode->param_index), bnode->reg); } else if(bnode->param_index!=-1 && call) { printf("\tmov %i(%%rsp), %%%s\n", 8*(variables-bnode->param_index), bnode->reg); } else { printf("\tmovq %i(%%rsp), %%%s\n", bnode->value, bnode->reg); }
+expr:  imm                                     # 1 # printf("\tmovq $%li, %%%s\n", bnode->value, bnode->reg);
+expr:  call                                    # 0 #
+expr:  OP_Negation(expr)                       # 1 # printf("\tnegq %%%s\n", bnode->reg);
+expr:  OP_Addition(expr,expr)                  # 1 # printf("\taddq %%%s, %%%s\n", bnode->kids[1]->reg, bnode->kids[0]->reg);
+expr:  OP_Addition(imm,expr)                   # 1 # printf("\taddq $%li, %%%s\n", bnode->kids[0]->value, bnode->kids[1]->reg); move(bnode->kids[1]->reg, bnode->reg);
+expr:  OP_Addition(expr,imm)                   # 1 # if(bnode->kids[0]->op==OP_ID) { move(bnode->kids[0]->reg, bnode->reg); printf("\taddq $%li, %%%s /* x2 */\n", bnode->kids[1]->value, bnode->reg); } else { printf("\taddq $%li, %%%s /* y2 */\n", bnode->kids[1]->value, bnode->kids[0]->reg); }
+expr:  OP_Multiplication(expr,expr)            # 1 # printf("\timulq %%%s, %%%s\n", bnode->kids[1]->reg, bnode->kids[0]->reg);
+expr:  OP_Multiplication(imm,expr)             # 1 # printf("\timulq $%li, %%%s\n", bnode->kids[0]->value, bnode->kids[1]->reg); move(bnode->kids[1]->reg, bnode->reg);
+expr:  OP_Multiplication(expr,imm)             # 1 # if(bnode->kids[0]->op==OP_ID) { move(bnode->kids[0]->reg, bnode->reg); printf("\timulq $%li, %%%s\n", bnode->kids[1]->value, bnode->reg); } else { printf("\timulq $%li, %%%s\n", bnode->kids[1]->value, bnode->kids[0]->reg); }
+expr:  OP_Field(expr,OP_ID)                    # 2 # printf("\tmovq %li(%%%s), %%%s\n", 8*bnode->value, bnode->kids[0]->reg, bnode->reg);
+expr:  OP_Field(imm,OP_ID)                     # 1 # printf("\tmovq %li, %%%s\n", bnode->kids[0]->value+bnode->value*8, bnode->reg);
+
+call:  OP_Call(exprs)                          # 0 # prepare_call(bnode->name, bnode->reg); /* reg_return=bnode->reg; */ do_call(bnode->name, bnode->reg);
+call:  OP_CallNoParam                          # 0 # # prepare_call(bnode->name, bnode->reg); /* reg_return=bnode->reg; */ /* prepare_call(bnode->name); */ do_call(bnode->name, bnode->reg);
+
+exprs: OP_Arg(expr)                            # 0 # /* reg_return=bnode->reg; function_name=bnode->name; */ /* prepare_call(bnode->name); */
+exprs: OP_Exprs(exprs,exprs)                   # 0 #
+
+zero:  OP_Negation(zero)                       # 0 #
+zero:  OP_Zero                                 # 0 #
+zero:  OP_Multiplication(zexpr,zero)           # 0 #
+zero:  OP_Multiplication(zero,zexpr)           # 0 #
+
+zexpr: zero                                    # 0 #
+zexpr: imm                                     # 0 #
+zexpr: OP_Negation(zexpr)                      # 0 #
+zexpr: OP_Addition(zexpr,zexpr)                # 0 #
+zexpr: OP_Multiplication(zexpr,zexpr)          # 0 #
+zexpr: OP_Field(zexpr,OP_ID)                   # 0 #
+zexpr: OP_ID                                   # 0 #
+
+imm:   zero                                    # 0 #
+imm:   OP_Negation(imm)                        # 0 # bnode->value=-bnode->kids[0]->value;
+imm:   OP_Addition(imm,imm)                    # 0 # bnode->value=bnode->kids[0]->value+bnode->kids[1]->value;
+imm:   OP_Multiplication(imm,imm)              # 0 # bnode->value=bnode->kids[0]->value*bnode->kids[1]->value;
+imm:   OP_Number                               # 0 #
+imm:   OP_Zero                                 # 0 #
+imm:   OP_One                                  # 0 #
+
+bexpr: OP_Disjunction(bexpr,bexpr)             # 0 #
+bexpr: OP_Not(bexpr)                           # 0 #
+bexpr: OP_Greater(expr,expr)                   # 0 #
+bexpr: OP_Equal(expr,expr)                     # 0 #
+
+%%
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/code_gen.c b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/code_gen.c
new file mode 100644 (file)
index 0000000..179dca5
--- /dev/null
@@ -0,0 +1,104 @@
+#include <stdio.h>
+#include <string.h>
+#include "code_gen.h"
+
+int variables, call;
+/* char *function_name; */
+/* char *reg_return; */
+extern char *saved_reg;
+
+char *reg_names[]={"rax", "r10", "r11", "r9", "r8", "rcx", "rdx", "rsi", "rdi"};
+
+void function_header(char *name, int vars, int has_call, int num_pars) {
+       int a;
+
+       variables = vars+(has_call ? num_pars : 0);
+       printf("# setting call to %i\n", has_call);
+       call = has_call;
+
+       printf("\t.globl %s\n\t.type %s, @function\n%s:\n", name, name, name);
+       printf("# %i %i %i %i\n",vars,has_call,num_pars,(has_call ? num_pars : 0));
+       if(vars+(has_call ? num_pars : 0)>0) {
+               printf("\tpushq %%rbp\n\tmovq %%rsp, %%rbp\n\tsubq $%i, %%rsp\n", 8*(vars+num_pars));
+               if(num_pars>0 && has_call) {
+                       for(a=0;a<num_pars;a++) {
+                               printf("\tmovq %%%s, %i(%%rsp)\n",get_param_reg(a+1),8*(vars+num_pars-a-1));
+                       }
+               }
+       }
+}
+
+void prepare_call(char *function, char *reg_return) {
+       int a;
+       /* TODO don't save all registers */
+       for(a=0;a<9;a++) {
+               printf("\tpushq %%%s\n",reg_names[a]);
+       }
+}
+
+void do_call(char *function, char *reg_return) {
+       int a;
+       /* TODO don't restore all registers */
+       printf("\tcall %s\n", function);
+       move("rax",reg_return);
+       /* TODO return value? */
+       for(a=8;a>=0;a--) {
+               if(strcmp(reg_return,reg_names[a])) {
+                       printf("\tpopq %%%s\n",reg_names[a]);
+               }
+               else {
+                       printf("\taddq $8, %%rsp\n");
+               }
+       }
+}
+
+char *get_next_reg(char *name, int skip_reg) {
+       int index, a;
+       if(name==(char *)NULL) {
+               index=0;
+       }
+       else {
+               for(a=0;a<9;a++) {
+                       if(!strcmp(name,reg_names[a])) {
+                               index=a+1;
+                               break;
+                       }
+               }
+       }
+       if(skip_reg) {
+               index++;
+       }
+       if(index>8) {
+               return saved_reg;
+       }
+       return reg_names[index];
+}
+
+char *get_next_param_reg(char *reg) {
+       int a=1;
+       while(1) {
+               if(strcmp(get_param_reg(a),reg)==0) {
+                       return get_param_reg(a+1);
+               }
+               a++;
+       }
+}
+
+char *get_param_reg(long number) {
+       char *reg_names[]={"rdi", "rsi", "rdx", "rcx", "r8", "r9"};
+       return reg_names[number-1];
+}
+
+void ret(void) {
+       if(variables>0) {
+               printf("\tleave\n");
+       }
+       printf("\tret\n");
+}
+
+void move(char *src, char *dst) {
+       if(strcmp(src,dst)) {
+               printf("\tmovq %%%s, %%%s\n",src,dst);
+       }
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/code_gen.h b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/code_gen.h
new file mode 100644 (file)
index 0000000..41ef621
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef _CODE_GEN_H_
+#define _CODE_GEN_H_
+
+void function_header(char *name, int vars, int has_call, int num_param);
+char *get_next_reg(char *name, int skip_reg);
+char *get_next_param_reg(char *reg);
+char *get_param_reg(long number);
+void ret(void);
+void move(char *src, char *dest);
+void do_call(char *function, char *reg_return);
+void prepare_call(char *function, char *reg_return);
+
+/* extern char *function_name; */
+extern int call, variables;
+/* extern char *reg_return; */
+
+#endif /* _CODE_GEN_H_ */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/optfib.s b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/optfib.s
new file mode 100644 (file)
index 0000000..712bb1a
--- /dev/null
@@ -0,0 +1,351 @@
+       .text
+# setting call to 1
+       .globl optfib
+       .type optfib, @function
+optfib:
+# 2 1 1 1
+       pushq %rbp
+       movq %rsp, %rbp
+       subq $24, %rsp
+       movq %rdi, 16(%rsp)
+       movq $5000000, %rdi
+       pushq %rax
+       pushq %r10
+       pushq %r11
+       pushq %r9
+       pushq %r8
+       pushq %rcx
+       pushq %rdx
+       pushq %rsi
+       pushq %rdi
+       call sqr
+       popq %rdi
+       popq %rsi
+       popq %rdx
+       popq %rcx
+       popq %r8
+       popq %r9
+       popq %r11
+       popq %r10
+       addq $8, %rsp
+       movq %rax, 0(%rsp) /* z */
+       movq 0(%rsp), %rdi
+       addq $1000000, %rdi
+       movq $2, %rsi
+       pushq %rax
+       pushq %r10
+       pushq %r11
+       pushq %r9
+       pushq %r8
+       pushq %rcx
+       pushq %rdx
+       pushq %rsi
+       pushq %rdi
+       call div
+       movq %rax, %rdi
+       addq $8, %rsp
+       popq %rsi
+       popq %rdx
+       popq %rcx
+       popq %r8
+       popq %r9
+       popq %r11
+       popq %r10
+       popq %rax
+       mov 16(%rsp), %rsi
+       pushq %rax
+       pushq %r10
+       pushq %r11
+       pushq %r9
+       pushq %r8
+       pushq %rcx
+       pushq %rdx
+       pushq %rsi
+       pushq %rdi
+       call power
+       movq %rax, %rdi
+       addq $8, %rsp
+       popq %rsi
+       popq %rdx
+       popq %rcx
+       popq %r8
+       popq %r9
+       popq %r11
+       popq %r10
+       popq %rax
+       imulq $1000000, %rdi
+       movq 0(%rsp), %rsi
+       pushq %rax
+       pushq %r10
+       pushq %r11
+       pushq %r9
+       pushq %r8
+       pushq %rcx
+       pushq %rdx
+       pushq %rsi
+       pushq %rdi
+       call div
+       popq %rdi
+       popq %rsi
+       popq %rdx
+       popq %rcx
+       popq %r8
+       popq %r9
+       popq %r11
+       popq %r10
+       addq $8, %rsp
+       addq $500000, %rax
+       movq %rax, 8(%rsp) /* z */
+       movq 8(%rsp), %rdi
+       movq $1000000, %rsi
+       pushq %rax
+       pushq %r10
+       pushq %r11
+       pushq %r9
+       pushq %r8
+       pushq %rcx
+       pushq %rdx
+       pushq %rsi
+       pushq %rdi
+       call div
+       popq %rdi
+       popq %rsi
+       popq %rdx
+       popq %rcx
+       popq %r8
+       popq %r9
+       popq %r11
+       popq %r10
+       addq $8, %rsp
+       leave
+       ret
+# setting call to 0
+       .globl divslow
+       .type divslow, @function
+divslow:
+# 1 0 2 0
+       pushq %rbp
+       movq %rsp, %rbp
+       subq $24, %rsp
+       movq $1, %rax
+       movq %rax, 0(%rsp) /* z */
+do_start1:
+       movq %rdi, %rax
+       movq %rsi, %r10
+       movq 0(%rsp), %r11
+       imulq %r11, %r10
+       cmp %r10, %rax
+       jns do_enter1 # do_enter1 do_end1 0 0
+       jmp do_end1 # foo1
+do_enter1:
+       movq 0(%rsp), %r10
+       addq $1, %r10
+       movq %r10, 0(%rsp) /* z */
+       jmp do_start1
+do_end1:
+       movq 0(%rsp), %rax
+       addq $-1, %rax
+       leave
+       ret
+# setting call to 1
+       .globl div
+       .type div, @function
+div:
+# 2 1 2 2
+       pushq %rbp
+       movq %rsp, %rbp
+       subq $32, %rsp
+       movq %rdi, 24(%rsp)
+       movq %rsi, 16(%rsp)
+       movq $1, %rax
+       movq %rax, 0(%rsp) /* z */
+       movq $1000000, %rax
+       movq %rax, 8(%rsp) /* z */
+do_start2:
+       movq 8(%rsp), %rax
+       movq $1, %r10
+       cmp %r10, %rax
+       jns do_enter2 # do_enter2 do_end2 0 0
+       jmp do_end2 # foo1
+do_enter2:
+do_start3:
+       mov 24(%rsp), %rax
+       mov 16(%rsp), %r10
+       movq 0(%rsp), %r11
+       imulq %r11, %r10
+       cmp %r10, %rax
+       jns do_enter3 # do_enter3 do_end3 0 0
+       jmp do_end3 # foo1
+do_enter3:
+       movq 8(%rsp), %r10
+       movq 0(%rsp), %r11
+       addq %r11, %r10
+       movq %r10, 0(%rsp) /* z */
+       jmp do_start3
+do_end3:
+       movq 8(%rsp), %r10
+       negq %r10
+       movq 0(%rsp), %r11
+       addq %r11, %r10
+       movq %r10, 0(%rsp) /* z */
+       movq 8(%rsp), %rdi
+       movq $2, %rsi
+       pushq %rax
+       pushq %r10
+       pushq %r11
+       pushq %r9
+       pushq %r8
+       pushq %rcx
+       pushq %rdx
+       pushq %rsi
+       pushq %rdi
+       call divslow
+       movq %rax, %r10
+       popq %rdi
+       popq %rsi
+       popq %rdx
+       popq %rcx
+       popq %r8
+       popq %r9
+       popq %r11
+       addq $8, %rsp
+       popq %rax
+       movq %r10, 8(%rsp) /* z */
+       jmp do_start2
+do_end2:
+       movq 0(%rsp), %rax
+       leave
+       ret
+# setting call to 1
+       .globl power
+       .type power, @function
+power:
+# 1 1 2 2
+       pushq %rbp
+       movq %rsp, %rbp
+       subq $24, %rsp
+       movq %rdi, 16(%rsp)
+       movq %rsi, 8(%rsp)
+       mov 8(%rsp), %rax
+       movq $0, %r10
+       cmp %rax, %r10
+       jz if_then4 # if_then4 if_end4 0 0
+       jmp if_end4 # foo1
+if_then4:
+       movq $1000000, %rax
+       leave
+       ret
+if_end4:
+       mov 16(%rsp), %rax
+       movq %rax, 0(%rsp) /* z */
+do_start5:
+       mov 8(%rsp), %rax
+       movq $2, %r10
+       cmp %r10, %rax
+       jns do_enter5 # do_enter5 do_end5 0 0
+       jmp do_end5 # foo1
+do_enter5:
+       mov 16(%rsp), %rdi
+       movq 0(%rsp), %(null)
+       imulq %(null), %rdi
+       movq $1000000, %rsi
+       pushq %rax
+       pushq %r10
+       pushq %r11
+       pushq %r9
+       pushq %r8
+       pushq %rcx
+       pushq %rdx
+       pushq %rsi
+       pushq %rdi
+       call div
+       movq %rax, %r10
+       popq %rdi
+       popq %rsi
+       popq %rdx
+       popq %rcx
+       popq %r8
+       popq %r9
+       popq %r11
+       addq $8, %rsp
+       popq %rax
+       movq %r10, 0(%rsp) /* z */
+       mov 8(%rsp), %r10
+       addq $-1, %r10
+       movq %r10, 8(%rsp) /* y */
+       jmp do_start5
+do_end5:
+       movq 0(%rsp), %rax
+       leave
+       ret
+# setting call to 1
+       .globl sqr
+       .type sqr, @function
+sqr:
+# 2 1 1 1
+       pushq %rbp
+       movq %rsp, %rbp
+       subq $24, %rsp
+       movq %rdi, 16(%rsp)
+       movq $1, %rax
+       movq %rax, 0(%rsp) /* z */
+       movq $1000000, %rax
+       movq %rax, 8(%rsp) /* z */
+       mov 16(%rsp), %r10
+       imulq $1000000, %r10
+       movq %r10, 16(%rsp) /* y */
+do_start6:
+       movq 8(%rsp), %rax
+       movq $1, %r10
+       cmp %r10, %rax
+       jns do_enter6 # do_enter6 do_end6 0 0
+       jmp do_end6 # foo1
+do_enter6:
+do_start7:
+       mov 16(%rsp), %rax
+       movq 0(%rsp), %r10
+       movq 0(%rsp), %r11
+       imulq %r11, %r10
+       cmp %r10, %rax
+       jns do_enter7 # do_enter7 do_end7 0 0
+       jmp do_end7 # foo1
+do_enter7:
+       movq 8(%rsp), %r10
+       movq 0(%rsp), %r11
+       addq %r11, %r10
+       movq %r10, 0(%rsp) /* z */
+       jmp do_start7
+do_end7:
+       movq 8(%rsp), %r10
+       negq %r10
+       movq 0(%rsp), %r11
+       addq %r11, %r10
+       movq %r10, 0(%rsp) /* z */
+       movq 8(%rsp), %rdi
+       movq $2, %rsi
+       pushq %rax
+       pushq %r10
+       pushq %r11
+       pushq %r9
+       pushq %r8
+       pushq %rcx
+       pushq %rdx
+       pushq %rsi
+       pushq %rdi
+       call div
+       movq %rax, %r10
+       popq %rdi
+       popq %rsi
+       popq %rdx
+       popq %rcx
+       popq %r8
+       popq %r9
+       popq %r11
+       addq $8, %rsp
+       popq %rax
+       movq %r10, 8(%rsp) /* z */
+       jmp do_start6
+do_end6:
+       movq 0(%rsp), %rax
+       leave
+       ret
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/parser.y b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/parser.y
new file mode 100644 (file)
index 0000000..585b19b
--- /dev/null
@@ -0,0 +1,595 @@
+%{
+       #include <stdio.h>
+       #include <stdlib.h>
+       #include <string.h>
+       #include "symbol_table.h"
+       #include "code_gen.h"
+       #include "tree.h"
+
+       #define imm_prefix "$"
+
+       char *saved_reg;
+
+/* TODO failed test case: func f(a) if not (a=0 or a=1) then return 0; end; end; */
+%}
+
+%start         Input
+%token         FUNC END STRUCT VAR IF THEN ELSE WHILE DO RETURN OR NOT
+%token         ID NUM ASSIGN GREATER
+
+@autoinh symbols stack_offset all_pars if_in jump_true jump_false
+@autosyn node defined_vars immediate if_out has_call
+
+@attributes    { char *name; } ID
+@attributes    { long value; } NUM
+@attributes    { struct symbol_t *fields; struct symbol_t *symbols; int if_in; } Program
+@attributes    { struct symbol_t *fields; } Structdef
+@attributes    { struct symbol_t *fields; int offset; } Ids
+@attributes    { struct symbol_t *pars; int num_pars; int all_pars; } Pars
+@attributes    { struct symbol_t *symbols; int defined_vars; int if_in; int if_out; } Funcdef 
+@attributes    { struct symbol_t *symbols; int defined_vars; int stack_offset; treenode *node; int if_in; int if_out; int has_call; } Stats
+@attributes    { struct symbol_t *symbols; treenode *node; int immediate; int has_call; } Expr Term Plusterm Malterm
+@attributes    { struct symbol_t *symbols; treenode *node; int has_call; } Call Lexpr Field Exprs
+@attributes    { struct symbol_t *symbols; treenode *node; char *jump_true; char *jump_false; int negated; int if_in; int if_out; int negated2; int top_level; int has_call; } Bool Orterm Subbool Bterm
+@attributes    { struct symbol_t *in_symbols; struct symbol_t *out_symbols; treenode *node; int defined_vars; int stack_offset; int if_in; int if_out; int has_call; } Stat
+@attributes    { struct symbol_t *symbols; treenode *node; int defined_vars; int stack_offset; int if_in; int if_out; int if_nr; int has_call; } Blubb
+
+@traversal @postorder check
+@traversal @preorder reg
+@traversal @preorder codegen
+
+%%
+
+Input:           Program
+               @{
+                  @i @Program.symbols@ = @Program.fields@;
+                  @i @Program.if_in@ = 0;
+
+                  @codegen printf("\t.text\n");
+               @}
+
+               ;
+
+Program:         Funcdef ';' Program
+               @{
+                  @i @Program.fields@ = @Program.1.fields@;
+                  @i @Program.1.if_in@ = @Funcdef.if_out@;
+               @}
+
+               | Structdef ';' Program
+               @{
+                  @i @Program.fields@ = table_merge(@Structdef.fields@, @Program.1.fields@, 1);
+                  @i @Program.1.symbols@ = @Program.0.symbols@;
+               @}
+
+               |
+               @{ @i @Program.fields@ = new_table(); @}
+
+               ;
+Funcdef:         FUNC ID '(' Pars ')' Stats END
+                       @{
+                  @i @Stats.symbols@ = table_merge(@Funcdef.symbols@, @Pars.pars@, 0);
+                  @i @Stats.stack_offset@ = 0;
+                  @i @Pars.all_pars@ = @Pars.num_pars@;
+
+                  @codegen function_header(@ID.name@, @Funcdef.defined_vars@, @Stats.has_call@, @Pars.num_pars@);
+               @}
+
+               | FUNC ID '(' ')' Stats END
+                       @{
+                  @i @Stats.symbols@ = table_merge(@Funcdef.symbols@, new_table(), 0);
+                  @i @Stats.stack_offset@ = 0;
+
+                  @codegen function_header(@ID.name@, @Funcdef.defined_vars@, @Stats.has_call@, 0);
+               @}
+
+               ;  
+Structdef:       STRUCT Ids END
+               @{
+                  @i @Structdef.fields@ = @Ids.fields@;
+                  @i @Ids.offset@ = 0;
+               @}
+
+               ;  
+
+Ids:             ID Ids
+               @{
+                  @i @Ids.fields@ = table_add_symbol(@Ids.1.fields@, @ID.name@, SYMBOL_TYPE_FIELD, 1, @Ids.offset@);
+                  @i @Ids.1.offset@ = @Ids.offset@ + 1;
+               @}
+
+               |
+               @{ @i @Ids.fields@ = new_table(); @}
+
+               ;
+
+Pars:            Pars ',' ID
+               @{
+                   @i @Pars.pars@ = table_add_param(@Pars.1.pars@, @ID.name@, @Pars.num_pars@);
+                  @i @Pars.num_pars@ = @Pars.1.num_pars@ + 1;
+                @}
+
+               | ID
+               @{
+                   @i @Pars.pars@ = table_add_param(new_table(), @ID.name@, 1);
+                   @i @Pars.num_pars@ = 1;
+                @}
+
+               ; 
+Stats:           Stat ';' Stats
+               @{
+                  @i @Stat.in_symbols@ = @Stats.symbols@;
+                  @i @Stats.1.symbols@ = @Stat.out_symbols@;
+                  @i @Stats.defined_vars@ = @Stat.defined_vars@ + @Stats.1.defined_vars@;
+                  @i @Stats.1.stack_offset@ = @Stats.stack_offset@ + @Stat.defined_vars@ * 8;
+                  @i @Stats.node@ = new_node(OP_Stats, @Stat.node@, @Stats.1.node@);
+                  @i @Stat.if_in@ = @Stats.if_in@;
+                  @i @Stats.1.if_in@ = @Stat.if_out@;
+                  @i @Stats.if_out@ = @Stats.1.if_out@;
+                  @i @Stats.has_call@ = @Stat.has_call@ || @Stats.1.has_call@;
+               @}
+
+               |
+               @{
+                  @i @Stats.node@ = new_leaf(OP_Empty); /* TODO */
+                  @i @Stats.defined_vars@ = 0;
+                  @i @Stats.if_out@ = @Stats.if_in@;
+                  @i @Stats.has_call@ = 0;
+               @}
+
+               ;  
+Stat:            VAR ID ASSIGN Expr /* Nodes necessary for IF, DO, ... ? */
+               @{
+                  @i @Stat.out_symbols@ = table_add_symbol(clone_table(@Stat.in_symbols@), @ID.name@, SYMBOL_TYPE_VAR, 0, @Stat.stack_offset@);
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Assign, new_named_leaf_value(OP_ID, @ID.name@, @Stat.stack_offset@, -1), @Expr.node@);
+                  @i @Stat.defined_vars@ = 1;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+
+                  @reg @Expr.node@->reg = get_next_reg((char *)NULL, 0); @Stat.node@->reg = @Expr.node@->reg;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               | Lexpr ASSIGN Expr
+               @{
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Lexpr.symbols@ = @Stat.in_symbols@;
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Assign, @Lexpr.node@, @Expr.node@);
+                  @i @Stat.defined_vars@ = 0;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+                  @i @Stat.has_call@ = @Lexpr.has_call@ || @Expr.has_call@;
+
+                  @reg @Lexpr.node@->reg = get_next_reg((char *)NULL, 0); @Expr.node@->reg = get_next_reg(@Lexpr.node@->reg, 0); @Stat.node@->reg = @Expr.node@->reg;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               | IF Bool THEN Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_If, @Bool.node@, @Stats.node@);
+                  @i @Bool.if_in@ = @Stat.if_in@ + 1;
+                  @i @Stats.if_in@ = @Bool.if_out@;
+                  @i @Stat.if_out@ = @Stats.if_out@;
+                  @e Bool.jump_true : Stats.if_in; @Bool.jump_true@ = malloc(100); sprintf(@Bool.jump_true@, "if_then%i", @Stats.if_in@);
+                  @e Bool.jump_false : Stats.if_in; @Bool.jump_false@ = malloc(100); sprintf(@Bool.jump_false@, "if_end%i", @Stats.if_in@);
+                  @i @Stat.has_call@ = @Bool.has_call@ || @Stats.has_call@;
+
+                  @reg @Bool.node@->reg = get_next_reg((char *)NULL, 0);
+
+                  @codegen /* write_tree(@Bool.node@, 0); burm_label(@Bool.node@); burm_reduce(@Bool.node@, 1); printf("\ttest %s1, %%%s\n\tjz if_end%i\n", imm_prefix, @Bool.node@->reg, @Stats.if_in@); */
+                  @codegen @revorder(1) printf("if_end%i:\n", @Stats.if_in@);
+               @}
+
+               | IF Bool THEN Stats Blubb END 
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Blubb.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;              
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Ifstats, @Stats.node@, @Blubb.node@);
+                  @i @Stat.defined_vars@ = @Stats.defined_vars@ + @Blubb.defined_vars@;
+                  @i @Bool.if_in@ = @Stat.if_in@ + 1;
+                  @i @Stats.if_in@ = @Bool.if_out@;
+                  @i @Blubb.if_in@ = @Stats.if_out@;
+                  @i @Stat.if_out@ = @Blubb.if_out@;
+                  @i @Blubb.if_nr@ = @Stats.if_in@;
+                  @e Bool.jump_true : Stats.if_in; @Bool.jump_true@ = malloc(100); sprintf(@Bool.jump_true@, "if_then%i", @Stats.if_in@);
+                  @e Bool.jump_false : Stats.if_in; @Bool.jump_false@ = malloc(100); sprintf(@Bool.jump_false@, "if_else%i", @Stats.if_in@);
+                  @i @Stat.has_call@ = @Bool.has_call@ || @Stats.has_call@ || @Blubb.has_call@;
+
+                  @reg @Bool.node@->reg = get_next_reg((char *)NULL, 0);
+
+                  @codegen /* write_tree(@Bool.node@, 0); burm_label(@Bool.node@); burm_reduce(@Bool.node@, 1); printf("\ttest %s1, %%%s\n\tjz if_else%i\n", imm_prefix, @Bool.node@->reg, @Stats.if_in@); */
+                  @codegen @revorder(1) printf("if_end%i:\n", @Stats.if_in@);
+               @}
+
+               | WHILE Bool DO Stats END
+               @{
+                  @i @Bool.symbols@ = @Stat.in_symbols@;
+                  @i @Stats.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_While, @Bool.node@, @Stats.node@);
+                  @i @Bool.if_in@ = @Stat.if_in@ + 1;
+                  @i @Stats.if_in@ = @Bool.if_out@;
+                  @i @Stat.if_out@ = @Stats.if_out@;
+                  @e Bool.jump_true : Stats.if_in; @Bool.jump_true@ = malloc(100); sprintf(@Bool.jump_true@, "do_enter%i", @Stats.if_in@);
+                  @e Bool.jump_false : Stats.if_in; @Bool.jump_false@ = malloc(100); sprintf(@Bool.jump_false@, "do_end%i", @Stats.if_in@);
+                  @i @Stat.has_call@ = @Bool.has_call@ || @Stats.has_call@;
+
+                  @reg @Bool.node@->reg = get_next_reg((char *)NULL, 0);
+
+                  @codegen printf("do_start%i:\n", @Stats.if_in@); /* write_tree(@Bool.node@, 0); burm_label(@Bool.node@); burm_reduce(@Bool.node@, 1); printf("\ttest %s1, %%%s\n\tjz do_end%i\n", imm_prefix, @Bool.node@->reg, @Stats.if_in@); */
+                  @codegen @revorder(1) printf("\tjmp do_start%i\ndo_end%i:\n", @Stats.if_in@, @Stats.if_in@);
+               @}
+
+               | Call
+               @{
+                  @i @Call.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = (treenode *)NULL;
+                  @i @Stat.defined_vars@ = 0;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+
+                  @reg @Call.node@->reg = "rax";
+               @}
+
+               | RETURN Expr
+               @{
+                  @i @Expr.symbols@ = @Stat.in_symbols@;
+                  @i @Stat.out_symbols@ = @Stat.in_symbols@;
+                  @i @Stat.node@ = new_node(OP_Return, @Expr.node@, (treenode *)NULL);
+                  @i @Stat.defined_vars@ = 0;
+                  @i @Stat.if_out@ = @Stat.if_in@;
+
+                  @reg if(@Expr.node@->op == OP_Call) { @Stat.node@->reg = get_next_reg("rax", 0); } else { @Stat.node@->reg = get_next_reg((char *)NULL, 0); } @Expr.node@->reg = @Stat.node@->reg;
+
+                  @codegen /* write_tree(@Stat.node@, 0); */ burm_label(@Stat.node@); burm_reduce(@Stat.node@, 1);
+               @}
+
+               ;
+
+Blubb:           ELSE Stats
+               @{
+                  @codegen printf("\tjmp if_end%i\nif_else%i:\n", @Blubb.if_nr@, @Blubb.if_nr@);
+               @}
+
+Lexpr:           ID
+               @{
+                  @i @Lexpr.node@ = new_named_leaf_value(OP_ID, @ID.name@, (table_lookup(@Lexpr.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Lexpr.symbols@, @ID.name@)->stack_offset, (table_lookup(@Lexpr.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Lexpr.symbols@, @ID.name@)->param_index);
+
+                  @i @Lexpr.has_call@ = 0;
+                  @check check_variable(@Lexpr.symbols@, @ID.name@);
+               @}
+
+               | Field
+               ;
+Expr:            '-' Term
+               @{
+                  @i @Expr.node@ = new_node(OP_Negation, @Term.node@, (treenode *)NULL);
+
+                  @reg @Term.node@->reg = @Expr.node@->reg;
+               @}
+
+               | Term
+               @{ @reg @Term.node@->reg = @Expr.node@->reg; @}
+
+               | Term Plusterm
+               @{
+                  @i @Expr.node@ = new_node(OP_Addition, @Plusterm.node@, @Term.node@);
+                  @i @Expr.immediate@ = @Term.immediate@ && @Plusterm.immediate@;
+                  @i @Expr.has_call@ = @Term.has_call@ || @Plusterm.has_call@;
+
+                  @reg if(!@Plusterm.immediate@) { @Plusterm.node@->reg = @Expr.node@->reg; @Term.node@->reg = get_next_reg(@Plusterm.node@->reg, @Expr.node@->skip_reg); @Plusterm.node@->skip_reg = 1; } else { @Term.node@->reg = @Expr.node@->reg; @Plusterm.node@->reg = get_next_reg(@Term.node@->reg, @Expr.node@->skip_reg); }
+               @}
+
+               | Term Malterm
+               @{
+                  @i @Expr.node@ = new_node(OP_Multiplication, @Malterm.node@, @Term.node@);
+                  @i @Expr.immediate@ = @Term.immediate@ && @Malterm.immediate@;
+                  @i @Expr.has_call@ = @Term.has_call@ || @Malterm.has_call@;
+
+                  @reg if(!@Malterm.immediate@) { @Malterm.node@->reg = @Expr.node@->reg; @Term.node@->reg = get_next_reg(@Malterm.node@->reg, @Expr.node@->skip_reg); @Malterm.node@->skip_reg = 1; } else { @Term.node@-> reg = @Expr.node@->reg; @Malterm.node@->reg = get_next_reg(@Term.node@->reg, @Expr.node@->skip_reg); }
+               @}
+
+               ;
+
+Plusterm:        '+' Term Plusterm
+               @{
+                  @i @Plusterm.node@ = new_node(OP_Addition, @Plusterm.1.node@, @Term.node@);
+                  @i @Plusterm.immediate@ = @Term.immediate@ && @Plusterm.1.immediate@;
+                  @i @Plusterm.has_call@ = @Term.has_call@ || @Plusterm.1.has_call@;
+
+                  @reg @Plusterm.1.node@->reg = @Plusterm.node@->reg; @Term.node@->reg = get_next_reg(@Plusterm.1.node@->reg, @Plusterm.node@->skip_reg); 
+               @}
+
+               | '+' Term
+               @{ @reg @Term.node@->reg = @Plusterm.node@->reg; @}
+
+               ;
+
+Malterm:         '*' Term Malterm
+               @{
+                  @i @Malterm.node@ = new_node(OP_Multiplication, @Malterm.1.node@, @Term.node@);
+                  @i @Malterm.immediate@ = @Term.immediate@ && @Malterm.1.immediate@;
+                  @i @Malterm.has_call@ = @Term.has_call@ || @Malterm.1.has_call@;
+
+                  @reg @Malterm.1.node@->reg = @Malterm.node@->reg; @Term.node@->reg = get_next_reg(@Malterm.1.node@->reg, @Malterm.node@->skip_reg); 
+               @}
+
+                       | '*' Term
+               @{ @reg @Term.node@->reg = @Malterm.node@->reg; @}
+
+               ;
+Term:            '(' Expr ')'
+               @{ @reg @Expr.node@->reg = @Term.node@->reg; @}
+
+               | ID
+               @{
+                  @i @Term.node@ = new_named_leaf_value(OP_ID, @ID.name@, (table_lookup(@Term.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Term.symbols@, @ID.name@)->stack_offset, (table_lookup(@Term.symbols@, @ID.name@)==NULL) ? 0 : table_lookup(@Term.symbols@, @ID.name@)->param_index);
+                  @i @Term.immediate@ = 0;
+                  @i @Term.has_call@ = 0;
+
+                  @check check_variable(@Term.symbols@, @ID.name@);
+               @}
+
+               | NUM
+               @{
+                  @i @Term.node@ = new_number_leaf(@NUM.value@);
+                  @i @Term.immediate@ = 1;
+                  @i @Term.has_call@ = 0;
+               @}
+
+               | Call
+               @{
+                  @i @Term.immediate@ = 0;
+
+                  @reg @Call.node@->reg = @Term.node@->reg;
+               @}
+
+               | Field
+               @{
+                  @i @Term.immediate@ = 0;
+
+                  @reg @Field.node@->reg = @Term.node@->reg;
+               @}
+
+               ;
+
+/* TODO replace by Bool -> Subbool */
+Bool:            Bterm
+               @{
+                  @i @Bool.negated@ = 0;
+                  @i @Bool.negated2@ = 0;
+                  @i @Bterm.negated@ = 0;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Bool.top_level@ = 1;
+                  @i @Bterm.top_level@ = 1;
+
+                  @codegen @revorder(1) if(@Bterm.node@->op!=OP_Disjunction) { printf("\tjmp %s # foo1\n", @Bool.jump_false@); } printf("%s:\n", @Bool.jump_true@); /* printf("\tjmp %s\n%s:\n", @Bool.jump_false@, @Bool.jump_true@); */
+               @}
+
+               | Bterm Orterm
+               @{
+                  @i @Bool.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.node@);
+                  @i @Bool.negated@ = 0;
+                  @i @Bool.negated2@ = 0;
+                  @i @Bterm.negated@ = 0;
+                  @i @Orterm.negated@ = 0;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Orterm.negated2@ = 0;
+                  @e Bterm.jump_true : Bool.negated Bool.jump_true Bool.if_in; if(!@Bool.negated@) { @Bterm.jump_true@ = malloc(100); sprintf(@Bterm.jump_true@, "bool_true%i", @Bool.if_in@); } else { @Bterm.jump_true@ = @Bool.jump_true@; }
+                  @i @Orterm.jump_true@ = @Bterm.jump_true@;
+                  @e Bterm.jump_false : Bool.negated Bool.jump_false Bool.if_in; if(@Bool.negated@) { @Bterm.jump_false@ = malloc(100); sprintf(@Bterm.jump_false@, "bool_false%i", @Bool.if_in@); } else { @Bterm.jump_false@ = @Bool.jump_false@; }
+                  @i @Orterm.jump_false@ = @Bterm.jump_false@;
+                  @i @Bterm.if_in@ = @Bool.if_in@ + 1;
+                  @i @Orterm.if_in@ = @Bterm.if_out@;
+                  @i @Bool.if_out@ = @Orterm.if_out@;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Orterm.top_level@ = 0;
+                  @i @Bool.top_level@ = 1;
+                  @i @Bool.has_call@ = @Bterm.has_call@ || @Orterm.has_call@;
+
+                  @reg @Bterm.node@->reg = @Bool.node@->reg; @Orterm.node@->reg = @Bool.node@->reg;
+
+                  @codegen @revorder(1) printf("\tjmp %s # foo2\n", @Bool.jump_false@); printf(@Bool.negated@ ? "bool_false%i:\n" : "bool_true%i:\n", @Bool.if_in@); printf("%s:\n", @Bool.jump_true@); /* printf("\tjmp %s\n%s:\n", @Bool.jump_false@, @Bool.jump_true@); */
+               @}
+
+               | NOT Bterm
+               @{
+                  @i @Bool.node@ = new_node(OP_Not, @Bterm.node@, (treenode *)NULL);
+                  @i @Bterm.jump_true@ = @Bool.jump_true@;
+                  @i @Bool.negated@ = 0;
+                  @i @Bool.negated2@ = 0;
+                  @i @Bterm.negated@ = 1;
+                  @i @Bterm.negated2@ = 1;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Bool.top_level@ = 1;
+
+                  @reg @Bterm.node@-> reg = @Bool.node@->reg;
+
+                  @codegen @revorder(1) if(@Bterm.node@->op!=OP_Not) { printf("\tjmp %s # foo3\n", @Bool.jump_false@); } printf("%s:\n", @Bool.jump_true@); /* printf("\tjmp %s\nnot_break%i:\n\tjmp %s\n%s:\n", @Bool.jump_true@, 0, @Bool.jump_false@, @Bool.jump_true@); */
+               @}
+
+               ;
+
+Subbool:         Bterm
+               @{
+                  @i @Bterm.negated@ = @Subbool.negated@;
+                  @i @Bterm.negated2@ = @Subbool.negated2@;
+                  @i @Bterm.top_level@ = @Subbool.top_level@;
+                  @codegen @revorder(1) /* printf("\tjmp %s\n%s:\n", @Subbool.jump_false@, @Subbool.jump_true@); */
+               @}
+
+               | Bterm Orterm
+               @{
+                  @i @Subbool.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.node@);
+                  @i @Bterm.negated@ = @Subbool.negated@;
+                  @i @Orterm.negated@ = @Subbool.negated@;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Orterm.negated2@ = 0;
+                  @e Bterm.jump_true : Subbool.negated Subbool.negated2 Subbool.jump_true Subbool.if_in; if(!@Subbool.negated@ && @Subbool.negated2@) { @Bterm.jump_true@ = malloc(100); sprintf(@Bterm.jump_true@, "bool_true%i", @Subbool.if_in@); } else { @Bterm.jump_true@ = @Subbool.jump_true@; }
+                  @i @Orterm.jump_true@ = @Bterm.jump_true@;
+                  @e Bterm.jump_false : Subbool.negated Subbool.negated2 Subbool.jump_false Subbool.if_in; if(@Subbool.negated@ && @Subbool.negated2@) { @Bterm.jump_false@ = malloc(100); sprintf(@Bterm.jump_false@, "bool_false%i", @Subbool.if_in@); } else { @Bterm.jump_false@ = @Subbool.jump_false@; }
+                  @i @Orterm.jump_false@ = @Bterm.jump_false@;
+                  @i @Bterm.if_in@ = @Subbool.if_in@ + 1;
+                  @i @Orterm.if_in@ = @Bterm.if_out@;
+                  @i @Subbool.if_out@ = @Orterm.if_out@;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Orterm.top_level@ = 0;
+                  @i @Subbool.has_call@ = @Bterm.has_call@ || @Orterm.has_call@;
+
+                  @reg @Bterm.node@->reg = @Subbool.node@->reg; @Orterm.node@->reg = @Subbool.node@->reg;
+
+                  @codegen @revorder(1) /* TODO output if on top level */ if(@Subbool.negated2@ || @Subbool.top_level@) { printf("\tjmp %s # foo4\n", @Subbool.negated2@ ? @Subbool.jump_true@ : @Subbool.jump_false@); } printf(!@Subbool.negated@ ? "bool_true%i:\n" : "bool_false%i:\n", @Subbool.if_in@); /* printf("\tjmp %s\n# %s:\n", @Subbool.jump_true@, @Subbool.jump_true@);  */
+               @}
+
+               | NOT Bterm
+               @{
+                  @i @Subbool.node@ = new_node(OP_Not, @Bterm.node@, (treenode *)NULL);
+                  @i @Bterm.jump_true@ = @Subbool.jump_true@;
+                  @i @Bterm.negated@ = 1 - @Subbool.negated@;
+                  @i @Bterm.negated2@ = 1 - @Subbool.negated2@;
+                  @i @Bterm.top_level@ = 0;
+
+                  @reg @Bterm.node@-> reg = @Subbool.node@->reg; /* printf("%s, %s\n", @Bterm.jump_true@, @Subbool.jump_false@); */
+
+                  @codegen @revorder(1) printf("# !!\n"); if(@Subbool.negated2@ || @Subbool.top_level@) { printf("\tjmp %s # foo9\n", @Subbool.negated2@ ? @Subbool.jump_false@ : @Subbool.jump_false@); } /* printf("\tjmp %s\nnot_break%i:\n", @Subbool.negated@ ? @Bterm.jump_true@ : @Subbool.jump_false@, 0); printf("\tjmp %s\n%s:\n", @Subbool.jump_false@, @Subbool.jump_true@); */
+               @}
+
+               ;
+
+
+Orterm:                  OR Bterm Orterm
+               @{
+                  @i @Orterm.node@ = new_node(OP_Disjunction, @Bterm.node@, @Orterm.1.node@);
+                  @i @Bterm.negated@ = @Orterm.negated@;
+                  @i @Orterm.1.negated@ = @Orterm.negated@;
+                  @i @Bterm.negated2@ = 0;
+                  @i @Orterm.1.negated2@ = 0;
+                  @i @Orterm.1.if_in@ = @Bterm.if_out@;
+                  @i @Orterm.if_out@ = @Orterm.1.if_out@;
+                  @i @Bterm.top_level@ = 0;
+                  @i @Orterm.1.top_level@ = 0;
+                  @i @Orterm.has_call@ = @Bterm.has_call@ || @Orterm.1.has_call@;
+
+                  @reg @Bterm.node@->reg = @Orterm.node@->reg; @Orterm.1.node@->reg = @Orterm.node@->reg;
+               @}
+
+               | OR Bterm
+               @{
+                  @i @Bterm.negated@ = @Orterm.negated@;
+                  @i @Bterm.negated2@ = @Orterm.negated2@;
+                  @i @Bterm.top_level@ = 0;
+               @}
+
+               ;
+
+Bterm:           Term GREATER Term
+               @{
+                  @i @Bterm.node@ = new_node(OP_Greater, @Term.node@, @Term.1.node@);
+                  @i @Bterm.if_out@ = @Bterm.if_in@;
+                  @i @Bterm.has_call@ = @Term.has_call@ || @Term.1.has_call@;
+                  
+                  @reg @Term.node@->reg = @Bterm.node@->reg; @Term.1.node@->reg = get_next_reg(@Bterm.node@->reg, 0);
+
+                  @codegen /* write_tree(@Term.node@, 0); */ burm_label(@Term.node@); burm_reduce(@Term.node@, 1); /* write_tree(@Term.1.node@, 0); */ burm_label(@Term.1.node@); burm_reduce(@Term.1.node@, 1); printf(@Bterm.negated2@ ? "\tcmp %%%s, %%%s\n\tjs %s # %s %s %i %i\n" : "\tcmp %%%s, %%%s\n\tjns %s # %s %s %i %i\n", @Term.1.node@->reg, @Term.node@->reg, ((@Bterm.negated2@ ^ @Bterm.negated@)) ? @Bterm.jump_false@ : @Bterm.jump_true@, @Bterm.jump_true@, @Bterm.jump_false@, @Bterm.negated2@, @Bterm.negated@);
+               @}
+
+               | Term '=' Term
+               @{
+                  @i @Bterm.node@ = new_node(OP_Equal, @Term.node@, @Term.1.node@);
+                  @i @Bterm.if_out@ = @Bterm.if_in@;
+                  @i @Bterm.has_call@ = @Term.has_call@ || @Term.1.has_call@;
+
+                  @reg @Term.node@->reg = @Bterm.node@->reg; @Term.1.node@->reg = get_next_reg(@Bterm.node@->reg, 0);
+
+                  @codegen /* write_tree(@Term.node@, 0); */ burm_label(@Term.node@); burm_reduce(@Term.node@, 1); /* write_tree(@Term.1.node@, 0); */ burm_label(@Term.1.node@); burm_reduce(@Term.1.node@, 1); printf(@Bterm.negated2@ ? "\tcmp %%%s, %%%s\n\tjnz %s # %s %s %i %i\n" : "\tcmp %%%s, %%%s\n\tjz %s # %s %s %i %i\n", @Term.node@->reg, @Term.1.node@->reg, ((@Bterm.negated2@ ^ @Bterm.negated@)) ? @Bterm.jump_false@ : @Bterm.jump_true@, @Bterm.jump_true@, @Bterm.jump_false@, @Bterm.negated2@, @Bterm.negated@);
+               @}
+
+               | '(' Subbool ')'
+               @{
+                  @i @Subbool.negated@ = @Bterm.negated@;
+                  @i @Subbool.negated2@ = @Bterm.negated2@;
+                  @i @Subbool.top_level@ = @Bterm.top_level@;
+               @}
+
+               ;
+
+Field:           Term '.' ID
+               @{
+                  @i @Field.node@ = new_node_value(OP_Field, @Term.node@, new_named_leaf(OP_ID, @ID.name@), table_lookup(@Field.symbols@, @ID.name@)==(struct symbol_t *)NULL ? 0 : table_lookup(@Field.symbols@, @ID.name@)->stack_offset, -1);
+
+                  @check check_field(@Field.symbols@, @ID.name@);
+
+                  @reg @Term.node@->reg = @Field.node@->reg; @Field.node@->kids[1]->reg = get_next_reg(@Field.node@->reg, 0); 
+               @}
+
+               ;
+
+Call:            ID '(' Exprs ')'
+               @{
+                  @i @Call.node@ = new_named_node(OP_Call, @Exprs.node@, (treenode *)NULL, @ID.name@);
+                  @i @Call.has_call@ = 1;
+
+                  @reg saved_reg = @Call.node@->reg; @Exprs.node@->reg = "rdi"; @Exprs.node@->name=@Call.node@->name;
+
+                  @codegen /* reg_return=@Call.node@->reg; function_name = @ID.name@; prepare_call(function_name); */
+               @}
+
+               | ID '(' ')'
+               @{
+                  @i @Call.node@ = new_node(OP_CallNoParam, (treenode *)NULL, (treenode *)NULL);
+                  @i @Call.has_call@ = 1;
+
+                  @codegen /* reg_return=@Call.node@->reg; do_call(@ID.name@); */
+               @}
+
+               ;
+
+Exprs:           Expr
+               @{
+                  @i @Exprs.node@ = new_node(OP_Arg, @Expr.node@, (treenode *)NULL);
+                  
+                  @reg @Expr.node@->reg = @Exprs.node@->reg;
+
+                  @codegen /* write_tree(@Expr.node@); */ /* burm_label(@Expr.node@); burm_reduce(@Expr.node@, 1); do_call(function_name); */
+               @}
+
+               | Expr ',' Exprs
+               @{
+                  @i @Exprs.node@ = new_node(OP_Exprs, new_node(OP_Arg, @Expr.node@, (treenode *)NULL), @Exprs.1.node@);
+                  @i @Exprs.has_call@ = @Exprs.1.has_call@ || @Expr.has_call@;
+
+                  @reg @Expr.node@->reg = @Exprs.node@->reg; @Exprs.1.node@->reg = get_next_param_reg(@Exprs.node@->reg); @Exprs.node@->kids[0]->name = @Exprs.node@->name; @Exprs.1.node@->name = @Exprs.node@->name;
+
+                  @codegen /* write_tree(@Expr.node@); */ /* burm_label(@Expr.node@); burm_reduce(@Expr.node@, 1); */
+               @}
+
+               ;
+
+%%
+
+extern int yylex();
+extern int yylineno;
+
+int yyerror(char *error_text) {
+       fprintf(stderr,"Line %i: %s\n",yylineno, error_text);
+       exit(2);
+}
+
+int main(int argc, char **argv) {
+       yyparse();
+       return 0;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/scanner.lex b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/scanner.lex
new file mode 100644 (file)
index 0000000..5cf6520
--- /dev/null
@@ -0,0 +1,67 @@
+       #include <stdio.h>
+       #include <stdlib.h>
+       #include <string.h>
+       #include "parser.h"
+       #include "tree.h"
+
+KEYWORD                func|end|struct|var|if|then|else|while|do|return|or|not
+IDENTIFIER     [[:alpha:]_][[:alnum:]_]*
+NUMBER_HEX     [0-9][0-9A-Fa-f]*H
+NUMBER_DEC     [0-9]+
+WHITESPACE     [\t\n\r ]
+COMMENT_START  \(\*
+COMMENT_END    \*\)
+
+%x COMMENT
+%option yylineno
+%%
+
+{COMMENT_START}                        BEGIN(COMMENT);
+
+<COMMENT>{COMMENT_END}         BEGIN(INITIAL);
+
+<COMMENT>{COMMENT_START}       fprintf(stderr, "Possibly nested comment on line %i\n", yylineno);
+
+<COMMENT><<EOF>>               { fprintf(stderr, "Unterminated comment.\n"); exit(1); }
+
+<COMMENT>{WHITESPACE}          /* ignore */
+
+<COMMENT>.                     /* ignore everything inside comment */
+
+func                           return(FUNC);
+end                            return(END);
+struct                         return(STRUCT);
+var                            return(VAR);
+if                             return(IF);
+then                           return(THEN);
+else                           return(ELSE);
+while                          return(WHILE);
+do                             return(DO);
+return                         return(RETURN);
+or                             return(OR);
+not                            return(NOT);
+
+{IDENTIFIER}                   return(ID); @{ @ID.name@=strdup(yytext); @}
+
+{NUMBER_DEC}                   return(NUM); @{ @NUM.value@=strtol(yytext,(char **)NULL,10); @}
+{NUMBER_HEX}                   return(NUM); @{ yytext[strlen(yytext)-1]='\0'; @NUM.value@=strtol(yytext,(char **)NULL,16); @}
+                               
+\:=                            return(ASSIGN);
+>=                             return(GREATER);
+\;                             return(';');
+\.                             return('.');
+\(                             return('(');
+\)                             return(')');
+\,                             return(',');
+\-                             return('-');
+\+                             return('+');
+\*                             return('*');
+=                              return('=');
+
+{WHITESPACE}                   /* ignore */
+
+.                              { fprintf(stderr, "Lexical error on line %i\n", yylineno); exit(1); }
+
+%%
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/symbol_table.c b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/symbol_table.c
new file mode 100755 (executable)
index 0000000..bf66a65
--- /dev/null
@@ -0,0 +1,192 @@
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "symbol_table.h"
+
+struct symbol_t *new_table(void) {
+       return (struct symbol_t *)NULL;
+}
+
+struct symbol_t *clone_table(struct symbol_t *table) {
+       struct symbol_t *element;
+       struct symbol_t *new_tablex;
+
+       element=table;
+       new_tablex=new_table();
+       while((struct symbol_t *)NULL!=element) {
+               /* check return value */
+               if(element->param_index!=-1) {
+                       new_tablex=table_add_param(new_tablex,element->identifier,element->param_index);
+               }
+               else {
+                       new_tablex=table_add_symbol(new_tablex,element->identifier,element->type,0,element->stack_offset);
+               }
+               element=element->next;
+       }
+
+       return new_tablex;
+}
+
+struct symbol_t *table_add_symbol(struct symbol_t *table, char *identifier, short type, short check, int stack_offset) {
+       struct symbol_t *element;
+       struct symbol_t *new_element;
+
+       if(table_lookup(table,identifier)!=(struct symbol_t *)NULL) {
+               if(check) {
+                       fprintf(stderr,"Duplicate field %s.\n",identifier);
+                       exit(3);
+               }
+
+               table=table_remove_symbol(table,identifier);
+       }
+       
+       new_element=(struct symbol_t *)malloc(sizeof(struct symbol_t));
+       new_element->next=(struct symbol_t *)NULL;
+       new_element->identifier=strdup(identifier);
+       new_element->type=type;
+       new_element->stack_offset=stack_offset;
+       new_element->param_index=-1;
+
+       if((struct symbol_t *)NULL==table) {
+               return new_element;
+       }
+       element=table;
+
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+       }
+
+       element->next=new_element;
+       
+       return table;
+}
+
+struct symbol_t *table_add_param(struct symbol_t *table, char *identifier, int param_index) {
+       struct symbol_t *element;
+       struct symbol_t *new_element;
+
+       if(table_lookup(table,identifier)!=(struct symbol_t *)NULL) {
+               table=table_remove_symbol(table,identifier);
+       }
+       
+       new_element=(struct symbol_t *)malloc(sizeof(struct symbol_t));
+       new_element->next=(struct symbol_t *)NULL;
+       new_element->identifier=strdup(identifier);
+       new_element->type=SYMBOL_TYPE_PARAM;
+       new_element->param_index=param_index;
+
+       if((struct symbol_t *)NULL==table) {
+               return new_element;
+       }
+       element=table;
+
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+       }
+
+       element->next=new_element;
+       
+       return table;
+}
+
+struct symbol_t *table_lookup(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element;
+
+       element=table;
+
+       if((struct symbol_t *)NULL==table) {
+               return (struct symbol_t *)NULL;
+       }
+       
+       if(strcmp(element->identifier,identifier)==0) {
+               return element;
+       }
+       
+       while((struct symbol_t *)NULL!=element->next) {
+               element=element->next;
+               if(strcmp(element->identifier,identifier)==0) {
+                       return element;
+               }
+       }
+
+       return (struct symbol_t *)NULL;
+}
+
+struct symbol_t *table_merge(struct symbol_t *table, struct symbol_t *to_add, short check) {
+       struct symbol_t *element;
+       struct symbol_t *new_table=clone_table(table);
+       
+       element=to_add;
+       while(element!=(struct symbol_t *)NULL) {
+               if(element->param_index!=-1) {
+                       new_table=table_add_param(new_table,element->identifier,element->param_index);
+               }
+               else {
+                       new_table=table_add_symbol(new_table,element->identifier,element->type,check,element->stack_offset);
+               }
+               element=element->next;
+       }
+
+       return new_table;
+}
+
+struct symbol_t *table_remove_symbol(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element;
+       struct symbol_t *previous_element;
+       struct symbol_t *new_element;
+
+       if((struct symbol_t *)NULL==table) {
+               return table;
+       }
+
+       previous_element=(struct symbol_t *)NULL;
+       element=table;
+
+       while((struct symbol_t *)NULL!=element) {
+               if(strcmp(element->identifier,identifier)==0) {
+                       if((struct symbol_t *)NULL==previous_element) {
+                               new_element=element->next;
+                       }
+                       else {
+                               previous_element->next=element->next;
+                               new_element=table;
+                       }
+                       (void)free(element->identifier);
+                       (void)free(element);
+                       return new_element;
+               }
+               previous_element=element;
+               element=element->next;
+       }
+
+       return table;
+}
+
+void check_variable(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element=table_lookup(table,identifier);
+       if(element!=(struct symbol_t *)NULL) {
+               if(element->type!=SYMBOL_TYPE_VAR && element->type!=SYMBOL_TYPE_PARAM) {
+                       fprintf(stderr,"Identifier %s not a variable.\n",identifier);
+                       exit(3);
+               }
+       }
+       else {
+               fprintf(stderr,"Unknown identifier %s.\n",identifier);
+               exit(3);
+       }
+}
+
+void check_field(struct symbol_t *table, char *identifier) {
+       struct symbol_t *element=table_lookup(table,identifier);
+       if(element!=(struct symbol_t *)NULL) {
+               if(element->type!=SYMBOL_TYPE_FIELD) {
+                       fprintf(stderr,"Identifier %s not a variable.\n",identifier);
+                       exit(3);
+               }
+       }
+       else {
+               fprintf(stderr,"Unknown identifier %s.\n",identifier);
+               exit(3);
+       }
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/symbol_table.h b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/symbol_table.h
new file mode 100755 (executable)
index 0000000..f8f3687
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef SYMBOL_TABLE_H
+#define SYMBOL_TABLE_H
+
+#define SYMBOL_TYPE_FIELD 1
+#define SYMBOL_TYPE_VAR 2
+#define SYMBOL_TYPE_PARAM 3
+
+struct symbol_t {
+       char *identifier;
+       struct symbol_t *next;
+       short type;
+       int stack_offset;
+       int param_index; /* -1 if not a parameter */
+};
+
+struct symbol_t *clone_table(struct symbol_t *table);
+struct symbol_t *new_table(void);
+struct symbol_t *table_add_symbol(struct symbol_t *table, char *identifier, short type, short check, int stack_offset);
+struct symbol_t *table_add_param(struct symbol_t *table, char *identifier, int param_index);
+struct symbol_t *table_lookup(struct symbol_t *table, char *identifier);
+struct symbol_t *table_remove_symbol(struct symbol_t *table, char *identifier);
+struct symbol_t *table_merge(struct symbol_t *table, struct symbol_t *to_add, short check);
+void check_variable(struct symbol_t *table, char *identifier);
+void check_field(struct symbol_t *table, char *identifier);
+
+#endif /* SYMBOL_TABLE_H */
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/test.c b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/test.c
new file mode 100644 (file)
index 0000000..7b38912
--- /dev/null
@@ -0,0 +1,187 @@
+ #include <stdio.h>
+
+extern long f1(long a);
+extern long f2(long a);
+extern long f3(long a);
+extern long f4(long a);
+extern long f5(long a);
+extern long f6(long a);
+extern long f7(long a);
+extern long f8(long a);
+extern long f9(long a);
+extern long f10(long a);
+
+extern long g1(long a, long b);
+extern long g2(long a, long b);
+extern long g3(long a, long b);
+extern long g4(long a, long b);
+extern long g5(long a, long b);
+extern long g6(long a, long b);
+extern long g7(long a, long b);
+extern long g8(long a, long b);
+extern long g9(long a, long b);
+extern long g10(long a, long b);
+extern long g11(long a, long b);
+extern long g12(long a, long b);
+
+extern long h1(long a, long b, long c, long d);
+extern long h2(long a, long b, long c, long d);
+extern long h3(long a, long b, long c, long d);
+extern long h4(long a, long b, long c, long d);
+extern long h5(long a, long b, long c, long d);
+extern long h6(long a, long b, long c, long d);
+extern long h7(long a, long b, long c, long d);
+extern long h8(long a, long b, long c, long d);
+extern long h9(long a, long b, long c, long d);
+extern long h10(long a, long b, long c, long d);
+extern long h11(long a, long b, long c, long d);
+extern long h12(long a, long b, long c, long d);
+extern long h13(long a, long b, long c, long d);
+extern long h14(long a, long b, long c, long d);
+extern long h15(long a, long b, long c, long d);
+extern long h16(long a, long b, long c, long d);
+extern long h17(long a, long b, long c, long d);
+extern long h18(long a, long b, long c, long d);
+extern long h19(long a, long b, long c, long d);
+extern long h20(long a, long b, long c, long d);
+extern long h21(long a, long b, long c, long d);
+extern long h22(long a, long b, long c, long d);
+extern long h23(long a, long b, long c, long d);
+extern long h24(long a, long b, long c, long d);
+
+int check_arg1(char *name, long (*function)(long), long ret0, long ret1, long ret2) {
+       int ret;
+       ret=function(0)==ret0 && function(1)==ret1 && function(2)==ret2;
+       printf("%s: %li/%li, %li/%li, %li/%li - %s\n", name,function(0), ret0, function(1), ret1, function(2), ret2, ret ? "ok" : "FAIL");
+       return ret;
+}
+
+int check_arg2(char *name, long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       printf("%s - ", name);
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+                       printf("%li/%li ", function(a,b),blubb[a][b]);
+               }
+       }
+       printf("- %s\n", ret ? "ok" : "FAIL");
+       return ret;
+}
+
+int check_arg4(char *name, long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       printf("%s - ", name);
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                                       printf("%li/%li ", function(a,b,c,d),blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       printf("- %s\n", ret ? "ok" : "FAIL");
+       return ret;
+}
+
+int main(int argc, char **argv) {
+       int ret;
+
+       long ret_g1[2][2]={{1,1},{1,0}};
+       long ret_g2[2][2]={{1,0},{1,1}};
+       long ret_g3[2][2]={{1,1},{0,1}};
+       long ret_g4[2][2]={{0,1},{1,1}};
+       long ret_g5[2][2]={{0,0},{0,1}};
+       long ret_g6[2][2]={{0,1},{0,0}};
+       long ret_g7[2][2]={{0,0},{1,0}};
+       long ret_g8[2][2]={{1,0},{0,0}};
+       long ret_g9[2][2]={{1,1},{1,0}};
+       long ret_g10[2][2]={{1,0},{1,1}};
+       long ret_g11[2][2]={{1,1},{0,1}};
+       long ret_g12[2][2]={{0,1},{1,1}};
+
+       long ret_h1[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+       long ret_h2[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h3[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+       long ret_h4[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+       long ret_h5[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+       long ret_h6[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h7[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+       long ret_h8[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+       long ret_h9[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,1}}}};
+       long ret_h10[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,1}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+       long ret_h11[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,1}},{{0,0},{0,0}}}};
+       long ret_h12[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,1},{0,0}}}};
+       long ret_h13[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{1,0}}}};
+       long ret_h14[2][2][2][2]={{{{0,0},{0,1}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+       long ret_h15[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{1,0},{0,0}}}};
+       long ret_h16[2][2][2][2]={{{{1,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+       long ret_h17[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+       long ret_h18[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h19[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+       long ret_h20[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+       long ret_h21[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+       long ret_h22[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+       long ret_h23[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+       long ret_h24[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+       ret=check_arg1("f1",f1,0,1,1);
+       ret&=check_arg1("f2",f2,0,0,1);
+       ret&=check_arg1("f3",f3,1,0,0);
+       ret&=check_arg1("f4",f4,0,1,1);
+       ret&=check_arg1("f5",f5,0,0,1);
+       ret&=check_arg1("f6",f6,1,0,0);
+       ret&=check_arg1("f7",f7,0,1,1);
+       ret&=check_arg1("f8",f8,0,0,1);
+       ret&=check_arg1("f9",f9,1,1,1);
+       ret&=check_arg1("f10",f10,1,0,0);
+
+       ret&=check_arg2("g1",g1,ret_g1);
+       ret&=check_arg2("g2",g2,ret_g2);
+       ret&=check_arg2("g3",g3,ret_g3);
+       ret&=check_arg2("g4",g4,ret_g4);
+       ret&=check_arg2("g5",g5,ret_g5);
+       ret&=check_arg2("g6",g6,ret_g6);
+       ret&=check_arg2("g7",g7,ret_g7);
+       ret&=check_arg2("g8",g8,ret_g8);
+       ret&=check_arg2("g9",g9,ret_g9);
+       ret&=check_arg2("g10",g10,ret_g10);
+       ret&=check_arg2("g11",g11,ret_g11);
+       ret&=check_arg2("g12",g12,ret_g12);
+
+       ret&=check_arg4("h1",h1,ret_h1);
+       ret&=check_arg4("h2",h2,ret_h2);
+       ret&=check_arg4("h3",h3,ret_h3);
+       ret&=check_arg4("h4",h4,ret_h4);
+       ret&=check_arg4("h5",h5,ret_h5);
+       ret&=check_arg4("h6",h6,ret_h6);
+       ret&=check_arg4("h7",h7,ret_h7);
+       ret&=check_arg4("h8",h8,ret_h8);
+       ret&=check_arg4("h9",h9,ret_h9);
+       ret&=check_arg4("h10",h10,ret_h10);
+       ret&=check_arg4("h11",h11,ret_h11);
+       ret&=check_arg4("h12",h12,ret_h12);
+       ret&=check_arg4("h13",h13,ret_h13);
+       ret&=check_arg4("h14",h14,ret_h14);
+       ret&=check_arg4("h15",h15,ret_h15);
+       ret&=check_arg4("h16",h16,ret_h16);
+       ret&=check_arg4("h17",h17,ret_h17);
+       ret&=check_arg4("h18",h18,ret_h18);
+       ret&=check_arg4("h19",h19,ret_h19);
+       ret&=check_arg4("h20",h20,ret_h20);
+       ret&=check_arg4("h21",h21,ret_h21);
+       ret&=check_arg4("h22",h22,ret_h22);
+       ret&=check_arg4("h23",h23,ret_h23);
+       ret&=check_arg4("h24",h24,ret_h24);
+
+       return !ret;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/test.input b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/test.input
new file mode 100644 (file)
index 0000000..54a2eae
--- /dev/null
@@ -0,0 +1,55 @@
+func f1(a) if a=0 then return 0; else return 1; end; end;
+func f2(a) if a=0 or a=1 then return 0; else return 1; end; end;
+func f3(a) if not (a=0) then return 0; else return 1; end; end;
+func f4(a) if (a=0) then return 0; else return 1; end; end;
+func f5(a) if (a=0 or a=1) then return 0; else return 1; end; end;
+func f6(a) if (not (a=0)) then return 0; else return 1; end; end;
+func f7(a) if not (not (a=0)) then return 0; else return 1; end; end;
+func f8(a) if not (not (a=0 or a=1)) then return 0; else return 1; end; end;
+func f9(a) if not ((not (a=0)) or (not (a=1))) then return 0; else return 1; end; end;
+func f10(a) if (not (not (not (a=0)))) then return 0; else return 1; end; end;
+
+func g1(a,b) if (a=0 or b=0) then return 1; else return 0; end; end;
+func g2(a,b) if ((not (a=0)) or b=0) then return 1; else return 0; end; end;
+func g3(a,b) if (a=0 or (not (b=0))) then return 1; else return 0; end; end;
+func g4(a,b) if ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
+func g5(a,b) if not (a=0 or b=0) then return 1; else return 0; end; end;
+func g6(a,b) if not ((not (a=0)) or b=0) then return 1; else return 0; end; end;
+func g7(a,b) if not (a=0 or (not (b=0))) then return 1; else return 0; end; end;
+func g8(a,b) if not ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
+func g9(a,b) if not (not (a=0 or b=0)) then return 1; else return 0; end; end;
+func g10(a,b) if not (not ((not (a=0)) or b=0)) then return 1; else return 0; end; end;
+func g11(a,b) if not (not (a=0 or (not (b=0)))) then return 1; else return 0; end; end;
+func g12(a,b) if not (not ((not (a=0)) or (not (b=0)))) then return 1; else return 0; end; end;
+
+func h1(a,b,c,d) if (a=0 or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h2(a,b,c,d) if ((not (a=0)) or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h3(a,b,c,d) if (a=0 or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h4(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or d=0) then return 1; else return 0; end; end;
+func h5(a,b,c,d) if (a=0 or b=0) or (c=0 or (not (d=0))) then return 1; else return 0; end; end;
+func h6(a,b,c,d) if ((not (a=0)) or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
+func h7(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
+func h8(a,b,c,d) if ((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
+func h9(a,b,c,d) if not ((a=0 or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h10(a,b,c,d) if not (((not (a=0)) or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h11(a,b,c,d) if not ((a=0 or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h12(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or d=0)) then return 1; else return 0; end; end;
+func h13(a,b,c,d) if not ((a=0 or b=0) or (c=0 or (not (d=0)))) then return 1; else return 0; end; end;
+func h14(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
+func h15(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
+func h16(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
+func h17(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h18(a,b,c,d) if not (not (((not (a=0)) or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h19(a,b,c,d) if not (not ((a=0 or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h20(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or d=0))) then return 1; else return 0; end; end;
+func h21(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or (not (d=0))))) then return 1; else return 0; end; end;
+func h22(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
+func h23(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
+func h24(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
+
+func g(a) if (a=0 or a=1) then return 0; else return 1; end; end;
+func h(a,b) if not (a=0 or b=0) then return 1; else return 0; end; end;
+func i(a) if not (not (a=0 or a=1)) then return 0; else return 1; end; end;
+func j(a,b) if not ((not a=0) or (not b=0)) then return 0; else return 1; end; end;
+func k(a,b,c,d) if not ((not (a=0 or b=0)) or (not (c=0 or d=0))) then return 1; else return 0; end; end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/all-wcprops b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/all-wcprops
new file mode 100644 (file)
index 0000000..dacf9fe
--- /dev/null
@@ -0,0 +1,1181 @@
+K 25
+svn:wc:ra_dav:version-url
+V 50
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases
+END
+fib2.0
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/fib2.0
+END
+f2.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f2.call
+END
+g4.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g4.call
+END
+tiefen.call
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/tiefen.call
+END
+forumx_06.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/forumx_06.3
+END
+g11.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g11.0
+END
+my_d.0
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_d.0
+END
+h6.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h6.call
+END
+h13.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h13.0
+END
+my_h.0
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_h.0
+END
+negterm1.call
+K 25
+svn:wc:ra_dav:version-url
+V 64
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/negterm1.call
+END
+h17.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h17.0
+END
+my_l.0
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_l.0
+END
+my_a.call
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_a.call
+END
+malandro11.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro11.3
+END
+malandro15.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro15.3
+END
+h13.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h13.call
+END
+g3.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g3.0
+END
+blubb1
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/blubb1
+END
+algebran3.call
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/algebran3.call
+END
+blubb2
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/blubb2
+END
+fib.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/fib.call
+END
+g7.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g7.0
+END
+parameter6.call
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/parameter6.call
+END
+g1.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g1.call
+END
+h3.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h3.call
+END
+f7.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f7.call
+END
+algebra1.call
+K 25
+svn:wc:ra_dav:version-url
+V 64
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/algebra1.call
+END
+g9.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g9.call
+END
+h22.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h22.0
+END
+tiefen1.0
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/tiefen1.0
+END
+forum_05.3
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/forum_05.3
+END
+algebran4.0
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/algebran4.0
+END
+fib.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/fib.0
+END
+ag_g.3
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/ag_g.3
+END
+parameter3.0
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/parameter3.0
+END
+malandro03.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro03.3
+END
+h10.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h10.call
+END
+ag_k.3
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/ag_k.3
+END
+test4.2
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/test4.2
+END
+f1.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f1.0
+END
+my_f.call
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_f.call
+END
+h22.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h22.call
+END
+malandro07.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro07.3
+END
+tiefen1.call
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/tiefen1.call
+END
+h2.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h2.0
+END
+f5.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f5.0
+END
+h18.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h18.call
+END
+h6.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h6.0
+END
+f9.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f9.0
+END
+parameter3.call
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/parameter3.call
+END
+f4.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f4.call
+END
+my_a.0
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_a.0
+END
+f10.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f10.0
+END
+forumx_07.2
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/forumx_07.2
+END
+g6.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g6.call
+END
+h10.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h10.0
+END
+g12.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g12.0
+END
+my_e.0
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_e.0
+END
+h8.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h8.call
+END
+h14.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h14.0
+END
+h18.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h18.0
+END
+my_i.3
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_i.3
+END
+malandro12.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro12.3
+END
+g10.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g10.call
+END
+my_c.call
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_c.call
+END
+malandro16.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro16.3
+END
+regfehler.4
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/regfehler.4
+END
+h15.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h15.call
+END
+g4.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g4.0
+END
+tiefen.0
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/tiefen.0
+END
+my_k.call
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_k.call
+END
+g8.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g8.0
+END
+f1.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f1.call
+END
+negterm1.0
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/negterm1.0
+END
+g3.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g3.call
+END
+h5.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h5.call
+END
+f9.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f9.call
+END
+h23.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h23.0
+END
+algebran1.0
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/algebran1.0
+END
+forum_06.3
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/forum_06.3
+END
+ag_h.3
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/ag_h.3
+END
+f10.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f10.call
+END
+test1.3
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/test1.3
+END
+malandro04.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro04.3
+END
+parameter4.0
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/parameter4.0
+END
+h12.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h12.call
+END
+f2.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f2.0
+END
+my_h.call
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_h.call
+END
+h24.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h24.call
+END
+algebran2.call
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/algebran2.call
+END
+h3.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h3.0
+END
+f6.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f6.0
+END
+h7.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h7.0
+END
+tiefemax.call
+K 25
+svn:wc:ra_dav:version-url
+V 64
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/tiefemax.call
+END
+parameter5.call
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/parameter5.call
+END
+h2.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h2.call
+END
+forumx_04.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/forumx_04.3
+END
+my_b.0
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_b.0
+END
+f6.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f6.call
+END
+h11.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h11.0
+END
+g8.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g8.call
+END
+forumx_08.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/forumx_08.3
+END
+my_f.0
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_f.0
+END
+h15.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h15.0
+END
+my_j.0
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_j.0
+END
+malandro.3
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro.3
+END
+h19.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h19.0
+END
+malandro13.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro13.3
+END
+g12.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g12.call
+END
+my_e.call
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_e.call
+END
+h21.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h21.call
+END
+g1.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g1.0
+END
+algebra.call
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/algebra.call
+END
+g5.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g5.0
+END
+h17.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h17.call
+END
+parameter2.call
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/parameter2.call
+END
+g9.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g9.0
+END
+f3.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f3.call
+END
+localx01.3
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/localx01.3
+END
+g5.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g5.call
+END
+h20.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h20.0
+END
+h7.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h7.call
+END
+h24.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h24.0
+END
+algebran2.0
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/algebran2.0
+END
+fib2.call
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/fib2.call
+END
+ag_e.3
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/ag_e.3
+END
+forum_07.2
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/forum_07.2
+END
+parameter1.0
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/parameter1.0
+END
+malandro01.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro01.3
+END
+negterm.0
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/negterm.0
+END
+testscriptx03.3
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/testscriptx03.3
+END
+ag_i.3
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/ag_i.3
+END
+my_b.call
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_b.call
+END
+test2.3
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/test2.3
+END
+parameter5.0
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/parameter5.0
+END
+malandro05.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro05.3
+END
+f3.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f3.0
+END
+h14.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h14.call
+END
+malandro09.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro09.3
+END
+my_j.call
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_j.call
+END
+h4.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h4.0
+END
+algebran4.call
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/algebran4.call
+END
+f7.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f7.0
+END
+h8.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h8.0
+END
+g2.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g2.call
+END
+g10.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g10.0
+END
+forumx_05.3
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/forumx_05.3
+END
+h4.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h4.call
+END
+my_c.0
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_c.0
+END
+f8.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f8.call
+END
+h12.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h12.0
+END
+my_g.0
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_g.0
+END
+algebra.0
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/algebra.0
+END
+h16.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h16.0
+END
+local01.3
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/local01.3
+END
+my_k.0
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_k.0
+END
+malandro10.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro10.3
+END
+tiefemax.0
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/tiefemax.0
+END
+h11.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h11.call
+END
+malandro14.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro14.3
+END
+my_g.call
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_g.call
+END
+g2.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g2.0
+END
+h23.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h23.call
+END
+algebran1.call
+K 25
+svn:wc:ra_dav:version-url
+V 65
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/algebran1.call
+END
+g6.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g6.0
+END
+h19.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h19.call
+END
+parameter4.call
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/parameter4.call
+END
+h1.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h1.call
+END
+f5.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f5.call
+END
+g7.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g7.call
+END
+h21.0
+K 25
+svn:wc:ra_dav:version-url
+V 56
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h21.0
+END
+ag_b.3
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/ag_b.3
+END
+h9.call
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h9.call
+END
+forum_04.3
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/forum_04.3
+END
+algebran3.0
+K 25
+svn:wc:ra_dav:version-url
+V 62
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/algebran3.0
+END
+malandro02.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro02.3
+END
+forum_08.3
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/forum_08.3
+END
+parameter2.0
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/parameter2.0
+END
+ag_j.3
+K 25
+svn:wc:ra_dav:version-url
+V 57
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/ag_j.3
+END
+g11.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/g11.call
+END
+my_d.call
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_d.call
+END
+h20.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h20.call
+END
+test3.3
+K 25
+svn:wc:ra_dav:version-url
+V 58
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/test3.3
+END
+malandro06.3
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/malandro06.3
+END
+parameter6.0
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/parameter6.0
+END
+h1.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h1.0
+END
+f4.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f4.0
+END
+h16.call
+K 25
+svn:wc:ra_dav:version-url
+V 59
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h16.call
+END
+h5.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h5.0
+END
+my_l.call
+K 25
+svn:wc:ra_dav:version-url
+V 60
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/my_l.call
+END
+f8.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/f8.0
+END
+negterm.call
+K 25
+svn:wc:ra_dav:version-url
+V 63
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/negterm.call
+END
+parameter1.call
+K 25
+svn:wc:ra_dav:version-url
+V 66
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/parameter1.call
+END
+algebra1.0
+K 25
+svn:wc:ra_dav:version-url
+V 61
+/svn/private/!svn/ver/1041/ublu08/gesamt/testcases/algebra1.0
+END
+h9.0
+K 25
+svn:wc:ra_dav:version-url
+V 55
+/svn/private/!svn/ver/1024/ublu08/gesamt/testcases/h9.0
+END
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/entries b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/entries
new file mode 100644 (file)
index 0000000..118a2ff
--- /dev/null
@@ -0,0 +1,2368 @@
+8
+
+dir
+1024
+http://localhost/svn/private/ublu08/gesamt/testcases
+http://localhost/svn/private
+
+
+
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+
+
+svn:special svn:externals svn:needs-lock
+\f
+fib2.0
+file
+
+
+
+
+2008-05-17T18:34:47.000000Z
+d2958f8cee3c919b8e9778086e29fe14
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f2.call
+file
+
+
+
+
+2008-05-17T18:34:39.000000Z
+6fdf6778d8fc38ee5ed996403a0beee7
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g4.call
+file
+
+
+
+
+2008-05-17T18:35:03.000000Z
+91086753970b73e9bdca217572ac9c8d
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+tiefen.call
+file
+1041
+
+
+
+2008-05-19T17:30:32.000000Z
+4e4611a55d42deb5d4d01604659aee3d
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+forumx_06.3
+file
+
+
+
+
+2008-05-17T18:34:53.000000Z
+90f2ef946fd9ef28fcf94df027e89e56
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g11.0
+file
+
+
+
+
+2008-05-17T18:34:57.000000Z
+ece252a4a0ec44ce0e3f340b0f3403ec
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_d.0
+file
+1041
+
+
+
+2008-05-19T17:30:22.000000Z
+edb330d048a07ba2fae79cc04d38a7f1
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h6.call
+file
+
+
+
+
+2008-05-17T18:35:39.000000Z
+5e3326d561b87290b4eb674f1303870d
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h13.0
+file
+
+
+
+
+2008-05-17T18:35:13.000000Z
+9cd396fc3339078adcaf75a56ec19156
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_h.0
+file
+1041
+
+
+
+2008-05-19T17:30:23.000000Z
+24d3908b6b8ece4cc26953a301f0ac98
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+negterm1.call
+file
+
+
+
+
+2008-05-17T18:35:55.000000Z
+df277ed55a7f4f87cbef2815c8ac3d67
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h17.0
+file
+
+
+
+
+2008-05-17T18:35:19.000000Z
+3e6ee293496914c5f2096bd0a8550f3c
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_l.0
+file
+1041
+
+
+
+2008-05-19T17:30:23.000000Z
+c4a82df390b222018ef51ac46566b0a4
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+my_a.call
+file
+1041
+
+
+
+2008-05-19T17:30:22.000000Z
+d8e871df2c202de33d975b0b930ae83c
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+malandro11.3
+file
+
+
+
+
+2008-05-17T18:35:50.000000Z
+01f2397e7770ffe1210363a85e7cbbc2
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+malandro15.3
+file
+
+
+
+
+2008-05-17T18:35:51.000000Z
+d5ee0e5ba80a0bff089d93f5706f7408
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h13.call
+file
+
+
+
+
+2008-05-17T18:35:14.000000Z
+8b9ec70cddc4dc5d4a61e6c67e043ae2
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g3.0
+file
+
+
+
+
+2008-05-17T18:35:01.000000Z
+d4145f0545bc34ee767b3ff34657aebd
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+blubb1
+file
+1041
+
+
+
+2008-05-19T17:30:21.000000Z
+f81b880b28e12fe2650547d339c6af6c
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+blubb2
+file
+1041
+
+
+
+2008-05-19T17:30:21.000000Z
+de9c96c2092a644ceec2b3677393c0ab
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+algebran3.call
+file
+1041
+
+
+
+2008-05-19T17:30:21.000000Z
+31a43ca0465b0c89a605fdd25d6edefc
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+fib.call
+file
+
+
+
+
+2008-05-17T18:34:48.000000Z
+e56eb5050edfe853fd96c4a2eca3c749
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g7.0
+file
+
+
+
+
+2008-05-17T18:35:06.000000Z
+85ed1ed1e6f164ffea7ef137d363cb10
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+parameter6.call
+file
+1041
+
+
+
+2008-05-19T17:30:31.000000Z
+1265633d7de6b2d870ae79b1f20041de
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+g1.call
+file
+
+
+
+
+2008-05-17T18:34:59.000000Z
+53187b9d7adde68a9e5933499c8f922e
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h3.call
+file
+
+
+
+
+2008-05-17T18:35:35.000000Z
+c7c83b1c157701d046b33a3a66956187
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f7.call
+file
+
+
+
+
+2008-05-17T18:34:44.000000Z
+e8fddc19e3e601f8cc863dc7b144413c
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+algebra1.call
+file
+1041
+
+
+
+2008-05-19T17:29:07.000000Z
+cddcdc6d33203e7c02204531c0c5aa1d
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+tiefen1.0
+file
+1041
+
+
+
+2008-05-19T17:30:31.000000Z
+20468ca960f31ebc7c20ccfade82a914
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+g9.call
+file
+
+
+
+
+2008-05-17T18:35:09.000000Z
+c8351778328bd6445197f503b8139d17
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h22.0
+file
+
+
+
+
+2008-05-17T18:35:28.000000Z
+374eb9995cbdb04b5220807a5a3f87b9
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+algebran4.0
+file
+1041
+
+
+
+2008-05-19T17:30:21.000000Z
+e38a1ef87d78932d67c67aa84e1ccf75
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+forum_05.3
+file
+
+
+
+
+2008-05-17T18:34:49.000000Z
+ec3a03b9d419323173761bfd14e4a342
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+fib.0
+file
+
+
+
+
+2008-05-17T18:34:46.000000Z
+b968dfc49c1042155cf7df90e7f8e5ad
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+ag_g.3
+file
+1041
+
+
+
+2008-05-19T17:29:03.000000Z
+20534b17025920c73825550fb87ce080
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+parameter3.0
+file
+
+
+
+
+2008-05-17T18:35:58.000000Z
+a84451fa9cf4a391d17e8644f8178316
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+malandro03.3
+file
+
+
+
+
+2008-05-17T18:35:46.000000Z
+44d577a75f88e2050610bfdfbd14c6be
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h10.call
+file
+
+
+
+
+2008-05-17T18:35:10.000000Z
+2c485b4998bfadced17db390161a05bb
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+ag_k.3
+file
+1041
+
+
+
+2008-05-19T17:29:03.000000Z
+e65008728ffa41f53928dffb28f6c94b
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+test4.2
+file
+
+
+
+
+2008-05-17T18:36:03.000000Z
+261f08f201d000da065a3b6e0e4fe522
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f1.0
+file
+
+
+
+
+2008-05-17T18:34:36.000000Z
+d00a3189324e0dc908bc4c9ca337b874
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_f.call
+file
+1041
+
+
+
+2008-05-19T17:30:22.000000Z
+0a039d15f089d3b7e1e83741ad4fcf00
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+malandro07.3
+file
+
+
+
+
+2008-05-17T18:35:48.000000Z
+c7d7f7ab7fc7362e4f89df7180f12e63
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h22.call
+file
+
+
+
+
+2008-05-17T18:35:29.000000Z
+a6ffd7bcd611b80ef7dc135af39112c1
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+tiefen1.call
+file
+1041
+
+
+
+2008-05-19T17:30:32.000000Z
+267076ac0db282a9e63d3da134d02ac5
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h2.0
+file
+
+
+
+
+2008-05-17T18:35:24.000000Z
+35959e8c523c6f4174e6b55ab6b4c8c5
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f5.0
+file
+
+
+
+
+2008-05-17T18:34:42.000000Z
+569ee2be6fb5c62ef86cd3629cac5f3f
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h18.call
+file
+
+
+
+
+2008-05-17T18:35:21.000000Z
+a9a81170498be8f908b88064fd921651
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h6.0
+file
+
+
+
+
+2008-05-17T18:35:39.000000Z
+6278e991fa97d2fe44a6b667bf5ce8ce
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f9.0
+file
+
+
+
+
+2008-05-17T18:34:45.000000Z
+cacb3a1b2234ad40bb5845121342ecc5
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+parameter3.call
+file
+
+
+
+
+2008-05-17T18:35:59.000000Z
+b83655ced953bc57f27e16d99a375090
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f4.call
+file
+
+
+
+
+2008-05-17T18:34:41.000000Z
+86cb296fb35261183e0b7cb47da376ac
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_a.0
+file
+1041
+
+
+
+2008-05-19T17:30:21.000000Z
+3bffa81589a4257a11d417591113c422
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+f10.0
+file
+
+
+
+
+2008-05-17T18:34:36.000000Z
+2279bf66cdd77b388d7891edd286797c
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+forumx_07.2
+file
+
+
+
+
+2008-05-17T18:34:54.000000Z
+2eff768369bb8c5041b9f7d6472e6c09
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h10.0
+file
+
+
+
+
+2008-05-17T18:35:10.000000Z
+920dd8ceaaccf2467646b2131bb4cbe8
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g6.call
+file
+
+
+
+
+2008-05-17T18:35:06.000000Z
+194d639fa1d782d72d1c44fc2078f323
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g12.0
+file
+
+
+
+
+2008-05-17T18:34:58.000000Z
+06094e77abc9ec03ec903a3e24e6b665
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_e.0
+file
+1041
+
+
+
+2008-05-19T17:30:22.000000Z
+8bb24c7ef08877bec6d85c61c7f11486
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h8.call
+file
+
+
+
+
+2008-05-17T18:35:42.000000Z
+ddca9b6763b65ae5d4446c3ce803a4a0
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h14.0
+file
+
+
+
+
+2008-05-17T18:35:15.000000Z
+60bf3f187d9a1dbbb3a2465912fe3051
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h18.0
+file
+
+
+
+
+2008-05-17T18:35:21.000000Z
+9c1ecac2a855e2fa6a5e099d7785a7c9
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_i.3
+file
+1041
+
+
+
+2008-05-19T17:30:23.000000Z
+87e2ed0079b335710ad819a032522b7f
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+my_c.call
+file
+1041
+
+
+
+2008-05-19T17:30:22.000000Z
+8b6e3530f1036c37b21714cbdabc01c2
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+malandro12.3
+file
+
+
+
+
+2008-05-17T18:35:50.000000Z
+aa0e79272f940413edf4d665c6bf1b13
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g10.call
+file
+
+
+
+
+2008-05-17T18:34:56.000000Z
+771617f03dfcc89cecf5527b6598eb51
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+regfehler.4
+file
+1041
+
+
+
+2008-05-19T17:30:31.000000Z
+05069199bbd9dcebcc33a29331a5ad2e
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+malandro16.3
+file
+
+
+
+
+2008-05-17T18:35:52.000000Z
+dd6cb8db3847a3b5b61dd7472759e41e
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h15.call
+file
+
+
+
+
+2008-05-17T18:35:17.000000Z
+6b6c982647c1a7f22e564dd174368033
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g4.0
+file
+
+
+
+
+2008-05-17T18:35:02.000000Z
+9034560365c27619e90055b4da8e5372
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+tiefen.0
+file
+1041
+
+
+
+2008-05-19T17:30:31.000000Z
+894857a81390988f155cfc843435b294
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+my_k.call
+file
+1041
+
+
+
+2008-05-19T17:30:23.000000Z
+865f8ec640f631c4f6402456858abdca
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+g8.0
+file
+
+
+
+
+2008-05-17T18:35:08.000000Z
+fe8d7c2e7823e6bdd1c8fc28605bd9f2
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f1.call
+file
+
+
+
+
+2008-05-17T18:34:38.000000Z
+53fc6b9768c09b7c293a1be97bccbbc8
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+negterm1.0
+file
+
+
+
+
+2008-05-17T18:35:54.000000Z
+1988fa90318ee8b68449221ce78c241b
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g3.call
+file
+
+
+
+
+2008-05-17T18:35:02.000000Z
+e24b4fb290f801e18a3bf96d00461914
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h5.call
+file
+
+
+
+
+2008-05-17T18:35:38.000000Z
+d592a3082cc9d79acd5c6156405522e0
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f9.call
+file
+
+
+
+
+2008-05-17T18:34:46.000000Z
+9450201506a4516e5e1b1c9fda7c9bab
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+algebran1.0
+file
+1041
+
+
+
+2008-05-19T17:30:20.000000Z
+690865c2dd5b4b91db769c1da6d25140
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h23.0
+file
+
+
+
+
+2008-05-17T18:35:30.000000Z
+f2dc8cde2ccfc3b28c646d065432a62a
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+forum_06.3
+file
+
+
+
+
+2008-05-17T18:34:50.000000Z
+90f2ef946fd9ef28fcf94df027e89e56
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+ag_h.3
+file
+1041
+
+
+
+2008-05-19T17:29:03.000000Z
+650875eb5a2f896670989d5eb855cb15
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+f10.call
+file
+
+
+
+
+2008-05-17T18:34:37.000000Z
+f01c2a5bfad5e7cbe354daa82f38bf67
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+test1.3
+file
+
+
+
+
+2008-05-17T18:36:01.000000Z
+cf01830ebe0eea03c1eaa4b62661d921
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+parameter4.0
+file
+
+
+
+
+2008-05-17T18:35:59.000000Z
+ad9b196b5359debf25e96b7d89594a10
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+malandro04.3
+file
+
+
+
+
+2008-05-17T18:35:47.000000Z
+2d2e211032ee1340a92a0c1047c6118b
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h12.call
+file
+
+
+
+
+2008-05-17T18:35:13.000000Z
+6215af599791dd3c552445d220889a9a
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f2.0
+file
+
+
+
+
+2008-05-17T18:34:39.000000Z
+29979069993c3662a4e9ddde5923a4b4
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_h.call
+file
+1041
+
+
+
+2008-05-19T17:30:23.000000Z
+e089414c1c9493efaa9df2ee7a9c5fca
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+algebran2.call
+file
+1041
+
+
+
+2008-05-19T17:30:20.000000Z
+b9bdb8dfee8630bde64f5e468a27ab83
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h24.call
+file
+
+
+
+
+2008-05-17T18:35:33.000000Z
+dfb11c2012a60887f5f3be302c327154
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h3.0
+file
+
+
+
+
+2008-05-17T18:35:35.000000Z
+40c8a6988c2d1e144c1925fe9c5f5656
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f6.0
+file
+
+
+
+
+2008-05-17T18:34:43.000000Z
+ff8ef2815c929123b8b399719f7d74f9
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+tiefemax.call
+file
+1041
+
+
+
+2008-05-19T17:30:31.000000Z
+89db20d22c0c8952c78b02832a1d6890
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h7.0
+file
+
+
+
+
+2008-05-17T18:35:40.000000Z
+0e9afe918174f0bc89b1808f03e33c05
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+parameter5.call
+file
+
+
+
+
+2008-05-17T18:36:01.000000Z
+ec07056887a720babfb611b28d880856
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h2.call
+file
+
+
+
+
+2008-05-17T18:35:34.000000Z
+822191cbe70a0099adee9b3f9e2c86d8
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+forumx_04.3
+file
+
+
+
+
+2008-05-17T18:34:52.000000Z
+53d9c7e2e53e504ed29147e475c198ca
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_b.0
+file
+1041
+
+
+
+2008-05-19T17:30:22.000000Z
+a146ace45773876d04625ec0ff58a056
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+f6.call
+file
+
+
+
+
+2008-05-17T18:34:43.000000Z
+b2fa8363b75b105954deedddefba509f
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h11.0
+file
+
+
+
+
+2008-05-17T18:35:11.000000Z
+dff54389b093db24b8108199477d278c
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+forumx_08.3
+file
+
+
+
+
+2008-05-17T18:34:54.000000Z
+79467ccded17f71ad439c95f808fcc2b
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g8.call
+file
+
+
+
+
+2008-05-17T18:35:08.000000Z
+563ca6eb8935a8ea48110d8fe29569c1
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_f.0
+file
+1041
+
+
+
+2008-05-19T17:30:22.000000Z
+0651ad5f3f0b89ff295418768ee0f9b9
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h15.0
+file
+
+
+
+
+2008-05-17T18:35:16.000000Z
+c80e471f2847784226fc2037a551dcd4
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_j.0
+file
+1041
+
+
+
+2008-05-19T17:30:23.000000Z
+1ca4a232bb8d070c35c51fcaeb343760
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+malandro.3
+file
+
+
+
+
+2008-05-17T18:35:53.000000Z
+841850e2a940609318a3b8cfbcea5ae6
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h19.0
+file
+
+
+
+
+2008-05-17T18:35:22.000000Z
+c61fd976033fc4e9663e7e918282db3e
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+malandro13.3
+file
+
+
+
+
+2008-05-17T18:35:50.000000Z
+65c411aa64afeeff2977743f66888419
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_e.call
+file
+1041
+
+
+
+2008-05-19T17:30:22.000000Z
+aadf182e68032bd4d62184ec98f22f96
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+g12.call
+file
+
+
+
+
+2008-05-17T18:34:59.000000Z
+453b2d8fe412acc52b23bc2508816687
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h21.call
+file
+
+
+
+
+2008-05-17T18:35:27.000000Z
+c69e8ba6d274d469dd2633b623f4f2c9
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g1.0
+file
+
+
+
+
+2008-05-17T18:34:55.000000Z
+82a9ac30d92f5afc92769af75534e5ce
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+algebra.call
+file
+
+
+
+
+2008-05-17T18:34:36.000000Z
+3017bb3923bd9e6e82471364aaa815b5
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h17.call
+file
+
+
+
+
+2008-05-17T18:35:20.000000Z
+53dfbeab7dcdad7ba8b38eccd01fa8ca
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g5.0
+file
+
+
+
+
+2008-05-17T18:35:04.000000Z
+8aef877a7ce8f2b3b26fd597d526b14c
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+parameter2.call
+file
+
+
+
+
+2008-05-17T18:35:58.000000Z
+e7d734676b659257758b46640ed1edbe
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g9.0
+file
+
+
+
+
+2008-05-17T18:35:09.000000Z
+2bf1172b55d9c98b19fc64ebf4ef5013
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f3.call
+file
+
+
+
+
+2008-05-17T18:34:40.000000Z
+9f74f6b9a2f2bb52089896cfd60dd342
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+localx01.3
+file
+
+
+
+
+2008-05-17T18:35:45.000000Z
+dca62f2af71a71eb7ed4e232e530befc
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g5.call
+file
+
+
+
+
+2008-05-17T18:35:04.000000Z
+fea54a4aeac466fba2b371477119ade2
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h20.0
+file
+
+
+
+
+2008-05-17T18:35:25.000000Z
+31285e1e83984533b1a302c077efb47d
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h7.call
+file
+
+
+
+
+2008-05-17T18:35:41.000000Z
+6e1158562af63768dd7619dc10803233
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h24.0
+file
+
+
+
+
+2008-05-17T18:35:32.000000Z
+6fe5899c44e3d873842fdc4e62f5bda2
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+algebran2.0
+file
+1041
+
+
+
+2008-05-19T17:30:20.000000Z
+6f66742e13551edc693253c2fab30c31
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+fib2.call
+file
+
+
+
+
+2008-05-17T18:34:47.000000Z
+e56eb5050edfe853fd96c4a2eca3c749
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+ag_e.3
+file
+1041
+
+
+
+2008-05-19T17:29:03.000000Z
+3c2167748f53462c0b1db85d36117cab
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+forum_07.2
+file
+
+
+
+
+2008-05-17T18:34:51.000000Z
+2eff768369bb8c5041b9f7d6472e6c09
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+malandro01.3
+file
+
+
+
+
+2008-05-17T18:35:45.000000Z
+8d38fe618dc92f98cbddb87c0819c8cb
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+parameter1.0
+file
+
+
+
+
+2008-05-17T18:35:56.000000Z
+1261f0301022d7e1842bc892c067907e
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+negterm.0
+file
+
+
+
+
+2008-05-17T18:35:53.000000Z
+1988fa90318ee8b68449221ce78c241b
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+ag_i.3
+file
+1041
+
+
+
+2008-05-19T17:29:03.000000Z
+e7c3efc4c07c5fd29267e8dd51cc3837
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+my_b.call
+file
+1041
+
+
+
+2008-05-19T17:30:22.000000Z
+cf8ce2070e9a5e0209f878697a46df1b
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+testscriptx03.3
+file
+
+
+
+
+2008-05-17T18:36:04.000000Z
+d2168be28160d4fef8250aa5fd68cfe1
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+test2.3
+file
+
+
+
+
+2008-05-17T18:36:01.000000Z
+00abfc26a30c3aab6fc57a21d46ceb2b
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+parameter5.0
+file
+
+
+
+
+2008-05-17T18:36:00.000000Z
+5486f00b73c73fe463a8eed28381154c
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+malandro05.3
+file
+
+
+
+
+2008-05-17T18:35:47.000000Z
+1de8dca763ece7a0cee3a5089cf76270
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f3.0
+file
+
+
+
+
+2008-05-17T18:34:40.000000Z
+775d933d70fbc9bf5b376ab7c7ff27a7
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h14.call
+file
+
+
+
+
+2008-05-17T18:35:15.000000Z
+fbad72a47632903211179624698f35d1
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+malandro09.3
+file
+
+
+
+
+2008-05-17T18:35:49.000000Z
+0609d00302341b6cf4740d436bb87ad0
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_j.call
+file
+1041
+
+
+
+2008-05-19T17:30:23.000000Z
+1be4fc525da884e37231e897d8df9153
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+algebran4.call
+file
+1041
+
+
+
+2008-05-19T17:30:21.000000Z
+1bbb58f1e36e4916cd12fb28254a749e
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h4.0
+file
+
+
+
+
+2008-05-17T18:35:36.000000Z
+4426579c1fb1c0be99974b7118572ab1
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f7.0
+file
+
+
+
+
+2008-05-17T18:34:44.000000Z
+3dc7d7476bc4d0b46d5fb184022adb52
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h8.0
+file
+
+
+
+
+2008-05-17T18:35:42.000000Z
+7fc0ad824e5fd175879cf626dd56f0dc
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g2.call
+file
+
+
+
+
+2008-05-17T18:35:00.000000Z
+b445b24b77fdf47000fc1a23d9471e8c
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h4.call
+file
+
+
+
+
+2008-05-17T18:35:37.000000Z
+031adf99ed7c33e89db84c87a4392f69
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g10.0
+file
+
+
+
+
+2008-05-17T18:34:56.000000Z
+02cf0f938b64a2e5a50835b4d707b4b1
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+forumx_05.3
+file
+
+
+
+
+2008-05-17T18:34:53.000000Z
+e8e353ae2a690dc40e3de8029c7543cb
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_c.0
+file
+1041
+
+
+
+2008-05-19T17:30:22.000000Z
+b4d20db97a644172a90852ab1de2188b
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+f8.call
+file
+
+
+
+
+2008-05-17T18:34:45.000000Z
+b6e9fa907dbb258fad6cead558e7f9df
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h12.0
+file
+
+
+
+
+2008-05-17T18:35:12.000000Z
+34605d216eab69393ba1ead08a982d22
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_g.0
+file
+1041
+
+
+
+2008-05-19T17:30:22.000000Z
+733f1c17fd48c5ceb9a8195302a25c7e
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+algebra.0
+file
+
+
+
+
+2008-05-17T18:34:35.000000Z
+717629790b90ca013c291ef1bb3a95a0
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+local01.3
+file
+
+
+
+
+2008-05-17T18:35:44.000000Z
+dca62f2af71a71eb7ed4e232e530befc
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h16.0
+file
+
+
+
+
+2008-05-17T18:35:18.000000Z
+566b21ab8cab3072352b9e18a4ed3fed
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_k.0
+file
+1041
+
+
+
+2008-05-19T17:30:23.000000Z
+debe02b8fb99a1b6c2bcb67b01cb6239
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+malandro10.3
+file
+
+
+
+
+2008-05-17T18:35:49.000000Z
+b3b87392dfb554fa731b5e109e83717d
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+tiefemax.0
+file
+1041
+
+
+
+2008-05-19T17:30:31.000000Z
+6d11b557ca68eb04e5c719a4545b8c04
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h11.call
+file
+
+
+
+
+2008-05-17T18:35:12.000000Z
+aa4a6c331e36040999fdc6091a86de53
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+malandro14.3
+file
+
+
+
+
+2008-05-17T18:35:51.000000Z
+cdf5c8269940d7e8c2728eab2f130ddf
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_g.call
+file
+1041
+
+
+
+2008-05-19T17:30:22.000000Z
+a825f985690e62f5e01807e59c4c7482
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h23.call
+file
+
+
+
+
+2008-05-17T18:35:31.000000Z
+c51b55fe9488292f6a77ea71d4d4aecb
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g2.0
+file
+
+
+
+
+2008-05-17T18:35:00.000000Z
+5e8c78dd741ff50ea614da54efa537b6
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+algebran1.call
+file
+1041
+
+
+
+2008-05-19T17:30:20.000000Z
+b63ea91bf59174863748baf043bf7ad6
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+g6.0
+file
+
+
+
+
+2008-05-17T18:35:05.000000Z
+5ab93cfbb449b62c2cd53515f9df4be3
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h19.call
+file
+
+
+
+
+2008-05-17T18:35:23.000000Z
+4406ad63d0375889d65f96ed4e97d39b
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+parameter4.call
+file
+
+
+
+
+2008-05-17T18:36:00.000000Z
+3f3ffcf35a86b82feb72cdd985ca1e1f
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h1.call
+file
+
+
+
+
+2008-05-17T18:35:24.000000Z
+be6040170888395b1ae70ab05a943484
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f5.call
+file
+
+
+
+
+2008-05-17T18:34:42.000000Z
+8ff3de3a86a2bf00b8c8785e39034592
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+g7.call
+file
+
+
+
+
+2008-05-17T18:35:07.000000Z
+a6393c3b308f83f522919b795b69b1cd
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h21.0
+file
+
+
+
+
+2008-05-17T18:35:26.000000Z
+26f0e09fdf5c2ca9f2ec6444d21a68c8
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+ag_b.3
+file
+1041
+
+
+
+2008-05-19T17:29:03.000000Z
+32a248c9ddfc007209d982212d49f258
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h9.call
+file
+
+
+
+
+2008-05-17T18:35:43.000000Z
+1be02f3e94466102b74b448d10ec04ba
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+forum_04.3
+file
+
+
+
+
+2008-05-17T18:34:49.000000Z
+d83d32ffa882e4ec405476b4f6adcd3e
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+algebran3.0
+file
+1041
+
+
+
+2008-05-19T17:30:21.000000Z
+b1363161ef4a8deedb9ed90241d931d8
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+forum_08.3
+file
+
+
+
+
+2008-05-17T18:34:51.000000Z
+c613ec3ddb7ac662168c2b225a0b3297
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+malandro02.3
+file
+
+
+
+
+2008-05-17T18:35:46.000000Z
+945b02b282475aeffab4cd808c0b878c
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+parameter2.0
+file
+
+
+
+
+2008-05-17T18:35:57.000000Z
+549d406f0bafaf114784f2be8988aab0
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+ag_j.3
+file
+1041
+
+
+
+2008-05-19T17:29:03.000000Z
+d6e7caf90136e29dd91e2c7d1c93f93a
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+g11.call
+file
+
+
+
+
+2008-05-17T18:34:58.000000Z
+d0ff54d3ff20c20e847a49f57c771142
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_d.call
+file
+1041
+
+
+
+2008-05-19T17:30:22.000000Z
+7dc483abb732b281b49edee6cdcbc30d
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h20.call
+file
+
+
+
+
+2008-05-17T18:35:26.000000Z
+521a7a78c92ca8cf48afffe8360e44c3
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+test3.3
+file
+
+
+
+
+2008-05-17T18:36:03.000000Z
+47c8c25fbe3227587a7f10ef1937af2c
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+malandro06.3
+file
+
+
+
+
+2008-05-17T18:35:48.000000Z
+c568b31541a0c2fc3d705a83ae0d48b2
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+parameter6.0
+file
+1041
+
+
+
+2008-05-19T17:30:31.000000Z
+d8e483e11fd68ef30c00164967a3a084
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h1.0
+file
+
+
+
+
+2008-05-17T18:35:10.000000Z
+7ba7182884f0c9d735e9faaac7dfc7f1
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f4.0
+file
+
+
+
+
+2008-05-17T18:34:41.000000Z
+9184146efc94eceb80f1041fa1d276ce
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h16.call
+file
+
+
+
+
+2008-05-17T18:35:18.000000Z
+0653628e8d663327ddff45fd4eab19ee
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+h5.0
+file
+
+
+
+
+2008-05-17T18:35:37.000000Z
+84f8654c81a880f99dc7e3f55b9081ad
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+my_l.call
+file
+1041
+
+
+
+2008-05-19T17:30:23.000000Z
+bccf20fd3bc6ceb1985ed3b2573f103d
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+negterm.call
+file
+
+
+
+
+2008-05-17T18:35:55.000000Z
+bdad2e18de2d65822773cd8c924155f1
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+parameter1.call
+file
+
+
+
+
+2008-05-17T18:35:56.000000Z
+ec51e4a1adc8afa59fd5160c332b9645
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+f8.0
+file
+
+
+
+
+2008-05-17T18:34:44.000000Z
+9af62ae20a4a815560b5259d1a43f5af
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
+algebra1.0
+file
+1041
+
+
+
+2008-05-19T17:29:06.000000Z
+6ff960ca78782ddb093e1d5ed4887afa
+2008-05-19T17:31:08.560526Z
+1041
+paulchen
+\f
+h9.0
+file
+
+
+
+
+2008-05-17T18:35:43.000000Z
+e177856e7e23dc023d0b82bbd086be47
+2008-05-17T18:36:31.041320Z
+1024
+paulchen
+\f
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/format b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/format
new file mode 100644 (file)
index 0000000..45a4fb7
--- /dev/null
@@ -0,0 +1 @@
+8
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_b.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_b.3.svn-base
new file mode 100644 (file)
index 0000000..aa221b6
--- /dev/null
@@ -0,0 +1,6 @@
+func f()
+       var a := 1;
+       var b := 2;
+
+       c := 5;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_e.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_e.3.svn-base
new file mode 100644 (file)
index 0000000..130f8db
--- /dev/null
@@ -0,0 +1,9 @@
+func f(x,y)
+       var a := 1;
+       var b := 2;
+       if a = b then
+               a := 3;
+               x := z;
+       end;
+       b := x;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_g.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_g.3.svn-base
new file mode 100644 (file)
index 0000000..e9786b8
--- /dev/null
@@ -0,0 +1,9 @@
+struct a b a end;
+
+func f()
+  var off:=10;
+  var bound:=5;
+  var add:=2;
+  return g(off,bound,add); 
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_h.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_h.3.svn-base
new file mode 100644 (file)
index 0000000..c27e6fb
--- /dev/null
@@ -0,0 +1,5 @@
+func f()
+  off := 7;
+  var off:=5;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_i.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_i.3.svn-base
new file mode 100644 (file)
index 0000000..205e1ab
--- /dev/null
@@ -0,0 +1,13 @@
+struct a b end;
+
+func f()
+  var off:=10;
+  var bound:=5;
+  var add:=2;
+  if (1=1) then
+       var x :=17;
+  else
+       return x;
+  end;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_j.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_j.3.svn-base
new file mode 100644 (file)
index 0000000..3402eaa
--- /dev/null
@@ -0,0 +1,12 @@
+struct a b end;
+
+func f()
+  var off:=10;
+  var bound:=5;
+  var add:=2;
+  if (1=1) then
+       var x :=17;
+  end;
+  return x;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_k.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/ag_k.3.svn-base
new file mode 100644 (file)
index 0000000..56757a8
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b end;
+
+func f()
+       var s := 2;
+       s.c := 17;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebra.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebra.0.svn-base
new file mode 100644 (file)
index 0000000..0e42821
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b)
+       return a + 2 + ( 3 * b);
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebra.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebra.call.svn-base
new file mode 100644 (file)
index 0000000..32ab0ce
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long);
+return  ( 2 + 2 + (3 * 4)==test(2,4));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebra1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebra1.0.svn-base
new file mode 100644 (file)
index 0000000..0825f1b
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b)
+       return a + b + ( a * b);
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebra1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebra1.call.svn-base
new file mode 100644 (file)
index 0000000..8ed0c06
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long);
+return  ( 2 + 4 + (2 * 4)==test(2,4));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran1.0.svn-base
new file mode 100644 (file)
index 0000000..a9391c8
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 + 2;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran1.call.svn-base
new file mode 100644 (file)
index 0000000..c9261fc
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 3==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran2.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran2.0.svn-base
new file mode 100644 (file)
index 0000000..4eb74e9
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 * 2;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran2.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran2.call.svn-base
new file mode 100644 (file)
index 0000000..c537d9b
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 2==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran3.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran3.0.svn-base
new file mode 100644 (file)
index 0000000..78ff632
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 * 2 * ( 3 + 4 );
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran3.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran3.call.svn-base
new file mode 100644 (file)
index 0000000..b0dc2a6
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 14==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran4.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran4.0.svn-base
new file mode 100644 (file)
index 0000000..22c8cca
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 * 2 * ( 3 + 4 ) * ( 1 + 2 + 3 + ( 2 * 4 ));
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran4.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/algebran4.call.svn-base
new file mode 100644 (file)
index 0000000..daca892
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 196==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/blubb1.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/blubb1.svn-base
new file mode 100644 (file)
index 0000000..f5e4fb4
--- /dev/null
@@ -0,0 +1,17 @@
+       .text
+       .globl f
+       .type f, @function
+f:
+       movq %rdi, %rax
+       movq 16(%rax), %rax
+       movq 8(%rax), %rax
+       movq %rdi, %r11
+       movq 8(%r11), %r11
+       movq 16(%r11), %r11
+       imulq $-3, %r11
+       addq %r11, %rax
+       movq %rdi, %r10
+       movq 0(%r10), %r10
+       movq 0(%r10), %r10
+       addq %r10, %rax
+       ret
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/blubb2.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/blubb2.svn-base
new file mode 100644 (file)
index 0000000..66ac020
--- /dev/null
@@ -0,0 +1,17 @@
+       .text
+       .globl f
+       .type f, @function
+f:
+       movq %rdi, %rax
+       movq 16(%rax), %rax
+       movq 8(%rax), %rax
+       movq %rdi, %r11
+       movq 8(%r11), %r11
+       movq 16(%r11), %r11
+       addq $-3, %r11
+       addq %r11, %rax
+       movq %rdi, %r10
+       movq 0(%r10), %r10
+       movq 0(%r10), %r10
+       addq %r10, %rax
+       ret
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f1.0.svn-base
new file mode 100644 (file)
index 0000000..4851858
--- /dev/null
@@ -0,0 +1 @@
+func f1(a) if a=0 then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f1.call.svn-base
new file mode 100644 (file)
index 0000000..a671bc9
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f1(long a);
+
+return f1(0)==0 && f1(1)==1 && f1(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f10.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f10.0.svn-base
new file mode 100644 (file)
index 0000000..eb43918
--- /dev/null
@@ -0,0 +1 @@
+func f10(a) if (not (not (not (a=0)))) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f10.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f10.call.svn-base
new file mode 100644 (file)
index 0000000..368d3b6
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f10(long a);
+
+return f10(0)==1 && f10(1)==0 && f10(2)==0;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f2.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f2.0.svn-base
new file mode 100644 (file)
index 0000000..d5d4e9d
--- /dev/null
@@ -0,0 +1 @@
+func f2(a) if a=0 or a=1 then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f2.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f2.call.svn-base
new file mode 100644 (file)
index 0000000..84dd655
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f2(long a);
+
+return f2(0)==0 && f2(1)==0 && f2(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f3.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f3.0.svn-base
new file mode 100644 (file)
index 0000000..f555661
--- /dev/null
@@ -0,0 +1 @@
+func f3(a) if not (a=0) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f3.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f3.call.svn-base
new file mode 100644 (file)
index 0000000..2c41e97
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f3(long a);
+
+return f3(0)==1 && f3(1)==0 && f3(2)==0;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f4.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f4.0.svn-base
new file mode 100644 (file)
index 0000000..f938299
--- /dev/null
@@ -0,0 +1 @@
+func f4(a) if (a=0) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f4.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f4.call.svn-base
new file mode 100644 (file)
index 0000000..4e50571
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f4(long a);
+
+return f4(0)==0 && f4(1)==1 && f4(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f5.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f5.0.svn-base
new file mode 100644 (file)
index 0000000..f955fa4
--- /dev/null
@@ -0,0 +1 @@
+func f5(a) if (a=0 or a=1) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f5.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f5.call.svn-base
new file mode 100644 (file)
index 0000000..57b065c
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f5(long a);
+
+return f5(0)==0 && f5(1)==0 && f5(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f6.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f6.0.svn-base
new file mode 100644 (file)
index 0000000..1509257
--- /dev/null
@@ -0,0 +1 @@
+func f6(a) if (not (a=0)) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f6.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f6.call.svn-base
new file mode 100644 (file)
index 0000000..00f1f0c
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f6(long a);
+
+return f6(0)==1 && f6(1)==0 && f6(2)==0;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f7.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f7.0.svn-base
new file mode 100644 (file)
index 0000000..9e82cf8
--- /dev/null
@@ -0,0 +1 @@
+func f7(a) if not (not (a=0)) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f7.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f7.call.svn-base
new file mode 100644 (file)
index 0000000..7e32c70
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f7(long a);
+
+return f7(0)==0 && f7(1)==1 && f7(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f8.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f8.0.svn-base
new file mode 100644 (file)
index 0000000..0e098b2
--- /dev/null
@@ -0,0 +1 @@
+func f8(a) if not (not (a=0 or a=1)) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f8.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f8.call.svn-base
new file mode 100644 (file)
index 0000000..32ef9f5
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f8(long a);
+
+return f8(0)==0 && f8(1)==0 && f8(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f9.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f9.0.svn-base
new file mode 100644 (file)
index 0000000..8d582d5
--- /dev/null
@@ -0,0 +1 @@
+func f9(a) if not ((not (a=0)) or (not (a=1))) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f9.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/f9.call.svn-base
new file mode 100644 (file)
index 0000000..6cd0459
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f9(long a);
+
+return f9(0)==1 && f9(1)==1 && f9(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/fib.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/fib.0.svn-base
new file mode 100644 (file)
index 0000000..1e1c7c4
--- /dev/null
@@ -0,0 +1,17 @@
+func fib(n)
+  if 1 >= n then return n; end;
+  var fib_n := 1; (* fib(n) *)
+  var fib_n1 := 0; (* fib(n-1) *)
+  var r := 0;
+
+  while n >= 2 do
+    (* calculate fib(n+1) *)
+    r := fib_n + fib_n1;
+    (* update fib(n-1) and fib(n) *)
+    fib_n1 := fib_n;
+    fib_n := r;
+    n := n + (-1);
+  end;
+  return r;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/fib.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/fib.call.svn-base
new file mode 100644 (file)
index 0000000..3ab7260
--- /dev/null
@@ -0,0 +1,4 @@
+unsigned long fib(unsigned long n);
+
+return fib(7)+fib(8)==fib(9);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/fib2.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/fib2.0.svn-base
new file mode 100644 (file)
index 0000000..efc08c7
--- /dev/null
@@ -0,0 +1,16 @@
+ (* fibonacci *)
+ func fib(x)
+   if not x >= 2 then
+     return x;
+   else
+     return fib(x+(-1))+fib(x+(-2));
+   end;
+ end;
+(* func main()
+   if not (fib(9)+(-fib(7))) = fib(8) then
+     return 1;
+   else
+     return 0;
+   end;
+ end;
+*)
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/fib2.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/fib2.call.svn-base
new file mode 100644 (file)
index 0000000..3ab7260
--- /dev/null
@@ -0,0 +1,4 @@
+unsigned long fib(unsigned long n);
+
+return fib(7)+fib(8)==fib(9);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_04.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_04.3.svn-base
new file mode 100644 (file)
index 0000000..4ff470c
--- /dev/null
@@ -0,0 +1,2 @@
+(* a2 wird 2 mal definiert *)
+struct a1 a2 a2 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_05.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_05.3.svn-base
new file mode 100644 (file)
index 0000000..ee0fef4
--- /dev/null
@@ -0,0 +1,3 @@
+(* a2 wird 2 mal definiert *)
+struct a1 a2 a3 end;
+struct a4 a5 a2 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_06.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_06.3.svn-base
new file mode 100644 (file)
index 0000000..4c7d201
--- /dev/null
@@ -0,0 +1,4 @@
+func bla()
+abs.a1 := 100;
+ert.a1 := 200;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_07.2.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_07.2.svn-base
new file mode 100644 (file)
index 0000000..ea4c6dc
--- /dev/null
@@ -0,0 +1 @@
+123.a1
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_08.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forum_08.3.svn-base
new file mode 100644 (file)
index 0000000..e1af2b8
--- /dev/null
@@ -0,0 +1,9 @@
+func f(x, y)
+       if x = y then
+               var a := y;
+               a := x;
+       end;
+
+       (* zugriff auf a nicht mehr erlaubt *)
+       a := x;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_04.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_04.3.svn-base
new file mode 100644 (file)
index 0000000..0ace8af
--- /dev/null
@@ -0,0 +1,5 @@
+(* a2 wird 2 mal definiert *)
+struct end;
+struct a1 a2 a2 end;
+struct end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_05.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_05.3.svn-base
new file mode 100644 (file)
index 0000000..96ba1fc
--- /dev/null
@@ -0,0 +1,5 @@
+(* a2 wird 2 mal definiert *)
+struct end;
+struct a1 a2 a3 end;
+struct a4 a5 a2 end;
+struct end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_06.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_06.3.svn-base
new file mode 100644 (file)
index 0000000..4c7d201
--- /dev/null
@@ -0,0 +1,4 @@
+func bla()
+abs.a1 := 100;
+ert.a1 := 200;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_07.2.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_07.2.svn-base
new file mode 100644 (file)
index 0000000..ea4c6dc
--- /dev/null
@@ -0,0 +1 @@
+123.a1
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_08.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/forumx_08.3.svn-base
new file mode 100644 (file)
index 0000000..518e626
--- /dev/null
@@ -0,0 +1,11 @@
+func f(x, y)
+       if x = y then
+               var a := y;
+               a.t := x;
+       end;
+
+       (* zugriff auf a nicht mehr erlaubt *)
+       (* a := x; *)
+end;
+
+struct b end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g1.0.svn-base
new file mode 100644 (file)
index 0000000..3e1aa7b
--- /dev/null
@@ -0,0 +1 @@
+func g1(a,b) if (a=0 or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g1.call.svn-base
new file mode 100644 (file)
index 0000000..4a51316
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g1(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g1[2][2]={{1,1},{1,0}};
+
+return check_arg2(g1,ret_g1);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g10.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g10.0.svn-base
new file mode 100644 (file)
index 0000000..c36451f
--- /dev/null
@@ -0,0 +1 @@
+func g10(a,b) if not (not ((not (a=0)) or b=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g10.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g10.call.svn-base
new file mode 100644 (file)
index 0000000..4e23018
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g10(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g10[2][2]={{1,0},{1,1}};
+
+return check_arg2(g10,ret_g10);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g11.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g11.0.svn-base
new file mode 100644 (file)
index 0000000..e9126ea
--- /dev/null
@@ -0,0 +1 @@
+func g11(a,b) if not (not (a=0 or (not (b=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g11.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g11.call.svn-base
new file mode 100644 (file)
index 0000000..92174ff
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g11(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g11[2][2]={{1,1},{0,1}};
+
+return check_arg2(g11,ret_g11);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g12.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g12.0.svn-base
new file mode 100644 (file)
index 0000000..86e62c6
--- /dev/null
@@ -0,0 +1 @@
+func g12(a,b) if not (not ((not (a=0)) or (not (b=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g12.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g12.call.svn-base
new file mode 100644 (file)
index 0000000..bb34e88
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g12(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g12[2][2]={{0,1},{1,1}};
+
+return check_arg2(g12,ret_g12);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g2.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g2.0.svn-base
new file mode 100644 (file)
index 0000000..5751378
--- /dev/null
@@ -0,0 +1 @@
+func g2(a,b) if ((not (a=0)) or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g2.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g2.call.svn-base
new file mode 100644 (file)
index 0000000..186e1ef
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g2(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g2[2][2]={{1,0},{1,1}};
+
+return check_arg2(g2,ret_g2);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g3.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g3.0.svn-base
new file mode 100644 (file)
index 0000000..39f38e6
--- /dev/null
@@ -0,0 +1 @@
+func g3(a,b) if (a=0 or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g3.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g3.call.svn-base
new file mode 100644 (file)
index 0000000..42b0114
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g3(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g3[2][2]={{1,1},{0,1}};
+
+return check_arg2(g3,ret_g3);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g4.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g4.0.svn-base
new file mode 100644 (file)
index 0000000..1903693
--- /dev/null
@@ -0,0 +1 @@
+func g4(a,b) if ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g4.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g4.call.svn-base
new file mode 100644 (file)
index 0000000..d8abf9d
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g4(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g4[2][2]={{0,1},{1,1}};
+
+return check_arg2(g4,ret_g4);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g5.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g5.0.svn-base
new file mode 100644 (file)
index 0000000..1848063
--- /dev/null
@@ -0,0 +1 @@
+func g5(a,b) if not (a=0 or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g5.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g5.call.svn-base
new file mode 100644 (file)
index 0000000..c0d02bd
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g5(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g5[2][2]={{0,0},{0,1}};
+
+return check_arg2(g5,ret_g5);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g6.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g6.0.svn-base
new file mode 100644 (file)
index 0000000..19a197b
--- /dev/null
@@ -0,0 +1 @@
+func g6(a,b) if not ((not (a=0)) or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g6.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g6.call.svn-base
new file mode 100644 (file)
index 0000000..0a0dae8
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g6(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g6[2][2]={{0,1},{0,0}};
+
+return check_arg2(g6,ret_g6);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g7.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g7.0.svn-base
new file mode 100644 (file)
index 0000000..f926ddc
--- /dev/null
@@ -0,0 +1 @@
+func g7(a,b) if not (a=0 or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g7.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g7.call.svn-base
new file mode 100644 (file)
index 0000000..f7a2e29
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g7(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g7[2][2]={{0,0},{1,0}};
+
+return check_arg2(g7,ret_g7);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g8.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g8.0.svn-base
new file mode 100644 (file)
index 0000000..0265f42
--- /dev/null
@@ -0,0 +1 @@
+func g8(a,b) if not ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g8.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g8.call.svn-base
new file mode 100644 (file)
index 0000000..c580630
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g8(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g8[2][2]={{1,0},{0,0}};
+
+return check_arg2(g8,ret_g8);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g9.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g9.0.svn-base
new file mode 100644 (file)
index 0000000..29290d1
--- /dev/null
@@ -0,0 +1 @@
+func g9(a,b) if not (not (a=0 or b=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g9.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/g9.call.svn-base
new file mode 100644 (file)
index 0000000..5f4ca1d
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g9(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g9[2][2]={{1,1},{1,0}};
+
+return check_arg2(g9,ret_g9);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h1.0.svn-base
new file mode 100644 (file)
index 0000000..daa0824
--- /dev/null
@@ -0,0 +1 @@
+func h1(a,b,c,d) if (a=0 or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h1.call.svn-base
new file mode 100644 (file)
index 0000000..4c7b92e
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h1(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h1[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+
+return check_arg4(h1,ret_h1);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h10.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h10.0.svn-base
new file mode 100644 (file)
index 0000000..309c891
--- /dev/null
@@ -0,0 +1 @@
+func h10(a,b,c,d) if not (((not (a=0)) or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h10.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h10.call.svn-base
new file mode 100644 (file)
index 0000000..3c4b8be
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h10(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h10[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,1}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+return check_arg4(h10,ret_h10);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h11.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h11.0.svn-base
new file mode 100644 (file)
index 0000000..428ed7b
--- /dev/null
@@ -0,0 +1 @@
+func h11(a,b,c,d) if not ((a=0 or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h11.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h11.call.svn-base
new file mode 100644 (file)
index 0000000..4ef296d
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h11(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h11[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,1}},{{0,0},{0,0}}}};
+
+return check_arg4(h11,ret_h11);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h12.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h12.0.svn-base
new file mode 100644 (file)
index 0000000..b76853b
--- /dev/null
@@ -0,0 +1 @@
+func h12(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h12.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h12.call.svn-base
new file mode 100644 (file)
index 0000000..72c4540
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h12(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h12[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,1},{0,0}}}};
+
+return check_arg4(h12,ret_h12);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h13.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h13.0.svn-base
new file mode 100644 (file)
index 0000000..78a4d46
--- /dev/null
@@ -0,0 +1 @@
+func h13(a,b,c,d) if not ((a=0 or b=0) or (c=0 or (not (d=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h13.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h13.call.svn-base
new file mode 100644 (file)
index 0000000..050e5d9
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h13(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h13[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{1,0}}}};
+
+return check_arg4(h13,ret_h13);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h14.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h14.0.svn-base
new file mode 100644 (file)
index 0000000..010e6ea
--- /dev/null
@@ -0,0 +1 @@
+func h14(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h14.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h14.call.svn-base
new file mode 100644 (file)
index 0000000..c050ddf
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h14(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h14[2][2][2][2]={{{{0,0},{0,1}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+return check_arg4(h14,ret_h14);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h15.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h15.0.svn-base
new file mode 100644 (file)
index 0000000..6fc3e63
--- /dev/null
@@ -0,0 +1 @@
+func h15(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h15.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h15.call.svn-base
new file mode 100644 (file)
index 0000000..b85a6b4
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h15(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h15[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{1,0},{0,0}}}};
+
+return check_arg4(h15,ret_h15);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h16.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h16.0.svn-base
new file mode 100644 (file)
index 0000000..a286b04
--- /dev/null
@@ -0,0 +1 @@
+func h16(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h16.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h16.call.svn-base
new file mode 100644 (file)
index 0000000..e42a601
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h16(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h16[2][2][2][2]={{{{1,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+return check_arg4(h16,ret_h16);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h17.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h17.0.svn-base
new file mode 100644 (file)
index 0000000..7c19502
--- /dev/null
@@ -0,0 +1 @@
+func h17(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h17.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h17.call.svn-base
new file mode 100644 (file)
index 0000000..ca17563
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h17(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h17[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+
+return check_arg4(h17,ret_h17);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h18.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h18.0.svn-base
new file mode 100644 (file)
index 0000000..399f8f1
--- /dev/null
@@ -0,0 +1 @@
+func h18(a,b,c,d) if not (not (((not (a=0)) or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h18.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h18.call.svn-base
new file mode 100644 (file)
index 0000000..70a5084
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h18(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h18[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h18,ret_h18);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h19.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h19.0.svn-base
new file mode 100644 (file)
index 0000000..983d956
--- /dev/null
@@ -0,0 +1 @@
+func h19(a,b,c,d) if not (not ((a=0 or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h19.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h19.call.svn-base
new file mode 100644 (file)
index 0000000..476667c
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h19(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h19[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+
+return check_arg4(h19,ret_h19);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h2.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h2.0.svn-base
new file mode 100644 (file)
index 0000000..640c05c
--- /dev/null
@@ -0,0 +1 @@
+func h2(a,b,c,d) if ((not (a=0)) or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h2.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h2.call.svn-base
new file mode 100644 (file)
index 0000000..d3795d0
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h2(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h2[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h2,ret_h2);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h20.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h20.0.svn-base
new file mode 100644 (file)
index 0000000..a04974b
--- /dev/null
@@ -0,0 +1 @@
+func h20(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h20.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h20.call.svn-base
new file mode 100644 (file)
index 0000000..6232c65
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h20(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h20[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+
+return check_arg4(h20,ret_h20);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h21.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h21.0.svn-base
new file mode 100644 (file)
index 0000000..ce11b58
--- /dev/null
@@ -0,0 +1 @@
+func h21(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or (not (d=0))))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h21.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h21.call.svn-base
new file mode 100644 (file)
index 0000000..30f2d4e
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h21(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h21[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+return check_arg4(h21,ret_h21);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h22.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h22.0.svn-base
new file mode 100644 (file)
index 0000000..2bd2f23
--- /dev/null
@@ -0,0 +1 @@
+func h22(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h22.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h22.call.svn-base
new file mode 100644 (file)
index 0000000..36ce291
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h22(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h22[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h22,ret_h22);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h23.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h23.0.svn-base
new file mode 100644 (file)
index 0000000..6bfbf0f
--- /dev/null
@@ -0,0 +1 @@
+func h23(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h23.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h23.call.svn-base
new file mode 100644 (file)
index 0000000..8344b04
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h23(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h23[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+
+return check_arg4(h23,ret_h23);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h24.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h24.0.svn-base
new file mode 100644 (file)
index 0000000..957d280
--- /dev/null
@@ -0,0 +1 @@
+func h24(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h24.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h24.call.svn-base
new file mode 100644 (file)
index 0000000..129ee96
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h24(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h24[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h24,ret_h24);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h3.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h3.0.svn-base
new file mode 100644 (file)
index 0000000..2e3edd0
--- /dev/null
@@ -0,0 +1 @@
+func h3(a,b,c,d) if (a=0 or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h3.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h3.call.svn-base
new file mode 100644 (file)
index 0000000..5267fa0
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h3(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h3[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+
+return check_arg4(h3,ret_h3);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h4.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h4.0.svn-base
new file mode 100644 (file)
index 0000000..b157f3f
--- /dev/null
@@ -0,0 +1 @@
+func h4(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h4.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h4.call.svn-base
new file mode 100644 (file)
index 0000000..84a49ba
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h4(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h4[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+
+return check_arg4(h4,ret_h4);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h5.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h5.0.svn-base
new file mode 100644 (file)
index 0000000..3df3a8b
--- /dev/null
@@ -0,0 +1 @@
+func h5(a,b,c,d) if (a=0 or b=0) or (c=0 or (not (d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h5.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h5.call.svn-base
new file mode 100644 (file)
index 0000000..b2d1b60
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h5(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h5[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+return check_arg4(h5,ret_h5);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h6.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h6.0.svn-base
new file mode 100644 (file)
index 0000000..ab0cffe
--- /dev/null
@@ -0,0 +1 @@
+func h6(a,b,c,d) if ((not (a=0)) or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h6.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h6.call.svn-base
new file mode 100644 (file)
index 0000000..4b87331
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h6(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h6[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h6,ret_h6);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h7.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h7.0.svn-base
new file mode 100644 (file)
index 0000000..f1670e4
--- /dev/null
@@ -0,0 +1 @@
+func h7(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h7.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h7.call.svn-base
new file mode 100644 (file)
index 0000000..f92ed4b
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h7(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h7[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+
+return check_arg4(h7,ret_h7);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h8.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h8.0.svn-base
new file mode 100644 (file)
index 0000000..341f7d0
--- /dev/null
@@ -0,0 +1 @@
+func h8(a,b,c,d) if ((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h8.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h8.call.svn-base
new file mode 100644 (file)
index 0000000..147aa92
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h8(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h8[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h8,ret_h8);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h9.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h9.0.svn-base
new file mode 100644 (file)
index 0000000..ac07344
--- /dev/null
@@ -0,0 +1 @@
+func h9(a,b,c,d) if not ((a=0 or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h9.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/h9.call.svn-base
new file mode 100644 (file)
index 0000000..6b6b634
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h9(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h9[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,1}}}};
+
+return check_arg4(h9,ret_h9);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/local01.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/local01.3.svn-base
new file mode 100644 (file)
index 0000000..eeaa4b5
--- /dev/null
@@ -0,0 +1,7 @@
+
+struct a1 a2 a3 end;
+
+(* ein Name darf nur einmal im Programm als Feldname definiert werden:
+ * a2, a3 werden hier nochmals definiert  *)
+struct b1 a2 a3 end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/localx01.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/localx01.3.svn-base
new file mode 100644 (file)
index 0000000..eeaa4b5
--- /dev/null
@@ -0,0 +1,7 @@
+
+struct a1 a2 a3 end;
+
+(* ein Name darf nur einmal im Programm als Feldname definiert werden:
+ * a2, a3 werden hier nochmals definiert  *)
+struct b1 a2 a3 end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro.3.svn-base
new file mode 100644 (file)
index 0000000..c68d7f6
--- /dev/null
@@ -0,0 +1,14 @@
+struct a1 a2 a1 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro01.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro01.3.svn-base
new file mode 100644 (file)
index 0000000..0cbc8e7
--- /dev/null
@@ -0,0 +1,5 @@
+func g(x,y)
+    y:=0;
+  return y+z;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro02.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro02.3.svn-base
new file mode 100644 (file)
index 0000000..2087a5f
--- /dev/null
@@ -0,0 +1,6 @@
+func g(x,y)
+    y:=0;
+    z:=5;
+  return y;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro03.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro03.3.svn-base
new file mode 100644 (file)
index 0000000..1ae94f6
--- /dev/null
@@ -0,0 +1,21 @@
+(*no se si esto de verdad deberia de dar erro :) ahora si*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    var e:=5;
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return e;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro04.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro04.3.svn-base
new file mode 100644 (file)
index 0000000..0263da5
--- /dev/null
@@ -0,0 +1,24 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return a;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro05.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro05.3.svn-base
new file mode 100644 (file)
index 0000000..c7f99f5
--- /dev/null
@@ -0,0 +1,28 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return a;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+
+
+struct c1 c2  b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro06.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro06.3.svn-base
new file mode 100644 (file)
index 0000000..369409e
--- /dev/null
@@ -0,0 +1,27 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+ if x = y then
+   return a;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.d2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+
+
+struct c1 c2  b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro07.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro07.3.svn-base
new file mode 100644 (file)
index 0000000..c2c1d85
--- /dev/null
@@ -0,0 +1,26 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return x;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.c1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+struct c1 c2  b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro09.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro09.3.svn-base
new file mode 100644 (file)
index 0000000..cd873c9
--- /dev/null
@@ -0,0 +1,27 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return x;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+struct c1 c2  c3 end;
+struct b1 b2 b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro10.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro10.3.svn-base
new file mode 100644 (file)
index 0000000..aec69c5
--- /dev/null
@@ -0,0 +1,13 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  d:=x.b2;  
+       
+
+  return d;
+end;
+
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro11.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro11.3.svn-base
new file mode 100644 (file)
index 0000000..bebc86e
--- /dev/null
@@ -0,0 +1,24 @@
+(*esto no deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  d:=x.a2;  
+       
+
+  return d;
+end;
+
+
+struct b1 b2 b3 end;
+
+
+
+
+func f(x,y)
+  var a:=1;
+  a:=x.b2;  
+       
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro12.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro12.3.svn-base
new file mode 100644 (file)
index 0000000..2881360
--- /dev/null
@@ -0,0 +1,55 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  
+  var c:=1;
+  d:=x.a2;  
+  return d;
+
+(*esto deberia de dar erro g no esta definida*)
+    var d:=1;
+    if d = g then
+    d:=x.a1;
+    else
+    d:=x.a2;
+    end;
+    return d;
+
+
+end;
+
+
+struct b1 b2 b3 end;
+
+(*un comentario*)
+
+
+func f(x,y)
+  var a:=1;
+  a:=x.f1;  
+       
+  return a;
+end;
+
+struct c1 c2 c3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
+struct f1 f2 d3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro13.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro13.3.svn-base
new file mode 100644 (file)
index 0000000..fbe767d
--- /dev/null
@@ -0,0 +1,56 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  
+  var c:=1;
+  d:=x.a2;  
+  return d;
+
+(*esto deberia de dar error t no visible*)
+    var d:=1;
+    if d = g then
+    var t:=5;
+    t:=x.a1;
+    else
+    d:=x.a2;
+    end;
+    return t;
+
+
+end;
+
+
+struct b1 b2 b3 end;
+
+(*un comentario*)
+
+
+func f(x,y)
+  var a:=1;
+  a:=x.f1;  
+       
+  return a;
+end;
+
+struct c1 c2 c3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
+struct f1 f2 d3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro14.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro14.3.svn-base
new file mode 100644 (file)
index 0000000..e066ffd
--- /dev/null
@@ -0,0 +1,62 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  
+  var c:=1;
+  d:=x.a2;  
+  return d;
+
+(*esto deberia de dar error t no visible*)
+    var d:=1;
+    if d = g then
+    var t:=5;
+    t:=x.a1;
+    else
+    d:=x.a2;
+    end;
+    return t;
+
+
+end;
+
+
+struct b1 b2 b3 end;
+
+(*un comentario*)
+
+
+func f(x,y)
+
+    var g:=8;
+    if d = g then
+    var t:=5;
+    t:=x.a1;
+    else
+    g:=x.a2;
+    end;
+    return g;
+
+end;
+
+struct c1 c2 c3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
+struct f1 f2 d3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro15.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro15.3.svn-base
new file mode 100644 (file)
index 0000000..12ebc35
--- /dev/null
@@ -0,0 +1,23 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 a4 end;
+
+func f(a1,a2)
+  
+  var a3:=1;
+  var a4:=1;
+  a4:=a2.a2;  
+  return a1;
+
+(*esto deberia de dar error t no visible*)
+    if a1 = a3 then
+    a4:=a1.a1;
+    else
+    a4:=a2.a2;
+    end;
+    return a4;
+
+
+end;
+
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro16.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/malandro16.3.svn-base
new file mode 100644 (file)
index 0000000..472dcea
--- /dev/null
@@ -0,0 +1,19 @@
+(*esto  deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  
+    var g:=1;
+    var d:=1;
+    if d = g then
+    var t:=5;
+    d:=x.a1;
+    else
+    t:=x.a2;
+    end;
+    return t;
+
+
+end;
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_a.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_a.0.svn-base
new file mode 100644 (file)
index 0000000..cd57308
--- /dev/null
@@ -0,0 +1,3 @@
+func f()
+  return -2;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_a.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_a.call.svn-base
new file mode 100644 (file)
index 0000000..4b2cd63
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  ( -2==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_b.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_b.0.svn-base
new file mode 100644 (file)
index 0000000..8d81d42
--- /dev/null
@@ -0,0 +1,5 @@
+
+func f()
+  return 1+2+3+4;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_b.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_b.call.svn-base
new file mode 100644 (file)
index 0000000..02205cd
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (10==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_c.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_c.0.svn-base
new file mode 100644 (file)
index 0000000..522ce1b
--- /dev/null
@@ -0,0 +1,5 @@
+
+func f()
+  return 1+(2*3)+4;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_c.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_c.call.svn-base
new file mode 100644 (file)
index 0000000..97f1369
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (11==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_d.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_d.0.svn-base
new file mode 100644 (file)
index 0000000..a67a076
--- /dev/null
@@ -0,0 +1,5 @@
+
+func f()
+  return 1*2*3*4;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_d.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_d.call.svn-base
new file mode 100644 (file)
index 0000000..93a5f48
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (24==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_e.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_e.0.svn-base
new file mode 100644 (file)
index 0000000..76a4e1d
--- /dev/null
@@ -0,0 +1,4 @@
+func f()
+  return (1*((-2)+5))+(-1)+(((-2)+2)*17)+3;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_e.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_e.call.svn-base
new file mode 100644 (file)
index 0000000..5c3992a
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (5==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_f.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_f.0.svn-base
new file mode 100644 (file)
index 0000000..810ee86
--- /dev/null
@@ -0,0 +1,4 @@
+func f(x)
+  return x;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_f.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_f.call.svn-base
new file mode 100644 (file)
index 0000000..c1f6158
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f(long);
+return  (5==f((long)5));
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_g.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_g.0.svn-base
new file mode 100644 (file)
index 0000000..4d66d0a
--- /dev/null
@@ -0,0 +1,4 @@
+func f(x,y)
+  return x+y;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_g.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_g.call.svn-base
new file mode 100644 (file)
index 0000000..602cc85
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f(long, long);
+return  (12==f(5,7));
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_h.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_h.0.svn-base
new file mode 100644 (file)
index 0000000..38bc6a7
--- /dev/null
@@ -0,0 +1,8 @@
+func f(x,y,z)
+  return x+y+1+z+1;
+end;
+
+func g(z)
+  return z+3;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_h.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_h.call.svn-base
new file mode 100644 (file)
index 0000000..6a10bbb
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f(long, long, long);
+extern long g(long);
+return  (15==f(5,7,1) && 7==g(4));
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_i.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_i.3.svn-base
new file mode 100644 (file)
index 0000000..b9dc472
--- /dev/null
@@ -0,0 +1,8 @@
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func g(a1)
+  var x := 5;
+  return x.a1;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_j.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_j.0.svn-base
new file mode 100644 (file)
index 0000000..e01b5e7
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b c end;
+
+func f(s,s)
+  return s.a+s.b;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_j.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_j.call.svn-base
new file mode 100644 (file)
index 0000000..78ed0b0
--- /dev/null
@@ -0,0 +1,5 @@
+struct S {long a1; long a2; long a3;} s={10,20,30};
+struct T {long a1; long a2; long a3;} t={1,2,3};
+extern long f(long*,long*);
+
+return  ( 3==f((long*)&s, (long*)&t));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_k.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_k.0.svn-base
new file mode 100644 (file)
index 0000000..45e0e2a
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b c end;
+
+func f(s,s,s,s,t,s)
+  return s.a+s.b+t.c;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_k.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_k.call.svn-base
new file mode 100644 (file)
index 0000000..a353792
--- /dev/null
@@ -0,0 +1,9 @@
+struct A {long a1; long a2; long a3;} a={10,20,30};
+struct B {long a1; long a2; long a3;} b={10,20,30};
+struct C {long a1; long a2; long a3;} c={10,20,30};
+struct D {long a1; long a2; long a3;} d={10,20,30};
+struct E {long a1; long a2; long a3;} e={10,20,30};
+struct T {long a1; long a2; long a3;} t={1,2,3};
+extern long f(long*,long*,long*,long*,long*,long*);
+
+return  ( 33==f((long*)&a, (long*)&b, (long*)&c, (long*)&d, (long*)&e, (long*)&t));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_l.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_l.0.svn-base
new file mode 100644 (file)
index 0000000..38d9ff1
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b c end;
+
+func f(s)
+  return s.a.a+((-3)*s.b.c)+s.c.b;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_l.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/my_l.call.svn-base
new file mode 100644 (file)
index 0000000..7bdddf9
--- /dev/null
@@ -0,0 +1,7 @@
+struct A {long a1; long a2; long a3;} a={1,2,3};
+struct B {long a1; long a2; long a3;} b={10,20,30};
+struct C {long a1; long a2; long a3;} c={100,200,300};
+struct S {long a1; long a2; long a3;} s={(long*)&a,(long*)&b,(long*)&c};
+extern long f(long*);
+
+return  ( 111==f((long*)&s));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/negterm.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/negterm.0.svn-base
new file mode 100644 (file)
index 0000000..03eda66
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a)
+       return -a;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/negterm.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/negterm.call.svn-base
new file mode 100644 (file)
index 0000000..7726e38
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long);
+return  (-5==test(5));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/negterm1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/negterm1.0.svn-base
new file mode 100644 (file)
index 0000000..03eda66
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a)
+       return -a;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/negterm1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/negterm1.call.svn-base
new file mode 100644 (file)
index 0000000..6af387d
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long);
+return  (5==test(-5));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter1.0.svn-base
new file mode 100644 (file)
index 0000000..98c634a
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b)
+       return a + b;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter1.call.svn-base
new file mode 100644 (file)
index 0000000..9b5ae8f
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long);
+return  ( 34==test(29,5));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter2.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter2.0.svn-base
new file mode 100644 (file)
index 0000000..adb30ea
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b, c, d, e, f)
+       return a + b + c + d + e + f;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter2.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter2.call.svn-base
new file mode 100644 (file)
index 0000000..d9f04fd
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long,long,long,long,long);
+return  ( 21==test(1,2,3,4,5,6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter3.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter3.0.svn-base
new file mode 100644 (file)
index 0000000..35bfa51
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2,s3,s4,s5,s6)
+  return s1.a1 + s2.a2 + s3.a3 + s4.a1 + s5.a2 + s6.a3 ;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter3.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter3.call.svn-base
new file mode 100644 (file)
index 0000000..7609412
--- /dev/null
@@ -0,0 +1,12 @@
+
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+S_t s3 ={70,80,90};
+S_t s4 ={100,110,120};
+S_t s5 ={130,140,150};
+S_t s6 ={160,170,180};
+
+extern long test(long*,long*, long*, long*, long*, long*);
+
+return  ( (10+50+90+100+140+180)==test((long*)&s1,(long*)&s2,(long*)&s3,(long*)&s4,(long*)&s5,(long*)&s6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter4.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter4.0.svn-base
new file mode 100644 (file)
index 0000000..e611e82
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2,s3,s4,s5,s6)
+  return s1.a1 * s2.a2 * s3.a3 * s4.a1 * s5.a2 * s6.a3 ;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter4.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter4.call.svn-base
new file mode 100644 (file)
index 0000000..beb0013
--- /dev/null
@@ -0,0 +1,12 @@
+
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+S_t s3 ={70,80,90};
+S_t s4 ={100,110,120};
+S_t s5 ={130,140,150};
+S_t s6 ={160,170,180};
+
+extern long test(long*,long*, long*, long*, long*, long*);
+
+return  ( (10L*50L*90L*100L*140L*180L)==test((long*)&s1,(long*)&s2,(long*)&s3,(long*)&s4,(long*)&s5,(long*)&s6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter5.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter5.0.svn-base
new file mode 100644 (file)
index 0000000..6392d8e
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2)
+  return s1.a1 * s2.a2;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter5.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter5.call.svn-base
new file mode 100644 (file)
index 0000000..b6c8eaa
--- /dev/null
@@ -0,0 +1,7 @@
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+
+extern long test(long*,long*);
+
+return  ( (10*50)==test((long*)&s1,(long*)&s2));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter6.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter6.0.svn-base
new file mode 100644 (file)
index 0000000..6c4e304
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2,s3,s4,s5,s6)
+  return (s1.a1 * s2.a2) + ( s3.a3 * s4.a1) +( s5.a2 * s6.a3 );
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter6.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/parameter6.call.svn-base
new file mode 100644 (file)
index 0000000..300a941
--- /dev/null
@@ -0,0 +1,12 @@
+
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+S_t s3 ={70,80,90};
+S_t s4 ={100,110,120};
+S_t s5 ={130,140,150};
+S_t s6 ={160,170,180};
+
+extern long test(long*,long*, long*, long*, long*, long*);
+
+return  ( ((10L*50L)+(90L*100L)+(140L*180L))==test((long*)&s1,(long*)&s2,(long*)&s3,(long*)&s4,(long*)&s5,(long*)&s6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/regfehler.4.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/regfehler.4.svn-base
new file mode 100644 (file)
index 0000000..ca4f4e9
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b)
+  return (a * b) + (  a * b * ( a + b + ( a * b * ( a + b + ( a * b * (a + b))))));
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/test1.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/test1.3.svn-base
new file mode 100644 (file)
index 0000000..634a79e
--- /dev/null
@@ -0,0 +1,19 @@
+struct f1 f2 end;\r
+\r
+func f(p1)\r
+  var fx:=p1;\r
+  p1:=1;\r
+  (* f1 not defined *)\r
+  f1:=4;\r
+  (* shoult throw one of\r
+     - f1 not defined\r
+     - field access not allowed (var fx exists)\r
+     - field fx not defined\r
+  *)\r
+  f1.fx:=p1;\r
+  p1.f1:=p1.f2;\r
+  f(p1,p1.f2).f3:=0AFFEH;\r
+  var f1:=3;\r
+end;\r
+\r
+struct f3 end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/test2.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/test2.3.svn-base
new file mode 100644 (file)
index 0000000..eb9e51b
--- /dev/null
@@ -0,0 +1,10 @@
+func test()\r
+  var v1:=1;\r
+  if 1=1 then\r
+    v1:=2;\r
+    var v2:=1;\r
+  end;\r
+\r
+  (* v2 not visible *)\r
+  v2:=3;\r
+end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/test3.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/test3.3.svn-base
new file mode 100644 (file)
index 0000000..5a54492
--- /dev/null
@@ -0,0 +1,6 @@
+struct f end;\r
+\r
+func x()\r
+  (* f is a field, not a variable *)\r
+  f := 4;\r
+end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/test4.2.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/test4.2.svn-base
new file mode 100644 (file)
index 0000000..9c5de0d
--- /dev/null
@@ -0,0 +1,8 @@
+\r
+func x()\r
+  var z:=3;\r
+  (* field feld not defined *)\r
+  z.feld:=x(4,5,a);\r
+  (* syntax error *)\r
+  return z+z*z;\r
+end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/testscriptx03.3.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/testscriptx03.3.svn-base
new file mode 100644 (file)
index 0000000..dde46ed
--- /dev/null
@@ -0,0 +1,19 @@
+func g(x,y,z)
+  var res:=0;
+  res:=x;
+  while y>=0 or (not x=z) do
+    y:=y+(-1);
+    res:=res+z;
+  end;
+  return res;
+end;
+
+struct end;
+
+func f()
+  var off:=10 + (xx * 3);
+  var bound:= -test.c5;
+  var add:= g(test.c5) + 2;
+  return g(off,bound,add);
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefemax.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefemax.0.svn-base
new file mode 100644 (file)
index 0000000..4e9bb50
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b)
+  return (a * b) + (  a * b * ( a + b + ( a * b * ( a + b + ( a * b)))));
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefemax.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefemax.call.svn-base
new file mode 100644 (file)
index 0000000..b5d6800
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test(long,long);
+return ((3 * 8) + (3 * 8 * ( 3 + 8 + ( 3 * 8 * ( 3 + 8 + ( 3 * 8 ))))) == test(3,8)) ;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefen.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefen.0.svn-base
new file mode 100644 (file)
index 0000000..133e82b
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b,c,d,e,f)
+  return (a * b) + ( c * d) + (e  * f );
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefen.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefen.call.svn-base
new file mode 100644 (file)
index 0000000..d2b3f14
--- /dev/null
@@ -0,0 +1,4 @@
+
+extern long test(long,long, long, long, long, long);
+
+return  ( ( 1 * 2 ) + (3 * 4) + ( 5 * 6 ) == test(1,2,3,4,5,6)) ;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefen1.0.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefen1.0.svn-base
new file mode 100644 (file)
index 0000000..2b56241
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b)
+  return (a * b) + (  a * b * ( a + b + ( a * b)));
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefen1.call.svn-base b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/.svn/text-base/tiefen1.call.svn-base
new file mode 100644 (file)
index 0000000..62fba13
--- /dev/null
@@ -0,0 +1,4 @@
+
+extern long test(long,long);
+
+return  ( ( 3 * 5 ) + ( 3 *  5 * (3 + 5 + ( 3 * 5))) == test(3,5)) ;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_b.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_b.3
new file mode 100644 (file)
index 0000000..aa221b6
--- /dev/null
@@ -0,0 +1,6 @@
+func f()
+       var a := 1;
+       var b := 2;
+
+       c := 5;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_e.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_e.3
new file mode 100644 (file)
index 0000000..130f8db
--- /dev/null
@@ -0,0 +1,9 @@
+func f(x,y)
+       var a := 1;
+       var b := 2;
+       if a = b then
+               a := 3;
+               x := z;
+       end;
+       b := x;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_g.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_g.3
new file mode 100644 (file)
index 0000000..e9786b8
--- /dev/null
@@ -0,0 +1,9 @@
+struct a b a end;
+
+func f()
+  var off:=10;
+  var bound:=5;
+  var add:=2;
+  return g(off,bound,add); 
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_h.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_h.3
new file mode 100644 (file)
index 0000000..c27e6fb
--- /dev/null
@@ -0,0 +1,5 @@
+func f()
+  off := 7;
+  var off:=5;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_i.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_i.3
new file mode 100644 (file)
index 0000000..205e1ab
--- /dev/null
@@ -0,0 +1,13 @@
+struct a b end;
+
+func f()
+  var off:=10;
+  var bound:=5;
+  var add:=2;
+  if (1=1) then
+       var x :=17;
+  else
+       return x;
+  end;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_j.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_j.3
new file mode 100644 (file)
index 0000000..3402eaa
--- /dev/null
@@ -0,0 +1,12 @@
+struct a b end;
+
+func f()
+  var off:=10;
+  var bound:=5;
+  var add:=2;
+  if (1=1) then
+       var x :=17;
+  end;
+  return x;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_k.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/ag_k.3
new file mode 100644 (file)
index 0000000..56757a8
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b end;
+
+func f()
+       var s := 2;
+       s.c := 17;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebra.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebra.0
new file mode 100644 (file)
index 0000000..0e42821
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b)
+       return a + 2 + ( 3 * b);
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebra.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebra.call
new file mode 100644 (file)
index 0000000..32ab0ce
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long);
+return  ( 2 + 2 + (3 * 4)==test(2,4));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebra1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebra1.0
new file mode 100644 (file)
index 0000000..0825f1b
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b)
+       return a + b + ( a * b);
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebra1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebra1.call
new file mode 100644 (file)
index 0000000..8ed0c06
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long);
+return  ( 2 + 4 + (2 * 4)==test(2,4));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran1.0
new file mode 100644 (file)
index 0000000..a9391c8
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 + 2;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran1.call
new file mode 100644 (file)
index 0000000..c9261fc
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 3==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran2.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran2.0
new file mode 100644 (file)
index 0000000..4eb74e9
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 * 2;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran2.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran2.call
new file mode 100644 (file)
index 0000000..c537d9b
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 2==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran3.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran3.0
new file mode 100644 (file)
index 0000000..78ff632
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 * 2 * ( 3 + 4 );
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran3.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran3.call
new file mode 100644 (file)
index 0000000..b0dc2a6
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 14==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran4.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran4.0
new file mode 100644 (file)
index 0000000..22c8cca
--- /dev/null
@@ -0,0 +1,3 @@
+func test()
+       return 1 * 2 * ( 3 + 4 ) * ( 1 + 2 + 3 + ( 2 * 4 ));
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran4.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/algebran4.call
new file mode 100644 (file)
index 0000000..daca892
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test ();
+return  ( 196==test());
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/blubb1 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/blubb1
new file mode 100644 (file)
index 0000000..f5e4fb4
--- /dev/null
@@ -0,0 +1,17 @@
+       .text
+       .globl f
+       .type f, @function
+f:
+       movq %rdi, %rax
+       movq 16(%rax), %rax
+       movq 8(%rax), %rax
+       movq %rdi, %r11
+       movq 8(%r11), %r11
+       movq 16(%r11), %r11
+       imulq $-3, %r11
+       addq %r11, %rax
+       movq %rdi, %r10
+       movq 0(%r10), %r10
+       movq 0(%r10), %r10
+       addq %r10, %rax
+       ret
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/blubb2 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/blubb2
new file mode 100644 (file)
index 0000000..66ac020
--- /dev/null
@@ -0,0 +1,17 @@
+       .text
+       .globl f
+       .type f, @function
+f:
+       movq %rdi, %rax
+       movq 16(%rax), %rax
+       movq 8(%rax), %rax
+       movq %rdi, %r11
+       movq 8(%r11), %r11
+       movq 16(%r11), %r11
+       addq $-3, %r11
+       addq %r11, %rax
+       movq %rdi, %r10
+       movq 0(%r10), %r10
+       movq 0(%r10), %r10
+       addq %r10, %rax
+       ret
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f1.0
new file mode 100644 (file)
index 0000000..4851858
--- /dev/null
@@ -0,0 +1 @@
+func f1(a) if a=0 then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f1.call
new file mode 100644 (file)
index 0000000..a671bc9
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f1(long a);
+
+return f1(0)==0 && f1(1)==1 && f1(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f10.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f10.0
new file mode 100644 (file)
index 0000000..eb43918
--- /dev/null
@@ -0,0 +1 @@
+func f10(a) if (not (not (not (a=0)))) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f10.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f10.call
new file mode 100644 (file)
index 0000000..368d3b6
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f10(long a);
+
+return f10(0)==1 && f10(1)==0 && f10(2)==0;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f2.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f2.0
new file mode 100644 (file)
index 0000000..d5d4e9d
--- /dev/null
@@ -0,0 +1 @@
+func f2(a) if a=0 or a=1 then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f2.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f2.call
new file mode 100644 (file)
index 0000000..84dd655
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f2(long a);
+
+return f2(0)==0 && f2(1)==0 && f2(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f3.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f3.0
new file mode 100644 (file)
index 0000000..f555661
--- /dev/null
@@ -0,0 +1 @@
+func f3(a) if not (a=0) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f3.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f3.call
new file mode 100644 (file)
index 0000000..2c41e97
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f3(long a);
+
+return f3(0)==1 && f3(1)==0 && f3(2)==0;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f4.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f4.0
new file mode 100644 (file)
index 0000000..f938299
--- /dev/null
@@ -0,0 +1 @@
+func f4(a) if (a=0) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f4.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f4.call
new file mode 100644 (file)
index 0000000..4e50571
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f4(long a);
+
+return f4(0)==0 && f4(1)==1 && f4(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f5.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f5.0
new file mode 100644 (file)
index 0000000..f955fa4
--- /dev/null
@@ -0,0 +1 @@
+func f5(a) if (a=0 or a=1) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f5.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f5.call
new file mode 100644 (file)
index 0000000..57b065c
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f5(long a);
+
+return f5(0)==0 && f5(1)==0 && f5(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f6.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f6.0
new file mode 100644 (file)
index 0000000..1509257
--- /dev/null
@@ -0,0 +1 @@
+func f6(a) if (not (a=0)) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f6.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f6.call
new file mode 100644 (file)
index 0000000..00f1f0c
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f6(long a);
+
+return f6(0)==1 && f6(1)==0 && f6(2)==0;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f7.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f7.0
new file mode 100644 (file)
index 0000000..9e82cf8
--- /dev/null
@@ -0,0 +1 @@
+func f7(a) if not (not (a=0)) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f7.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f7.call
new file mode 100644 (file)
index 0000000..7e32c70
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f7(long a);
+
+return f7(0)==0 && f7(1)==1 && f7(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f8.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f8.0
new file mode 100644 (file)
index 0000000..0e098b2
--- /dev/null
@@ -0,0 +1 @@
+func f8(a) if not (not (a=0 or a=1)) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f8.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f8.call
new file mode 100644 (file)
index 0000000..32ef9f5
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f8(long a);
+
+return f8(0)==0 && f8(1)==0 && f8(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f9.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f9.0
new file mode 100644 (file)
index 0000000..8d582d5
--- /dev/null
@@ -0,0 +1 @@
+func f9(a) if not ((not (a=0)) or (not (a=1))) then return 0; else return 1; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f9.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/f9.call
new file mode 100644 (file)
index 0000000..6cd0459
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f9(long a);
+
+return f9(0)==1 && f9(1)==1 && f9(2)==1;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/fib.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/fib.0
new file mode 100644 (file)
index 0000000..1e1c7c4
--- /dev/null
@@ -0,0 +1,17 @@
+func fib(n)
+  if 1 >= n then return n; end;
+  var fib_n := 1; (* fib(n) *)
+  var fib_n1 := 0; (* fib(n-1) *)
+  var r := 0;
+
+  while n >= 2 do
+    (* calculate fib(n+1) *)
+    r := fib_n + fib_n1;
+    (* update fib(n-1) and fib(n) *)
+    fib_n1 := fib_n;
+    fib_n := r;
+    n := n + (-1);
+  end;
+  return r;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/fib.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/fib.call
new file mode 100644 (file)
index 0000000..3ab7260
--- /dev/null
@@ -0,0 +1,4 @@
+unsigned long fib(unsigned long n);
+
+return fib(7)+fib(8)==fib(9);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/fib2.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/fib2.0
new file mode 100644 (file)
index 0000000..efc08c7
--- /dev/null
@@ -0,0 +1,16 @@
+ (* fibonacci *)
+ func fib(x)
+   if not x >= 2 then
+     return x;
+   else
+     return fib(x+(-1))+fib(x+(-2));
+   end;
+ end;
+(* func main()
+   if not (fib(9)+(-fib(7))) = fib(8) then
+     return 1;
+   else
+     return 0;
+   end;
+ end;
+*)
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/fib2.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/fib2.call
new file mode 100644 (file)
index 0000000..3ab7260
--- /dev/null
@@ -0,0 +1,4 @@
+unsigned long fib(unsigned long n);
+
+return fib(7)+fib(8)==fib(9);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_04.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_04.3
new file mode 100644 (file)
index 0000000..4ff470c
--- /dev/null
@@ -0,0 +1,2 @@
+(* a2 wird 2 mal definiert *)
+struct a1 a2 a2 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_05.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_05.3
new file mode 100644 (file)
index 0000000..ee0fef4
--- /dev/null
@@ -0,0 +1,3 @@
+(* a2 wird 2 mal definiert *)
+struct a1 a2 a3 end;
+struct a4 a5 a2 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_06.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_06.3
new file mode 100644 (file)
index 0000000..4c7d201
--- /dev/null
@@ -0,0 +1,4 @@
+func bla()
+abs.a1 := 100;
+ert.a1 := 200;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_07.2 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_07.2
new file mode 100644 (file)
index 0000000..ea4c6dc
--- /dev/null
@@ -0,0 +1 @@
+123.a1
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_08.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forum_08.3
new file mode 100644 (file)
index 0000000..e1af2b8
--- /dev/null
@@ -0,0 +1,9 @@
+func f(x, y)
+       if x = y then
+               var a := y;
+               a := x;
+       end;
+
+       (* zugriff auf a nicht mehr erlaubt *)
+       a := x;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_04.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_04.3
new file mode 100644 (file)
index 0000000..0ace8af
--- /dev/null
@@ -0,0 +1,5 @@
+(* a2 wird 2 mal definiert *)
+struct end;
+struct a1 a2 a2 end;
+struct end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_05.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_05.3
new file mode 100644 (file)
index 0000000..96ba1fc
--- /dev/null
@@ -0,0 +1,5 @@
+(* a2 wird 2 mal definiert *)
+struct end;
+struct a1 a2 a3 end;
+struct a4 a5 a2 end;
+struct end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_06.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_06.3
new file mode 100644 (file)
index 0000000..4c7d201
--- /dev/null
@@ -0,0 +1,4 @@
+func bla()
+abs.a1 := 100;
+ert.a1 := 200;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_07.2 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_07.2
new file mode 100644 (file)
index 0000000..ea4c6dc
--- /dev/null
@@ -0,0 +1 @@
+123.a1
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_08.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/forumx_08.3
new file mode 100644 (file)
index 0000000..518e626
--- /dev/null
@@ -0,0 +1,11 @@
+func f(x, y)
+       if x = y then
+               var a := y;
+               a.t := x;
+       end;
+
+       (* zugriff auf a nicht mehr erlaubt *)
+       (* a := x; *)
+end;
+
+struct b end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g1.0
new file mode 100644 (file)
index 0000000..3e1aa7b
--- /dev/null
@@ -0,0 +1 @@
+func g1(a,b) if (a=0 or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g1.call
new file mode 100644 (file)
index 0000000..4a51316
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g1(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g1[2][2]={{1,1},{1,0}};
+
+return check_arg2(g1,ret_g1);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g10.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g10.0
new file mode 100644 (file)
index 0000000..c36451f
--- /dev/null
@@ -0,0 +1 @@
+func g10(a,b) if not (not ((not (a=0)) or b=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g10.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g10.call
new file mode 100644 (file)
index 0000000..4e23018
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g10(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g10[2][2]={{1,0},{1,1}};
+
+return check_arg2(g10,ret_g10);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g11.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g11.0
new file mode 100644 (file)
index 0000000..e9126ea
--- /dev/null
@@ -0,0 +1 @@
+func g11(a,b) if not (not (a=0 or (not (b=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g11.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g11.call
new file mode 100644 (file)
index 0000000..92174ff
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g11(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g11[2][2]={{1,1},{0,1}};
+
+return check_arg2(g11,ret_g11);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g12.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g12.0
new file mode 100644 (file)
index 0000000..86e62c6
--- /dev/null
@@ -0,0 +1 @@
+func g12(a,b) if not (not ((not (a=0)) or (not (b=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g12.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g12.call
new file mode 100644 (file)
index 0000000..bb34e88
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g12(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g12[2][2]={{0,1},{1,1}};
+
+return check_arg2(g12,ret_g12);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g2.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g2.0
new file mode 100644 (file)
index 0000000..5751378
--- /dev/null
@@ -0,0 +1 @@
+func g2(a,b) if ((not (a=0)) or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g2.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g2.call
new file mode 100644 (file)
index 0000000..186e1ef
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g2(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g2[2][2]={{1,0},{1,1}};
+
+return check_arg2(g2,ret_g2);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g3.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g3.0
new file mode 100644 (file)
index 0000000..39f38e6
--- /dev/null
@@ -0,0 +1 @@
+func g3(a,b) if (a=0 or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g3.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g3.call
new file mode 100644 (file)
index 0000000..42b0114
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g3(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g3[2][2]={{1,1},{0,1}};
+
+return check_arg2(g3,ret_g3);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g4.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g4.0
new file mode 100644 (file)
index 0000000..1903693
--- /dev/null
@@ -0,0 +1 @@
+func g4(a,b) if ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g4.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g4.call
new file mode 100644 (file)
index 0000000..d8abf9d
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g4(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g4[2][2]={{0,1},{1,1}};
+
+return check_arg2(g4,ret_g4);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g5.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g5.0
new file mode 100644 (file)
index 0000000..1848063
--- /dev/null
@@ -0,0 +1 @@
+func g5(a,b) if not (a=0 or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g5.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g5.call
new file mode 100644 (file)
index 0000000..c0d02bd
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g5(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g5[2][2]={{0,0},{0,1}};
+
+return check_arg2(g5,ret_g5);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g6.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g6.0
new file mode 100644 (file)
index 0000000..19a197b
--- /dev/null
@@ -0,0 +1 @@
+func g6(a,b) if not ((not (a=0)) or b=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g6.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g6.call
new file mode 100644 (file)
index 0000000..0a0dae8
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g6(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g6[2][2]={{0,1},{0,0}};
+
+return check_arg2(g6,ret_g6);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g7.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g7.0
new file mode 100644 (file)
index 0000000..f926ddc
--- /dev/null
@@ -0,0 +1 @@
+func g7(a,b) if not (a=0 or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g7.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g7.call
new file mode 100644 (file)
index 0000000..f7a2e29
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g7(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g7[2][2]={{0,0},{1,0}};
+
+return check_arg2(g7,ret_g7);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g8.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g8.0
new file mode 100644 (file)
index 0000000..0265f42
--- /dev/null
@@ -0,0 +1 @@
+func g8(a,b) if not ((not (a=0)) or (not (b=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g8.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g8.call
new file mode 100644 (file)
index 0000000..c580630
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g8(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g8[2][2]={{1,0},{0,0}};
+
+return check_arg2(g8,ret_g8);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g9.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g9.0
new file mode 100644 (file)
index 0000000..29290d1
--- /dev/null
@@ -0,0 +1 @@
+func g9(a,b) if not (not (a=0 or b=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g9.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/g9.call
new file mode 100644 (file)
index 0000000..5f4ca1d
--- /dev/null
@@ -0,0 +1,18 @@
+extern long g9(long a, long b);
+
+int check_arg2(long (*function)(long, long), long blubb[2][2]) {
+       int ret,a,b;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       ret&=(function(a,b)==blubb[a][b]);
+               }
+       }
+       return ret;
+}
+
+long ret_g9[2][2]={{1,1},{1,0}};
+
+return check_arg2(g9,ret_g9);
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h1.0
new file mode 100644 (file)
index 0000000..daa0824
--- /dev/null
@@ -0,0 +1 @@
+func h1(a,b,c,d) if (a=0 or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h1.call
new file mode 100644 (file)
index 0000000..4c7b92e
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h1(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h1[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+
+return check_arg4(h1,ret_h1);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h10.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h10.0
new file mode 100644 (file)
index 0000000..309c891
--- /dev/null
@@ -0,0 +1 @@
+func h10(a,b,c,d) if not (((not (a=0)) or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h10.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h10.call
new file mode 100644 (file)
index 0000000..3c4b8be
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h10(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h10[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,1}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+return check_arg4(h10,ret_h10);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h11.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h11.0
new file mode 100644 (file)
index 0000000..428ed7b
--- /dev/null
@@ -0,0 +1 @@
+func h11(a,b,c,d) if not ((a=0 or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h11.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h11.call
new file mode 100644 (file)
index 0000000..4ef296d
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h11(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h11[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,1}},{{0,0},{0,0}}}};
+
+return check_arg4(h11,ret_h11);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h12.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h12.0
new file mode 100644 (file)
index 0000000..b76853b
--- /dev/null
@@ -0,0 +1 @@
+func h12(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h12.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h12.call
new file mode 100644 (file)
index 0000000..72c4540
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h12(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h12[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,1},{0,0}}}};
+
+return check_arg4(h12,ret_h12);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h13.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h13.0
new file mode 100644 (file)
index 0000000..78a4d46
--- /dev/null
@@ -0,0 +1 @@
+func h13(a,b,c,d) if not ((a=0 or b=0) or (c=0 or (not (d=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h13.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h13.call
new file mode 100644 (file)
index 0000000..050e5d9
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h13(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h13[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{1,0}}}};
+
+return check_arg4(h13,ret_h13);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h14.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h14.0
new file mode 100644 (file)
index 0000000..010e6ea
--- /dev/null
@@ -0,0 +1 @@
+func h14(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h14.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h14.call
new file mode 100644 (file)
index 0000000..c050ddf
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h14(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h14[2][2][2][2]={{{{0,0},{0,1}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+return check_arg4(h14,ret_h14);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h15.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h15.0
new file mode 100644 (file)
index 0000000..6fc3e63
--- /dev/null
@@ -0,0 +1 @@
+func h15(a,b,c,d) if not ((a=0 or b=0) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h15.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h15.call
new file mode 100644 (file)
index 0000000..b85a6b4
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h15(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h15[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{1,0},{0,0}}}};
+
+return check_arg4(h15,ret_h15);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h16.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h16.0
new file mode 100644 (file)
index 0000000..a286b04
--- /dev/null
@@ -0,0 +1 @@
+func h16(a,b,c,d) if not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0)))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h16.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h16.call
new file mode 100644 (file)
index 0000000..e42a601
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h16(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h16[2][2][2][2]={{{{1,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,0}}}};
+
+return check_arg4(h16,ret_h16);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h17.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h17.0
new file mode 100644 (file)
index 0000000..7c19502
--- /dev/null
@@ -0,0 +1 @@
+func h17(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h17.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h17.call
new file mode 100644 (file)
index 0000000..ca17563
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h17(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h17[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,0}}}};
+
+return check_arg4(h17,ret_h17);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h18.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h18.0
new file mode 100644 (file)
index 0000000..399f8f1
--- /dev/null
@@ -0,0 +1 @@
+func h18(a,b,c,d) if not (not (((not (a=0)) or b=0) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h18.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h18.call
new file mode 100644 (file)
index 0000000..70a5084
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h18(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h18[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h18,ret_h18);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h19.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h19.0
new file mode 100644 (file)
index 0000000..983d956
--- /dev/null
@@ -0,0 +1 @@
+func h19(a,b,c,d) if not (not ((a=0 or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h19.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h19.call
new file mode 100644 (file)
index 0000000..476667c
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h19(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h19[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+
+return check_arg4(h19,ret_h19);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h2.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h2.0
new file mode 100644 (file)
index 0000000..640c05c
--- /dev/null
@@ -0,0 +1 @@
+func h2(a,b,c,d) if ((not (a=0)) or b=0) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h2.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h2.call
new file mode 100644 (file)
index 0000000..d3795d0
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h2(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h2[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,0}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h2,ret_h2);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h20.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h20.0
new file mode 100644 (file)
index 0000000..a04974b
--- /dev/null
@@ -0,0 +1 @@
+func h20(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h20.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h20.call
new file mode 100644 (file)
index 0000000..6232c65
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h20(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h20[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+
+return check_arg4(h20,ret_h20);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h21.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h21.0
new file mode 100644 (file)
index 0000000..ce11b58
--- /dev/null
@@ -0,0 +1 @@
+func h21(a,b,c,d) if not (not ((a=0 or b=0) or (c=0 or (not (d=0))))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h21.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h21.call
new file mode 100644 (file)
index 0000000..30f2d4e
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h21(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h21[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+return check_arg4(h21,ret_h21);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h22.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h22.0
new file mode 100644 (file)
index 0000000..2bd2f23
--- /dev/null
@@ -0,0 +1 @@
+func h22(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or (c=0 or d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h22.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h22.call
new file mode 100644 (file)
index 0000000..36ce291
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h22(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h22[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h22,ret_h22);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h23.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h23.0
new file mode 100644 (file)
index 0000000..6bfbf0f
--- /dev/null
@@ -0,0 +1 @@
+func h23(a,b,c,d) if not (not ((a=0 or b=0) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h23.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h23.call
new file mode 100644 (file)
index 0000000..8344b04
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h23(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h23[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+
+return check_arg4(h23,ret_h23);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h24.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h24.0
new file mode 100644 (file)
index 0000000..957d280
--- /dev/null
@@ -0,0 +1 @@
+func h24(a,b,c,d) if not (not (((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h24.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h24.call
new file mode 100644 (file)
index 0000000..129ee96
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h24(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h24[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h24,ret_h24);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h3.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h3.0
new file mode 100644 (file)
index 0000000..2e3edd0
--- /dev/null
@@ -0,0 +1 @@
+func h3(a,b,c,d) if (a=0 or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h3.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h3.call
new file mode 100644 (file)
index 0000000..5267fa0
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h3(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h3[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,0}},{{1,1},{1,1}}}};
+
+return check_arg4(h3,ret_h3);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h4.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h4.0
new file mode 100644 (file)
index 0000000..b157f3f
--- /dev/null
@@ -0,0 +1 @@
+func h4(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h4.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h4.call
new file mode 100644 (file)
index 0000000..84a49ba
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h4(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h4[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,0},{1,1}}}};
+
+return check_arg4(h4,ret_h4);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h5.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h5.0
new file mode 100644 (file)
index 0000000..3df3a8b
--- /dev/null
@@ -0,0 +1 @@
+func h5(a,b,c,d) if (a=0 or b=0) or (c=0 or (not (d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h5.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h5.call
new file mode 100644 (file)
index 0000000..b2d1b60
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h5(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h5[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{0,1}}}};
+
+return check_arg4(h5,ret_h5);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h6.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h6.0
new file mode 100644 (file)
index 0000000..ab0cffe
--- /dev/null
@@ -0,0 +1 @@
+func h6(a,b,c,d) if ((not (a=0)) or (not (b=0))) or (c=0 or d=0) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h6.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h6.call
new file mode 100644 (file)
index 0000000..4b87331
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h6(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h6[2][2][2][2]={{{{1,1},{1,0}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h6,ret_h6);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h7.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h7.0
new file mode 100644 (file)
index 0000000..f1670e4
--- /dev/null
@@ -0,0 +1 @@
+func h7(a,b,c,d) if (a=0 or b=0) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h7.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h7.call
new file mode 100644 (file)
index 0000000..f92ed4b
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h7(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h7[2][2][2][2]={{{{1,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{0,1},{1,1}}}};
+
+return check_arg4(h7,ret_h7);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h8.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h8.0
new file mode 100644 (file)
index 0000000..341f7d0
--- /dev/null
@@ -0,0 +1 @@
+func h8(a,b,c,d) if ((not (a=0)) or (not (b=0))) or ((not (c=0)) or (not (d=0))) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h8.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h8.call
new file mode 100644 (file)
index 0000000..147aa92
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h8(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h8[2][2][2][2]={{{{0,1},{1,1}},{{1,1},{1,1}}},{{{1,1},{1,1}},{{1,1},{1,1}}}};
+
+return check_arg4(h8,ret_h8);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h9.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h9.0
new file mode 100644 (file)
index 0000000..ac07344
--- /dev/null
@@ -0,0 +1 @@
+func h9(a,b,c,d) if not ((a=0 or b=0) or (c=0 or d=0)) then return 1; else return 0; end; end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h9.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/h9.call
new file mode 100644 (file)
index 0000000..6b6b634
--- /dev/null
@@ -0,0 +1,21 @@
+extern long h9(long a, long b, long c, long d);
+
+int check_arg4(long (*function)(long, long, long, long), long blubb[2][2][2][2]) {
+       int ret,a,b,c,d;
+       ret=1;
+       for(a=0;a<2;a++) {
+               for(b=0;b<2;b++) {
+                       for(c=0;c<2;c++) {
+                               for(d=0;d<2;d++) {
+                                       ret&=(function(a,b,c,d)==blubb[a][b][c][d]);
+                               }
+                       }
+               }
+       }
+       return ret;
+}
+
+long ret_h9[2][2][2][2]={{{{0,0},{0,0}},{{0,0},{0,0}}},{{{0,0},{0,0}},{{0,0},{0,1}}}};
+
+return check_arg4(h9,ret_h9);
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/local01.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/local01.3
new file mode 100644 (file)
index 0000000..eeaa4b5
--- /dev/null
@@ -0,0 +1,7 @@
+
+struct a1 a2 a3 end;
+
+(* ein Name darf nur einmal im Programm als Feldname definiert werden:
+ * a2, a3 werden hier nochmals definiert  *)
+struct b1 a2 a3 end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/localx01.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/localx01.3
new file mode 100644 (file)
index 0000000..eeaa4b5
--- /dev/null
@@ -0,0 +1,7 @@
+
+struct a1 a2 a3 end;
+
+(* ein Name darf nur einmal im Programm als Feldname definiert werden:
+ * a2, a3 werden hier nochmals definiert  *)
+struct b1 a2 a3 end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro.3
new file mode 100644 (file)
index 0000000..c68d7f6
--- /dev/null
@@ -0,0 +1,14 @@
+struct a1 a2 a1 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro01.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro01.3
new file mode 100644 (file)
index 0000000..0cbc8e7
--- /dev/null
@@ -0,0 +1,5 @@
+func g(x,y)
+    y:=0;
+  return y+z;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro02.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro02.3
new file mode 100644 (file)
index 0000000..2087a5f
--- /dev/null
@@ -0,0 +1,6 @@
+func g(x,y)
+    y:=0;
+    z:=5;
+  return y;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro03.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro03.3
new file mode 100644 (file)
index 0000000..1ae94f6
--- /dev/null
@@ -0,0 +1,21 @@
+(*no se si esto de verdad deberia de dar erro :) ahora si*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    var e:=5;
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return e;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro04.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro04.3
new file mode 100644 (file)
index 0000000..0263da5
--- /dev/null
@@ -0,0 +1,24 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return a;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro05.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro05.3
new file mode 100644 (file)
index 0000000..c7f99f5
--- /dev/null
@@ -0,0 +1,28 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return a;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+
+
+struct c1 c2  b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro06.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro06.3
new file mode 100644 (file)
index 0000000..369409e
--- /dev/null
@@ -0,0 +1,27 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+ if x = y then
+   return a;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.d2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+
+
+struct c1 c2  b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro07.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro07.3
new file mode 100644 (file)
index 0000000..c2c1d85
--- /dev/null
@@ -0,0 +1,26 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return x;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.c1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+struct c1 c2  b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro09.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro09.3
new file mode 100644 (file)
index 0000000..cd873c9
--- /dev/null
@@ -0,0 +1,27 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func f(x,y)
+ if x = y then
+   return x;
+ end;
+
+  var a:=0;
+  var b := (y+8);
+  var c := y.b2;
+  if b = c then
+    a:=x.a1;
+  else
+    a:=x.a2;
+  end;
+  return a;
+  var d:=1;
+  if d = a then
+  a:=3;
+  end;
+  return a;
+end;
+
+struct c1 c2  c3 end;
+struct b1 b2 b3 end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro10.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro10.3
new file mode 100644 (file)
index 0000000..aec69c5
--- /dev/null
@@ -0,0 +1,13 @@
+(*esto si deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  d:=x.b2;  
+       
+
+  return d;
+end;
+
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro11.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro11.3
new file mode 100644 (file)
index 0000000..bebc86e
--- /dev/null
@@ -0,0 +1,24 @@
+(*esto no deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  d:=x.a2;  
+       
+
+  return d;
+end;
+
+
+struct b1 b2 b3 end;
+
+
+
+
+func f(x,y)
+  var a:=1;
+  a:=x.b2;  
+       
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro12.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro12.3
new file mode 100644 (file)
index 0000000..2881360
--- /dev/null
@@ -0,0 +1,55 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  
+  var c:=1;
+  d:=x.a2;  
+  return d;
+
+(*esto deberia de dar erro g no esta definida*)
+    var d:=1;
+    if d = g then
+    d:=x.a1;
+    else
+    d:=x.a2;
+    end;
+    return d;
+
+
+end;
+
+
+struct b1 b2 b3 end;
+
+(*un comentario*)
+
+
+func f(x,y)
+  var a:=1;
+  a:=x.f1;  
+       
+  return a;
+end;
+
+struct c1 c2 c3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
+struct f1 f2 d3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro13.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro13.3
new file mode 100644 (file)
index 0000000..fbe767d
--- /dev/null
@@ -0,0 +1,56 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  
+  var c:=1;
+  d:=x.a2;  
+  return d;
+
+(*esto deberia de dar error t no visible*)
+    var d:=1;
+    if d = g then
+    var t:=5;
+    t:=x.a1;
+    else
+    d:=x.a2;
+    end;
+    return t;
+
+
+end;
+
+
+struct b1 b2 b3 end;
+
+(*un comentario*)
+
+
+func f(x,y)
+  var a:=1;
+  a:=x.f1;  
+       
+  return a;
+end;
+
+struct c1 c2 c3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
+struct f1 f2 d3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro14.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro14.3
new file mode 100644 (file)
index 0000000..e066ffd
--- /dev/null
@@ -0,0 +1,62 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  var d:=1;
+  
+  var c:=1;
+  d:=x.a2;  
+  return d;
+
+(*esto deberia de dar error t no visible*)
+    var d:=1;
+    if d = g then
+    var t:=5;
+    t:=x.a1;
+    else
+    d:=x.a2;
+    end;
+    return t;
+
+
+end;
+
+
+struct b1 b2 b3 end;
+
+(*un comentario*)
+
+
+func f(x,y)
+
+    var g:=8;
+    if d = g then
+    var t:=5;
+    t:=x.a1;
+    else
+    g:=x.a2;
+    end;
+    return g;
+
+end;
+
+struct c1 c2 c3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
+struct f1 f2 d3 end;
+
+func f(z)
+  var d:=1;
+  d:=z.b2;  
+       
+
+  return d;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro15.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro15.3
new file mode 100644 (file)
index 0000000..12ebc35
--- /dev/null
@@ -0,0 +1,23 @@
+(*esto deberia de dar erro*)
+struct a1 a2 a3 a4 end;
+
+func f(a1,a2)
+  
+  var a3:=1;
+  var a4:=1;
+  a4:=a2.a2;  
+  return a1;
+
+(*esto deberia de dar error t no visible*)
+    if a1 = a3 then
+    a4:=a1.a1;
+    else
+    a4:=a2.a2;
+    end;
+    return a4;
+
+
+end;
+
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro16.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/malandro16.3
new file mode 100644 (file)
index 0000000..472dcea
--- /dev/null
@@ -0,0 +1,19 @@
+(*esto  deberia de dar erro*)
+struct a1 a2 a3 end;
+
+func f(x,y)
+  
+    var g:=1;
+    var d:=1;
+    if d = g then
+    var t:=5;
+    d:=x.a1;
+    else
+    t:=x.a2;
+    end;
+    return t;
+
+
+end;
+
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_a.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_a.0
new file mode 100644 (file)
index 0000000..cd57308
--- /dev/null
@@ -0,0 +1,3 @@
+func f()
+  return -2;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_a.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_a.call
new file mode 100644 (file)
index 0000000..4b2cd63
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  ( -2==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_b.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_b.0
new file mode 100644 (file)
index 0000000..8d81d42
--- /dev/null
@@ -0,0 +1,5 @@
+
+func f()
+  return 1+2+3+4;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_b.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_b.call
new file mode 100644 (file)
index 0000000..02205cd
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (10==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_c.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_c.0
new file mode 100644 (file)
index 0000000..522ce1b
--- /dev/null
@@ -0,0 +1,5 @@
+
+func f()
+  return 1+(2*3)+4;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_c.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_c.call
new file mode 100644 (file)
index 0000000..97f1369
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (11==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_d.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_d.0
new file mode 100644 (file)
index 0000000..a67a076
--- /dev/null
@@ -0,0 +1,5 @@
+
+func f()
+  return 1*2*3*4;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_d.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_d.call
new file mode 100644 (file)
index 0000000..93a5f48
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (24==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_e.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_e.0
new file mode 100644 (file)
index 0000000..76a4e1d
--- /dev/null
@@ -0,0 +1,4 @@
+func f()
+  return (1*((-2)+5))+(-1)+(((-2)+2)*17)+3;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_e.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_e.call
new file mode 100644 (file)
index 0000000..5c3992a
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f();
+return  (5==f());
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_f.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_f.0
new file mode 100644 (file)
index 0000000..810ee86
--- /dev/null
@@ -0,0 +1,4 @@
+func f(x)
+  return x;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_f.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_f.call
new file mode 100644 (file)
index 0000000..c1f6158
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f(long);
+return  (5==f((long)5));
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_g.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_g.0
new file mode 100644 (file)
index 0000000..4d66d0a
--- /dev/null
@@ -0,0 +1,4 @@
+func f(x,y)
+  return x+y;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_g.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_g.call
new file mode 100644 (file)
index 0000000..602cc85
--- /dev/null
@@ -0,0 +1,3 @@
+extern long f(long, long);
+return  (12==f(5,7));
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_h.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_h.0
new file mode 100644 (file)
index 0000000..38bc6a7
--- /dev/null
@@ -0,0 +1,8 @@
+func f(x,y,z)
+  return x+y+1+z+1;
+end;
+
+func g(z)
+  return z+3;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_h.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_h.call
new file mode 100644 (file)
index 0000000..6a10bbb
--- /dev/null
@@ -0,0 +1,4 @@
+extern long f(long, long, long);
+extern long g(long);
+return  (15==f(5,7,1) && 7==g(4));
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_i.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_i.3
new file mode 100644 (file)
index 0000000..b9dc472
--- /dev/null
@@ -0,0 +1,8 @@
+struct a1 a2 a3 end;
+struct b1 b2 b3 end;
+
+func g(a1)
+  var x := 5;
+  return x.a1;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_j.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_j.0
new file mode 100644 (file)
index 0000000..e01b5e7
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b c end;
+
+func f(s,s)
+  return s.a+s.b;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_j.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_j.call
new file mode 100644 (file)
index 0000000..78ed0b0
--- /dev/null
@@ -0,0 +1,5 @@
+struct S {long a1; long a2; long a3;} s={10,20,30};
+struct T {long a1; long a2; long a3;} t={1,2,3};
+extern long f(long*,long*);
+
+return  ( 3==f((long*)&s, (long*)&t));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_k.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_k.0
new file mode 100644 (file)
index 0000000..45e0e2a
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b c end;
+
+func f(s,s,s,s,t,s)
+  return s.a+s.b+t.c;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_k.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_k.call
new file mode 100644 (file)
index 0000000..a353792
--- /dev/null
@@ -0,0 +1,9 @@
+struct A {long a1; long a2; long a3;} a={10,20,30};
+struct B {long a1; long a2; long a3;} b={10,20,30};
+struct C {long a1; long a2; long a3;} c={10,20,30};
+struct D {long a1; long a2; long a3;} d={10,20,30};
+struct E {long a1; long a2; long a3;} e={10,20,30};
+struct T {long a1; long a2; long a3;} t={1,2,3};
+extern long f(long*,long*,long*,long*,long*,long*);
+
+return  ( 33==f((long*)&a, (long*)&b, (long*)&c, (long*)&d, (long*)&e, (long*)&t));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_l.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_l.0
new file mode 100644 (file)
index 0000000..38d9ff1
--- /dev/null
@@ -0,0 +1,6 @@
+struct a b c end;
+
+func f(s)
+  return s.a.a+((-3)*s.b.c)+s.c.b;
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_l.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/my_l.call
new file mode 100644 (file)
index 0000000..7bdddf9
--- /dev/null
@@ -0,0 +1,7 @@
+struct A {long a1; long a2; long a3;} a={1,2,3};
+struct B {long a1; long a2; long a3;} b={10,20,30};
+struct C {long a1; long a2; long a3;} c={100,200,300};
+struct S {long a1; long a2; long a3;} s={(long*)&a,(long*)&b,(long*)&c};
+extern long f(long*);
+
+return  ( 111==f((long*)&s));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/negterm.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/negterm.0
new file mode 100644 (file)
index 0000000..03eda66
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a)
+       return -a;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/negterm.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/negterm.call
new file mode 100644 (file)
index 0000000..7726e38
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long);
+return  (-5==test(5));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/negterm1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/negterm1.0
new file mode 100644 (file)
index 0000000..03eda66
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a)
+       return -a;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/negterm1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/negterm1.call
new file mode 100644 (file)
index 0000000..6af387d
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long);
+return  (5==test(-5));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter1.0
new file mode 100644 (file)
index 0000000..98c634a
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b)
+       return a + b;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter1.call
new file mode 100644 (file)
index 0000000..9b5ae8f
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long);
+return  ( 34==test(29,5));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter2.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter2.0
new file mode 100644 (file)
index 0000000..adb30ea
--- /dev/null
@@ -0,0 +1,3 @@
+func test(a, b, c, d, e, f)
+       return a + b + c + d + e + f;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter2.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter2.call
new file mode 100644 (file)
index 0000000..d9f04fd
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test (long,long,long,long,long,long);
+return  ( 21==test(1,2,3,4,5,6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter3.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter3.0
new file mode 100644 (file)
index 0000000..35bfa51
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2,s3,s4,s5,s6)
+  return s1.a1 + s2.a2 + s3.a3 + s4.a1 + s5.a2 + s6.a3 ;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter3.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter3.call
new file mode 100644 (file)
index 0000000..7609412
--- /dev/null
@@ -0,0 +1,12 @@
+
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+S_t s3 ={70,80,90};
+S_t s4 ={100,110,120};
+S_t s5 ={130,140,150};
+S_t s6 ={160,170,180};
+
+extern long test(long*,long*, long*, long*, long*, long*);
+
+return  ( (10+50+90+100+140+180)==test((long*)&s1,(long*)&s2,(long*)&s3,(long*)&s4,(long*)&s5,(long*)&s6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter4.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter4.0
new file mode 100644 (file)
index 0000000..e611e82
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2,s3,s4,s5,s6)
+  return s1.a1 * s2.a2 * s3.a3 * s4.a1 * s5.a2 * s6.a3 ;
+end;
\ No newline at end of file
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter4.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter4.call
new file mode 100644 (file)
index 0000000..beb0013
--- /dev/null
@@ -0,0 +1,12 @@
+
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+S_t s3 ={70,80,90};
+S_t s4 ={100,110,120};
+S_t s5 ={130,140,150};
+S_t s6 ={160,170,180};
+
+extern long test(long*,long*, long*, long*, long*, long*);
+
+return  ( (10L*50L*90L*100L*140L*180L)==test((long*)&s1,(long*)&s2,(long*)&s3,(long*)&s4,(long*)&s5,(long*)&s6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter5.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter5.0
new file mode 100644 (file)
index 0000000..6392d8e
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2)
+  return s1.a1 * s2.a2;
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter5.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter5.call
new file mode 100644 (file)
index 0000000..b6c8eaa
--- /dev/null
@@ -0,0 +1,7 @@
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+
+extern long test(long*,long*);
+
+return  ( (10*50)==test((long*)&s1,(long*)&s2));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter6.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter6.0
new file mode 100644 (file)
index 0000000..6c4e304
--- /dev/null
@@ -0,0 +1,5 @@
+struct a1 a2 a3 end;
+
+func test(s1,s2,s3,s4,s5,s6)
+  return (s1.a1 * s2.a2) + ( s3.a3 * s4.a1) +( s5.a2 * s6.a3 );
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter6.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/parameter6.call
new file mode 100644 (file)
index 0000000..300a941
--- /dev/null
@@ -0,0 +1,12 @@
+
+typedef struct S {long a1; long a2; long a3;} S_t;
+S_t s1 ={10,20,30};
+S_t s2 ={40,50,60};
+S_t s3 ={70,80,90};
+S_t s4 ={100,110,120};
+S_t s5 ={130,140,150};
+S_t s6 ={160,170,180};
+
+extern long test(long*,long*, long*, long*, long*, long*);
+
+return  ( ((10L*50L)+(90L*100L)+(140L*180L))==test((long*)&s1,(long*)&s2,(long*)&s3,(long*)&s4,(long*)&s5,(long*)&s6));
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/regfehler.4 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/regfehler.4
new file mode 100644 (file)
index 0000000..ca4f4e9
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b)
+  return (a * b) + (  a * b * ( a + b + ( a * b * ( a + b + ( a * b * (a + b))))));
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/test1.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/test1.3
new file mode 100644 (file)
index 0000000..634a79e
--- /dev/null
@@ -0,0 +1,19 @@
+struct f1 f2 end;\r
+\r
+func f(p1)\r
+  var fx:=p1;\r
+  p1:=1;\r
+  (* f1 not defined *)\r
+  f1:=4;\r
+  (* shoult throw one of\r
+     - f1 not defined\r
+     - field access not allowed (var fx exists)\r
+     - field fx not defined\r
+  *)\r
+  f1.fx:=p1;\r
+  p1.f1:=p1.f2;\r
+  f(p1,p1.f2).f3:=0AFFEH;\r
+  var f1:=3;\r
+end;\r
+\r
+struct f3 end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/test2.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/test2.3
new file mode 100644 (file)
index 0000000..eb9e51b
--- /dev/null
@@ -0,0 +1,10 @@
+func test()\r
+  var v1:=1;\r
+  if 1=1 then\r
+    v1:=2;\r
+    var v2:=1;\r
+  end;\r
+\r
+  (* v2 not visible *)\r
+  v2:=3;\r
+end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/test3.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/test3.3
new file mode 100644 (file)
index 0000000..5a54492
--- /dev/null
@@ -0,0 +1,6 @@
+struct f end;\r
+\r
+func x()\r
+  (* f is a field, not a variable *)\r
+  f := 4;\r
+end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/test4.2 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/test4.2
new file mode 100644 (file)
index 0000000..9c5de0d
--- /dev/null
@@ -0,0 +1,8 @@
+\r
+func x()\r
+  var z:=3;\r
+  (* field feld not defined *)\r
+  z.feld:=x(4,5,a);\r
+  (* syntax error *)\r
+  return z+z*z;\r
+end;\r
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/testscriptx03.3 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/testscriptx03.3
new file mode 100644 (file)
index 0000000..dde46ed
--- /dev/null
@@ -0,0 +1,19 @@
+func g(x,y,z)
+  var res:=0;
+  res:=x;
+  while y>=0 or (not x=z) do
+    y:=y+(-1);
+    res:=res+z;
+  end;
+  return res;
+end;
+
+struct end;
+
+func f()
+  var off:=10 + (xx * 3);
+  var bound:= -test.c5;
+  var add:= g(test.c5) + 2;
+  return g(off,bound,add);
+end;
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefemax.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefemax.0
new file mode 100644 (file)
index 0000000..4e9bb50
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b)
+  return (a * b) + (  a * b * ( a + b + ( a * b * ( a + b + ( a * b)))));
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefemax.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefemax.call
new file mode 100644 (file)
index 0000000..b5d6800
--- /dev/null
@@ -0,0 +1,2 @@
+extern long test(long,long);
+return ((3 * 8) + (3 * 8 * ( 3 + 8 + ( 3 * 8 * ( 3 + 8 + ( 3 * 8 ))))) == test(3,8)) ;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefen.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefen.0
new file mode 100644 (file)
index 0000000..133e82b
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b,c,d,e,f)
+  return (a * b) + ( c * d) + (e  * f );
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefen.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefen.call
new file mode 100644 (file)
index 0000000..d2b3f14
--- /dev/null
@@ -0,0 +1,4 @@
+
+extern long test(long,long, long, long, long, long);
+
+return  ( ( 1 * 2 ) + (3 * 4) + ( 5 * 6 ) == test(1,2,3,4,5,6)) ;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefen1.0 b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefen1.0
new file mode 100644 (file)
index 0000000..2b56241
--- /dev/null
@@ -0,0 +1,4 @@
+
+func test(a,b)
+  return (a * b) + (  a * b * ( a + b + ( a * b)));
+end;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefen1.call b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/testcases/tiefen1.call
new file mode 100644 (file)
index 0000000..62fba13
--- /dev/null
@@ -0,0 +1,4 @@
+
+extern long test(long,long);
+
+return  ( ( 3 * 5 ) + ( 3 *  5 * (3 + 5 + ( 3 * 5))) == test(3,5)) ;
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/tree.c b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/tree.c
new file mode 100755 (executable)
index 0000000..c3e0a44
--- /dev/null
@@ -0,0 +1,157 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "tree.h"
+#include "code_gen.h"
+
+/* new_node: create "standard node" with one or two children and
+ * given operation
+ */
+treenode *new_node(int op, treenode *left, treenode *right) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+
+#ifdef DEBUG
+       printf("new_node: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=(char *)NULL;
+
+       return new;
+}
+
+/* new_node_value: create "standard node" with one or two children and
+ * given operation and the given value
+ */
+treenode *new_node_value(int op, treenode *left, treenode *right, long value, int param) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+
+#ifdef DEBUG
+       printf("new_node: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=(char *)NULL;
+       new->value=value;
+       new->param_index=param;
+
+       return new;
+}
+
+/* new_leaf: create leaf - node with no children */
+treenode *new_leaf(int op) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_leaf: %i (%s)\n",op,rule_names[op]);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=(char *)NULL;
+
+       return new;
+}
+
+/* new_named_leaf: create leaf with name (used for identifier or
+ * value of number)
+ */
+treenode *new_named_leaf(int op, char *name) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_leaf: %i (%s), %s\n",op,rule_names[op],name);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=name;
+
+       return new;
+}
+
+/* new_named_leaf_value: create leaf with name (used for identifier or
+ * value of number)
+ */
+treenode *new_named_leaf_value(int op, char *name, long value, int param) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_leaf_value: %i (%s), %s, %li\n",op,rule_names[op],name,value);
+#endif
+
+       new->kids[0]=(treenode *)NULL;
+       new->kids[1]=(treenode *)NULL;
+       new->op=op;
+       new->name=name;
+       new->value=value;
+       new->param_index=param;
+
+       return new;
+}
+
+/* new_named_node: create node with one or two children and a name (can be
+ * used for storing a procedure's name)
+ */
+treenode *new_named_node(int op, treenode *left, treenode *right, char *name) {
+       treenode *new=(treenode *)malloc(sizeof(treenode));
+       
+#ifdef DEBUG
+       printf("new_named_node: %i (%s), %s\n",op,rule_names[op],name);
+#endif
+       
+       new->kids[0]=left;
+       new->kids[1]=right;
+       new->op=op;
+       new->name=name;
+
+       return new;
+}
+
+void write_indent(int indent) {
+       int a;
+       for(a=0;a<indent;a++) {
+               printf("|");
+       }
+}
+
+/* write_tree: display the tree generated by the attributed grammar; this tree willk
+ * be traversed by iburg
+ */
+void write_tree(treenode *node, int indent) {
+       write_indent(indent);
+       printf("%s, %s, %s\n",rule_names[node->op],node->name,node->reg);
+       if(node->kids[0]!=(treenode *)NULL || node->kids[1]!=(treenode *)NULL) {
+               if(node->kids[0]!=(treenode *)NULL) {
+                       write_tree(node->kids[0], indent+1);
+               }
+               if(node->kids[1]!=(treenode *)NULL) {
+                       write_tree(node->kids[1], indent+1);
+               }
+       }
+}
+
+treenode *new_number_leaf(long value) {
+       treenode *node;
+
+        if(value==0) {
+               node=new_leaf(OP_Zero);
+       }
+       else if(value==1) {
+               node=new_leaf(OP_One);
+       }
+       else {
+               node=new_leaf(OP_Number);
+        }
+
+       node->value=value;
+
+       return node;
+}
+
diff --git a/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/tree.h b/aus_sammelwut/paulchen/ublu/ss08/abgabe/gesamt/tree.h
new file mode 100755 (executable)
index 0000000..7ac2789
--- /dev/null
@@ -0,0 +1,98 @@
+#ifndef __TREE_H_
+#define __TREE_H_
+
+#ifndef CODE
+typedef struct burm_state *STATEPTR_TYPE; 
+#endif
+
+enum {
+       OP_Not=1,
+       OP_Negation,
+       OP_Addition,
+       OP_Multiplication,
+       OP_Disjunction,
+       OP_Greater,
+       OP_Equal,
+       OP_ID,
+       OP_Number,
+       OP_Field,
+       OP_Return,
+       OP_Zero,
+       OP_One,
+       OP_Exprs,
+       OP_Call,
+       OP_Assign,
+       OP_If,
+       OP_Stats,
+       OP_Empty,
+       OP_Ifstats,
+       OP_While,
+       OP_CallNoParam,
+       OP_Arg
+};
+
+static char rule_names[100][100]={
+       "",
+        "OP_Not",
+        "OP_Negation",
+        "OP_Addition",
+        "OP_Multiplication",
+        "OP_Disjunction",
+        "OP_Greater",
+        "OP_Equal",
+        "OP_ID",
+        "OP_Number",
+        "OP_Field",
+       "OP_Return",
+       "OP_Zero",
+       "OP_One",
+       "OP_Exprs",
+       "OP_Call",
+       "OP_Assign",
+       "OP_If",
+       "OP_Stats",
+       "OP_Empty",
+       "OP_Ifstats",
+       "OP_While",
+       "OP_CallNoParam",
+       "OP_Arg"
+};
+         
+
+/* struct for the tree build by ox for iburg */
+typedef struct treenode {
+       int op;
+       struct treenode *kids[2];
+       STATEPTR_TYPE label;
+       char *name;
+       long value;
+       char *reg;
+       struct treenode *parent;
+       int skip_reg;
+       int param_index; /* -1 if not a parameter */
+} treenode;
+
+typedef treenode *treenodep;
+
+/* macros for iburg being able to traverse the tree */
+#define NODEPTR_TYPE           treenodep
+#define OP_LABEL(p)            ((p)->op)
+#define LEFT_CHILD(p)          ((p)->kids[0])
+#define RIGHT_CHILD(p)         ((p)->kids[1])
+#define STATE_LABEL(p)         ((p)->label)
+#define PANIC                  printf
+
+/* see tree.c for description about these procedures */
+treenode *new_node(int op, treenode *left, treenode *right);
+treenode *new_node_value(int op, treenode *left, treenode *right, long value, int param);
+treenode *new_leaf(int op);
+treenode *new_number_leaf(long value);
+treenode *new_named_leaf(int op, char *name);
+treenode *new_named_leaf_value(int op, char *name, long value, int param);
+treenode *new_named_node(int op, treenode *left, treenode *right, char *name);
+
+void write_indent(int indent);
+void write_tree(treenode *node, int indent);
+
+#endif /* __TREE_H */
+