88 lines
1.7 KiB
Bash
88 lines
1.7 KiB
Bash
#!/bin/sh
|
|
|
|
echo ',0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15'
|
|
echo ',"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"'
|
|
|
|
cd states
|
|
for pat in "L*[01a]" "L*S" "L*T" "L*U"
|
|
do
|
|
> /tmp/xxx
|
|
for i in $pat
|
|
do
|
|
awk < $i '
|
|
/BRU/{
|
|
lookup[0] = 0;
|
|
lookup[1] = 8;
|
|
lookup[2] = 4;
|
|
lookup[3] = 12;
|
|
lookup[4] = 2;
|
|
lookup[5] = 10;
|
|
lookup[6] = 6;
|
|
lookup[7] = 14;
|
|
lookup[8] = 1;
|
|
lookup[9] = 9;
|
|
lookup[10] = 5;
|
|
lookup[11] = 13;
|
|
lookup[12] = 3;
|
|
lookup[13] = 11;
|
|
lookup[14] = 7;
|
|
lookup[15] = 15;
|
|
for(i = 0; i < 16; i++) {
|
|
lookupi[i] = 15 - lookup[i];
|
|
}
|
|
capture = 1;
|
|
pattern = 0;
|
|
next;
|
|
}
|
|
(capture == 1) {
|
|
if ($2 == "ERROR") {
|
|
patterns[pattern++] = "-";
|
|
} else {
|
|
patterns[pattern++] = $2;
|
|
}
|
|
if (pattern == 16) {
|
|
printf("'$i',");
|
|
for(i = 0; i < 16; i++) {
|
|
printf ("\"%s\",", patterns[lookup[i]]);
|
|
}
|
|
printf("\n");
|
|
z="'$i'";
|
|
zi = "";
|
|
for(j = 1; j <= length(z); j++) {
|
|
if (substr(z,j,1) == "0") {
|
|
zi = zi "1";
|
|
} else if (substr(z,j,1) == "1") {
|
|
zi = zi "0";
|
|
} else {
|
|
zi = zi substr(z, j, 1);
|
|
}
|
|
}
|
|
printf("%s,", zi);
|
|
for(i = 0; i < 16; i++) {
|
|
zi = "";
|
|
z = patterns[lookupi[i]];
|
|
conv = 1;
|
|
for(j = 1; j <= length(z); j++) {
|
|
if (conv && substr(z,j,1) == "0") {
|
|
zi = zi "1";
|
|
} else if (conv && substr(z,j,1) == "1") {
|
|
zi = zi "0";
|
|
} else {
|
|
if (substr(z, j, 1) == "_") {
|
|
conv = 0;
|
|
}
|
|
zi = zi substr(z, j, 1);
|
|
}
|
|
}
|
|
printf ("\"%s\",", zi);
|
|
}
|
|
printf("\n");
|
|
}
|
|
}
|
|
' > /tmp/xx
|
|
head -1 /tmp/xx
|
|
tail -1 /tmp/xx >> /tmp/xxx
|
|
done
|
|
cat /tmp/xxx
|
|
rm -f /tmp/xxx /tmp/xx
|
|
done |