sed -- 118 137 characters
This is using the -r flag (+3), for a total of 134+3=137 characters.
$!{H;D}
/:/!{G;s/(\S*)..(\S*)/\2 \1:/}
s/(.* .)(.*\n\1 (\S*))/\1 -> \3\n\3 \2/
/-/{P;D}
/^[A-Z].* :/cACCEPT
s/( .).*/\1/
/:/!P
cREJECT
This should handle inputs without transitions correctly... hopefully it fully complies with the spec now...