Aer/tests/goto_statement.aer

82 lines
1.2 KiB
Plaintext
Raw Normal View History

2019-05-06 06:39:36 +02:00
class Test {
public void goto_test1() {
2019-05-06 06:39:36 +02:00
int $i = 0;
a:
print("Foo $i\n");
if($i > 5)
goto b;
$i++;
goto a;
b:
print("Bar $i\n\n");
}
public void goto_test2(int $a = 2) {
2019-05-06 06:39:36 +02:00
switch($a) {
case 1:
print("\$a is 1\n\n");
goto out;
case 2:
print("\$a is 2\n\n");
goto out;
case 3:
print("\$a is 3\n\n");
goto out;
case 4:
print("\$a is 4\n\n");
goto out;
}
out:
}
public void goto_test3() {
2019-05-06 06:39:36 +02:00
int $a = 10;
a:
$a--;
print("$a\n");
if($a > 5) {
goto a;
}
print("\n");
}
public void goto_test4() {
2019-05-06 06:39:36 +02:00
string[] $headers = {'subject', 'bcc', 'to', 'cc', 'date', 'sender'};
int $pos = 0;
int $c;
hIterator: {
$c = 0;
print($headers[$pos], "\n");
cIterator: {
print(" ", $headers[$pos][$c], "\n");
2019-07-01 21:08:07 +02:00
if(strlen($headers[$pos]) <= ++$c) {
2019-05-06 06:39:36 +02:00
goto cIteratorExit;
}
goto cIterator;
}
cIteratorExit: {
2019-07-01 20:07:06 +02:00
if(array_key_exists(++$pos, $headers)) {
2019-05-06 06:39:36 +02:00
goto hIterator;
}
}
}
}
}
class Program {
private object $test;
public void __construct() {
2019-05-06 06:39:36 +02:00
$this->test = new Test();
}
public void main() {
2019-05-06 06:39:36 +02:00
$this->test->goto_test1();
$this->test->goto_test2();
$this->test->goto_test3();
$this->test->goto_test4();
}
}