12 if (s/^(\d+) -> (\w+)\n//m) {
13 ($wire, $val) = ($2, $1);
14 } elsif (s/^NOT (\d+) -> (\w+)\n//m) {
15 ($wire, $val) = ($2, $1 ^ 0xFFFF);
16 } elsif (s/^(\d+) AND (\d+) -> (\w+)\n//m) {
17 ($wire, $val) = ($3, $1 & $2);
18 } elsif (s/^(\d+) OR (\d+) -> (\w+)\n//m) {
19 ($wire, $val) = ($3, $1 | $2);
20 } elsif (s/^(\d+) RSHIFT (\d+) -> (\w+)\n//m) {
21 ($wire, $val) = ($3, $1 >> $2);
22 } elsif (s/^(\d+) LSHIFT (\d+) -> (\w+)\n//m) {
23 ($wire, $val) = ($3, ($1 << $2) & 0xFFFF);
30 # say "$wire => $val";
31 last if $val !~ /\A\d+\z/;