* Alexandr Korljukov. * Turing mashine. * Instructions: s.q s.b s.c s.s s.r, where * s.q - a current state, * s.b - a symbol to observe, * s.c - a symbol to write on a current position, * s.s - a shift direction of shift ( '<' or '>' ) , * s.r - a next state, * 'a' and 'z' - a start and end state. $ENTRY Go { = <Prout * For testing: * ***************************************************** * tur_rv.mst * Reversing of the bits. * For example, '1122' ==> '622115' ***************************************************** <Tur 'a' * tape ( ()'1122' ) * |_________ pointer * * Program: ('a11>a') ('a22>a') ('a 5<b') ('a$$>a') ('b12<b') ('b21<b') ('b 6>z') ('b$0<b') > /* ***************************************************** * tur_br.mst * Checking a bracket's structure . * For example, '*()((*' ==> '0(RL*' * For example, '*()()*' ==> '1()()' ***************************************************** <Tur 'a' * tape * ( ()'*()((*' ) ( ()'*()()*' ) * |_________ pointer * * Program: ('a**>b') ('bLL>b') ('bRR>b') ('b((>b') ('b* <d') ('b)R<c') ('cLL<c') ('cRR<c') ('c(L>b') ('c*0>z') ('dL(<d') ('dR)<d') ('d(0>z') ('d*1>z') > */ >; } Tur { 'z' ((e.1) e.2) e.3 = e.1 e.2; s.q ((e.1) s.b e.2) e.3 = <Tur1 <Search s.q s.b e.3> ((e.1) s.b e.2) e.3>; s.q ((e.1) ) e.3 = <Tur s.q ((e.1) ' ' ) e.3>; } Tur1 { s.c '<' s.r (( ) s.b e.2) e.3 = <Tur s.r (( ) ' ' s.c e.2) e.3>; s.c '<' s.r ((s.a e.1) s.b e.2) e.3 = <Tur s.r ((e.1) s.a s.c e.2) e.3>; s.c '>' s.r (( e.1) s.b e.2) e.3 = <Tur s.r ((s.c e.1) e.2) e.3>; } * Looking for an instruction. Search { s.q s.b ( s.q '$' '$' s.s s.r ) e.2 = s.b s.s s.r; s.q s.b ( s.q '$' s.c s.s s.r ) e.2 = s.c s.s s.r; s.q s.b ( s.q s.b s.c s.s s.r ) e.2 = s.c s.s s.r; s.q s.b ( e.1 ) e.2 = <Search s.q s.b e.2>; * s.q s.b = '?<z' ; }