- •Задание
- •Символьный преобразователь
- •Входная грамматика
- •Функции переходов преобразователя
- •Лексический анализатор
- •Грамматика лексических единиц
- •Диаграмма состояний
- •Структуры данных и таблицы
- •Семантика анализа и символы действия.
- •3.5 Спецификация функций
- •3.6 Структура программы
- •Синтаксический анализатор
- •4.1 Неформальное описание семантики
- •4.2 Атрибутная грамматика
- •4.3 Описание символов действия
- •5. Атрибутный преобразователь
-
Функции переходов преобразователя
1. Для всех правил вида <A>b, где bVтвх и (VтвхUVтвыхUVa)*, строим команды вида: f( S, b, A)=( S, ’, $), где ’-зеркальное отражение цепочки .
( S, {, <I>)=( S, } <опер.># #<опис.>, $ )
( S, "<arr>" , <массив b> )=(S,"</arr>"<r3>#РМ## #<Ч.># #" "#bool## #<ид.>,$)
( S, "<arr>" , <массив c> )=(S, "</arr>" <r3>#РМ## #<Ч.># #" "#char## #<ид.>,$)
( S, " " , <r3> ) = (S , <r3>#РМ## #<Ч.># # , $ )
( S, "<marr>" , <эл.мас.> ) = ( S, "</marr>"<r4>#ЭМ## #<Ч.># #" "<ид.>,$)
( S, " " , <r4> ) = ( S, <r4>#ЭМ## #<ч.># # , $ )
( S, a, <Б.> ) = ( S, $ , #a# )
( S, b, <Б.> ) = ( S, $ , #b# )
( S, c, <Б.> ) = ( S, $ , #c# )
( S, d, <Б.> ) = ( S, $ , #d# )
( S, e, <Б.> ) = ( S, $ , #e# )
( S, 1, <Ц.> ) = ( S, $ , #1# )
( S, 2, <Ц.> ) = ( S, $ , #2# )
( S, 3, <Ц.> ) = ( S, $ , #3# )
( S, 4, <Ц.> ) = ( S, $ , #4# )
( S, 5, <Ц.> ) = ( S, $ , #5# )
( S, 6, <Ц.> ) = ( S, $ , #6# )
( S, 7, <Ц.> ) = ( S, $ , #7# )
( S, 8, <Ц.> ) = ( S, $ , #8# )
( S, 9, <Ц.> ) = ( S, $ , #9# )
( S, 0, <Ц.> ) = ( S, $ , #0# )
( S, "'a'" , <С.> ) = ( S, $ , #'a'# )
( S, "'b'" , <С.> ) = ( S, $ , #'b'# )
( S, "'c'" , <С.> ) = ( S, $ , #'c'# )
( S, "'d'" , <С.> ) = ( S, $ , #'d'# )
( S, "'e'" , <С.> ) = ( S, $ , #'d'# )
( S, "true" , <К.> ) = ( S, $ , #'true'# )
( S, "false" , <К.> ) = ( S, $ , #'false'# )
( S, "<bool>" , <опис.> ) = ( S, <r5> ;"</bool>" <тип bool> , $ )
( S, "<char>" , <опис.> ) = ( S, <r5> ;"</char>" <тип char> , $ )
( S, "<ass>" , <тип bool> ) = ( S, <r6> "</ass>"#=#<класс bool> , $ )
( S, "<iarr>" , <иниц.мас.bool> ) = ( S, "</iarr>" <константы> , $ )
( S, " " , <r7> ) = ( S, <r7> <К.># # , $ )
( S, "," , <r6> ) = ( S, <тип bool># # , $ )
( S, "<ass>" , <тип char> ) = ( S, <r8> "</ass>"#=#<класс char> , $ )
( S, "<iarr>" , <иниц.мас.char> ) = ( S, "</iarr>" <символы> , $ )
( S, " " , <r9> ) = ( S, <r9> <С.># # , $ )
( S, "," , <r8> ) = ( S, <тип char># # , $ )
( S, "<ass>" , <опер.> ) = ( S, <r10> ;"</ass>"#=#<Л.опер.># #" " <Оп.1> , $ )
( S, "<and>" , <Л.опер.> ) = ( S, "</and>"#&#<Оп.2># #" " <Оп.2> , $ )
( S, "<or>" , <Л.опер.> ) = ( S, "</or>"#v#<Оп.2># #" " <Оп.2> , $ )
( S, "<not>" , <Л.опер.> ) = ( S, "</not>"#!#<Оп.2> , $ )
2. Для всех правил вида <A><B>, где BVa и (VтвхUVтвыхUVa)*, строим коман-ды вида: f*( S, x, <A>)=( S, <B>, $) для всех xВЫБОР(<A><B>вх), где вх-цепочка, по-лученная из путем удаления из нее всех выходных символов.
*( S, 1, <Ч.> ) = ( S, <r1> <Ц.> , $ )
*( S, 2, <Ч.> ) = ( S, <r1> <Ц.> , $ )
*( S, 3, <Ч.> ) = ( S, <r1> <Ц.> , $ )
*( S, 4, <Ч.> ) = ( S, <r1> <Ц.> , $ )
*( S, 5, <Ч.> ) = ( S, <r1> <Ц.> , $ )
*( S, 6, <Ч.> ) = ( S, <r1> <Ц.> , $ )
*( S, 7, <Ч.> ) = ( S, <r1> <Ц.> , $ )
*( S, 8, <Ч.> ) = ( S, <r1> <Ц.> , $ )
*( S, 9, <Ч.> ) = ( S, <r1> <Ц.> , $ )
*( S, 0, <Ч.> ) = ( S, <r1> <Ц.> , $ )
*( S, 1, <r1> ) = ( S, <r1> <Ц.> , $ )
*( S, 2, <r1> ) = ( S, <r1> <Ц.> , $ )
*( S, 3, <r1> ) = ( S, <r1> <Ц.> , $ )
*( S, 4, <r1> ) = ( S, <r1> <Ц.> , $ )
*( S, 5, <r1> ) = ( S, <r1> <Ц.> , $ )
*( S, 6, <r1> ) = ( S, <r1> <Ц.> , $ )
*( S, 7, <r1> ) = ( S, <r1> <Ц.> , $ )
*( S, 8, <r1> ) = ( S, <r1> <Ц.> , $ )
*( S, 9, <r1> ) = ( S, <r1> <Ц.> , $ )
*( S, 0, <r1> ) = ( S, <r1> <Ц.> , $ )
*( S, a, <ид.> ) = ( S, <r2> <Б.> , $ )
*( S, b, <ид.> ) = ( S, <r2> <Б.> , $ )
*( S, c, <ид.> ) = ( S, <r2> <Б.> , $ )
*( S, d, <ид.> ) = ( S, <r2> <Б.> , $ )
*( S, e, <ид.> ) = ( S, <r2> <Б.> , $ )
*( S, a, <r2> ) = ( S, <r2> <Б.> , $ )
*( S, b, <r2> ) = ( S, <r2> <Б.> , $ )
*( S, c, <r2> ) = ( S, <r2> <Б.> , $ )
*( S, d, <r2> ) = ( S, <r2> <Б.> , $ )
*( S, e, <r2> ) = ( S, <r2> <Б.> , $ )
*( S, 1, <r2> ) = ( S, <r2> <Ц.> , $ )
*( S, 2, <r2> ) = ( S, <r2> <Ц.> , $ )
*( S, 3, <r2> ) = ( S, <r2> <Ц.> , $ )
*( S, 4, <r2> ) = ( S, <r2> <Ц.> , $ )
*( S, 5, <r2> ) = ( S, <r2> <Ц.> , $ )
*( S, 6, <r2> ) = ( S, <r2> <Ц.> , $ )
*( S, 7, <r2> ) = ( S, <r2> <Ц.> , $ )
*( S, 8, <r2> ) = ( S, <r2> <Ц.> , $ )
*( S, 9, <r2> ) = ( S, <r2> <Ц.> , $ )
*( S, 0, <r2> ) = ( S, <r2> <Ц.> , $ )
*( S, "<bool>" , <r5> ) = ( S, <опис.># # , $ )
*( S, "<char>" , <r5> ) = ( S, <опис.># # , $ )
*( S, a, <тип bool> ) = ( S, <r6>#bool## #<ид.> , $ )
*( S, b, <тип bool> ) = ( S, <r6>#bool## #<ид.> , $ )
*( S, c, <тип bool> ) = ( S, <r6>#bool## #<ид.> , $ )
*( S, d, <тип bool> ) = ( S, <r6>#bool## #<ид.> , $ )
*( S, e, <тип bool> ) = ( S, <r6>#bool## #<ид.> , $ )
*( S, "<arr>" , <тип bool> ) = ( S, <r6> <массив b> , $ )
*( S, a, <класс bool> ) = ( S, <К.># ##bool## #" "<ид.> , $ )
*( S, b, <класс bool> ) = ( S, <К.># ##bool## #" "<ид.> , $ )
*( S, c, <класс bool> ) = ( S, <К.># ##bool## #" "<ид.> , $ )
*( S, d, <класс bool> ) = ( S, <К.># ##bool## #" "<ид.> , $ )
*( S, e, <класс bool> ) = ( S, <К.># ##bool## #" "<ид.> , $ )
*( S, "<arr>" , <класс bool> ) = ( S, <иниц.мас.bool> <массив b> , $ )
*( S, "true" , <константы> ) = ( S, <r7> <К.># # , $ )
*( S, "false" , <константы> ) = ( S, <r7> <К.># # , $ )
*( S, a, <тип char> ) = ( S, <r8>#char## #<ид.> , $ )
*( S, b, <тип char> ) = ( S, <r8>#char## #<ид.> , $ )
*( S, c, <тип char> ) = ( S, <r8>#char## #<ид.> , $ )
*( S, d, <тип char> ) = ( S, <r8>#char## #<ид.> , $ )
*( S, e, <тип char> ) = ( S, <r8>#char## #<ид.> , $ )
*( S, "<arr>" , <тип char> ) = ( S, <r8> <массив c> , $ )
*( S, a, <класс char> ) = ( S, <С.># ##char## #" "<ид.> , $ )
*( S, b, <класс char> ) = ( S, <С.># ##char## #" "<ид.> , $ )
*( S, c, <класс char> ) = ( S, <С.># ##char## #" "<ид.> , $ )
*( S, d, <класс char> ) = ( S, <С.># ##char## #" "<ид.> , $ )
*( S, e, <класс char> ) = ( S, <С.># ##char## #" "<ид.> , $ )
*( S, "<arr>" , <класс char> ) = ( S, <иниц.мас.char> <массив c> , $ )
*( S, "'a'" , <символы> ) = ( S, <r9> <С.># # , $ )
*( S, "'b'" , <символы> ) = ( S, <r9> <С.># # , $ )
*( S, "'c'" , <символы> ) = ( S, <r9> <С.># # , $ )
*( S, "'d'" , <символы> ) = ( S, <r9> <С.># # , $ )
*( S, "'e'" , <символы> ) = ( S, <r9> <С.># # , $ )
*( S, a, <Оп.1> ) = ( S, <ид.> , $ )
*( S, b, <Оп.1> ) = ( S, <ид.> , $ )
*( S, c, <Оп.1> ) = ( S, <ид.> , $ )
*( S, d, <Оп.1> ) = ( S, <ид.> , $ )
*( S, e, <Оп.1> ) = ( S, <ид.> , $ )
*( S, "<marr>" , <Оп.1> ) = ( S, <эл.мас.> , $ )
*( S, "'a'" , <Оп.2> ) = ( S, <С.> , $ )
*( S, "'b'" , <Оп.2> ) = ( S, <С.> , $ )
*( S, "'c'" , <Оп.2> ) = ( S, <С.> , $ )
*( S, "'d'" , <Оп.2> ) = ( S, <С.> , $ )
*( S, "'e'" , <Оп.2> ) = ( S, <С.> , $ )
*( S, "true" , <Оп.2> ) = ( S, <К.> , $ )
*( S, "false" , <Оп.2> ) = ( S, <К.> , $ )
*( S, "<and>" , <Оп.2> ) = ( S, <Л.опер.> , $ )
*( S, "<or>" , <Оп.2> ) = ( S, <Л.опер.> , $ )
*( S, "<not>" , <Оп.2> ) = ( S, <Л.опер.> , $ )
*( S, a, <Оп.2> ) = ( S, <ид.> , $ )
*( S, b, <Оп.2> ) = ( S, <ид.> , $ )
*( S, c, <Оп.2> ) = ( S, <ид.> , $ )
*( S, d, <Оп.2> ) = ( S, <ид.> , $ )
*( S, e, <Оп.2> ) = ( S, <ид.> , $ )
*( S, "<marr>" , <Оп.2> ) = ( S, <эл.мас.> , $ )
*( S, "<ass>" , <r10> ) = ( S, <опер.># # , $ )
3. Для всех правил вида <A>$ строим команды вида: f*( S, x, <A>) = ( s0, $, $ ), для всех xВЫБОР(<A>$), правило <A>$ принадлежит Гвх.
*( S, " " , <r1> ) = ( S, $ , $ )
*( S, "</arr>" , <r1> ) = ( S, $ , $ )
*( S, "</marr>" , <r1> ) = ( S, $ , $ )
*( S, " " , <r2> ) = ( S, $ , $ )
*( S, "</bool>" , <r2> ) = ( S, $ , $ )
*( S, "</char>" , <r2> ) = ( S, $ , $ )
*( S, "," , <r2> ) = ( S, $ , $ )
*( S, "</and>" , <r2> ) = ( S, $ , $ )
*( S, "</or>" , <r2> ) = ( S, $ , $ )
*( S, "</not>" , <r2> ) = ( S, $ , $ )
*( S, "</arr>" , <r3> ) = ( S, $ , $ )
*( S, "</marr>" , <r4> ) = ( S, $ , $ )
*( S, "<ass>" , <r5> ) = ( S, $ , $ )
*( S, "</iarr>" , <r7> ) = ( S, $ , $ )
*( S, "</bool>" , <r6> ) = ( S, $ , $ )
*( S, "</iarr>" , <r9> ) = ( S, $ , $ )
*( S, "</char>" , <r8> ) = ( S, $ , $ )
*( S, } , <r10> ) = ( S, $ ,$ )
3. Для всех xVтвыхU{$} строим команды вида: f*( S, $, x)=( S, $, x).
*( S, $, # # ) = ( S, $, # # )
*( S, $, #bool# ) = ( S, $, #bool# )
*( S, $, #char# ) = ( S, $, #char# )
*( S, $, #РМ# ) = ( S, $, #РМ# )
*( S, $, #ЭМ# ) = ( S, $, #ЭМ# )
*( S, $, #=# ) = ( S, $, #=# )
*( S, $, #&# ) = ( S, $, #&# )
*( S, $, #v# ) = ( S, $, #v# )
*( S, $, #!# ) = ( S, $, #!# )
4. Для символов bVтвх, заносимых в магазин построим команды вида: f( S, b, b)= =( S, $, $).
( S, }, }) = ( S, $ , $ )
( S, " " , " " ) = ( S, $ , $ )
( S, "</arr>" , "</arr>" ) = ( S, $ , $ )
( S, "</marr>" , "</marr>" ) = ( S, $ , $ )
( S, "</bool>" , "</bool>" ) = ( S, $ , $ )
( S, ;, ;) = ( S, $ , $ )
( S, "</char>" , "</char>" ) = ( S, $ , $ )
( S, "</ass>" , "</ass>" ) = ( S, $ , $ )
( S, "</iarr>" , "</iarr>" ) = ( S, $ , $ )
( S, "</and>" , "</and>" ) = ( S, $ , $ )
( S, "</or>" , "</or>" ) = ( S, $ , $ )
( S, "</not>" , "</not>" ) = ( S, $ , $ )
5. Построим команду перехода в заключительное состояние.
( S, , h0) = ( S1, $ , $ )
Пример работы магазинного преобразователя.
Подадим на вход цепочку:
{<bool>a7</bool>;<ass>a7 <not>’false’</not></ass>;}
На выходе магазинного преобразователя получим цепочку:
a7 “BOOL” a7 ‘false’!=
ТАКТ 0
cостояние S
входная цепочка {"<bool>" a7"</bool>" ;"<ass>" a7" " "<not>" "false" "</not>""</ass>”;}
магазин <I>h0
выходная цепочка
функция перехода (S,{,<I>)=(S,}<ОПЕР.># #<ОПИС.>,$)
ТАКТ 1
cостояние S
входная цепочка "<bool>" a7"</bool>" ;"<ass>" a7" " "<not>" "false" "</not>""</ass>";}
магазин <ОПИС.># #<ОПЕР.>}h0
выходная цепочка
функция перехода (S,"<BOOL>",<ОПИС.>)=(S,<R5>;"</BOOL>"<ТИП BOOL>,$)
ТАКТ 2
cостояние S
входная цепочка a7"</bool>" ;"<ass>" a7" " "<not>" "false" "</not>" "</ass>";}
магазин <ТИП BOOL>"</BOOL>";<R5># #<ОПЕР.>}h0
выходная цепочка
функция перехода *(S,a,<ТИП BOOL>)=(S,<R6>#BOOL## #<ИД.>,$)
ТАКТ 3
cостояние S
входная цепочка a7"</bool>" ;"<ass>" a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин <ИД.># ##BOOL#<R6>"</BOOL>";<R5># #<ОПЕР.>}h0
выходная цепочка
функция перехода *(S,a,<ИД.>)=(S,<R2><Б.>,$)
ТАКТ 4
cостояние S
входная цепочка a7"</bool>" ;"<ass>" a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин <Б.><R2># ##BOOL#<R6>"</BOOL>";<R5># #<ОПЕР.> }h0
выходная цепочка
функция перехода (S,a,<Б.>)=(S,$,#a#)
ТАКТ 5
cостояние S
входная цепочка 7"</bool>" ;"<ass>" a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин <R2># ##BOOL#<R6>"</BOOL>";<R5># #<ОПЕР.> }h0
выходная цепочка a
функция перехода *(S,7,<R2>)=(S,<R2><Ц.>,$)
ТАКТ 6
cостояние S
входная цепочка 7"</bool>" ;"<ass>" a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин <Ц.><R2># #BOOL#<R6>"</BOOL>";<R5># #<ОПЕР.> }h0
выходная цепочка a
функция перехода (S,7,<Ц.>)=(S,$,#7#)
ТАКТ 7
cостояние S
входная цепочка "</bool>" ;"<ass>" a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин <R2># #BOOL#<R6>"</BOOL>";<R5># #<ОПЕР.>}h0
выходная цепочка a7
функция перехода *(S,"</BOOL>",<R2>)=(S,$,$)
ТАКТ 8
cостояние S
входная цепочка "</bool>" ;"<ass>" a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин # ##BOOL#<R6>"</BOOL>";<R5># #<ОПЕР.>}h0
выходная цепочка a7
функция перехода *(S,$,# #)=(S,$,# #)
ТАКТ 9
cостояние S
входная цепочка "</bool>" ;"<ass>" a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин #BOOL#<R6>"</BOOL>";<R5># #<ОПЕР.>}h0
выходная цепочка a7
функция перехода *(S,$,#BOOL#)=(S,$,#BOOL#)
ТАКТ 10
cостояние S
входная цепочка "</bool>" ;"<ass>" a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин <R6>"</BOOL>";<R5># #< ОПЕР.>}h0
выходная цепочка a7 ”BOOL"
функция перехода *(S,"</BOOL>",<R6>)=(S,$,$)
ТАКТ 11
cостояние S
входная цепочка "</bool>" ;"<ass>" a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин "</BOOL>";<R5># #< ОПЕР.>}h0
выходная цепочка a7 "BOOL"
функция перехода (S,"</BOOL>","</BOOL>")=(S,$,$)
ТАКТ 12
cостояние S
входная цепочка ;"<ass>" a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин ;<R5># #< ОПЕР.>}h0
выходная цепочка a7 "BOOL"
функция перехода (S,;,;)=(S,$,$)
ТАКТ 13
cостояние S
входная цепочка "<ass>" a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин <R5># #< ОПЕР.>}h0
выходная цепочка a7 "BOOL"
функция перехода *(S,"<ASS>",<R5>)=(S,$,$)
ТАКТ 14
cостояние S
входная цепочка "<ass>" a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин # #< ОПЕР.>}h0
выходная цепочка a7 "BOOL"
функция перехода *(S,$,# #)=(S,$,# #)
ТАКТ 15
cостояние S
входная цепочка "<ass>" a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин <ОПЕР.>}h0
выходная цепочка a7 "BOOL"
функция перехода (S,"<ASS>",<ОПЕР.>)=(S,<R10>;"</ASS>"#=#<Л.ОПЕР.># #” “<ОП1>,$)
ТАКТ 16
cостояние S
входная цепочка a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин <ОП.1>" "# #<Л.ОПЕР.>#=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL"
функция перехода *(S,A,<ОП.1>)=(S,<ИД.>,$)
ТАКТ 17
cостояние S
входная цепочка a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин <ИД.>" "# #<Л.ОПЕР.>#=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL"
функция перехода *(S,A,<ИД.>)=(S,<R2><Б.>,$)
ТАКТ 18
cостояние S
входная цепочка a7" " "<not>" "false" "</not>" "</ass>" ;}
магазин <Б.><R2>" "# #<Л.ОПЕР.>#=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL"
функция перехода (S,a,<Б.>)=(S,$,#a#)
ТАКТ 19
cостояние S
входная цепочка 7" " "<not>" "false" "</not>" "</ass>" ;}
магазин <R2>" "# #<Л.ОПЕР.>#=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL" a
функция перехода *(S,7,<R2>)=(S,<R2><Ц.>,$)
ТАКТ 20
cостояние S
входная цепочка 7" " "<not>" "false" "</not>" "</ass>" ;}
магазин <Ц.><R2>" "# #<ЛОГ.ОПЕРАЦИЯ>#=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL" a
функция перехода (S,7,<Ц.>)=(S,$,#7#)
ТАКТ 21
cостояние S
входная цепочка " " "<not>" "false" "</not>" "</ass>" ;}
магазин <R2>" "# #<Л.ОПЕР.>#=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL" a7
функция перехода *(S," ",<R2>)=(S,$,$)
ТАКТ 22
cостояние S
входная цепочка " " "<not>" "false" "</not>" "</ass>" ;}
магазин " "# #<Л.ОПЕР.>#=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL" a7
функция перехода (S," "," ")=(S,$,$)
ТАКТ 23
cостояние S
входная цепочка "<not>" "false" "</not>" "</ass>" ;}
магазин # #<Л.ОПЕР.>#=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL" a7
функция перехода *(S,$,# #)=(S,$,# #)
ТАКТ 24
cостояние S
входная цепочка "<not>" "false" "</not>" "</ass>" ;}
магазин <Л.ОПЕР.>#=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL" a7
функция перехода (S,"<NOT>",<Л.ОПЕР.>)=(S,"</NOT>"#!#<ОП.2>,$)
ТАКТ 25
cостояние S
входная цепочка "false" "</not>" "</ass>" ;}
магазин <ОП.2>#!#"</NOT>"#=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL" a7
функция перехода *(S,"FALSE",<ОП.2>)=(S,<К.>,$)
ТАКТ 26
cостояние S
входная цепочка "false" "</not>" "</ass>" ;}
магазин <К.>#!#"</NOT>"#=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL" a7
функция перехода (S,"FALSE",<К.>)=(S,$,#FALSE#)
ТАКТ 27
cостояние S
входная цепочка "</not>" "</ass>" ;}
магазин #!#"</NOT>"#=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL" a7 "FALSE"
функция перехода *(S,$,#!#)=(S,$,#!#)
ТАКТ 28
cостояние S
входная цепочка "</not>" "</ass>" ;}
магазин "</NOT>"#=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL" a7 "FALSE"!
функция перехода (S,"</NOT>","</NOT>")=(S,$,$)
ТАКТ 29
cостояние S
входная цепочка "</ass>" ;}
магазин #=#"</ASS>";<R10>}h0
выходная цепочка a7 "BOOL" a7 "FALSE"!
функция перехода *(S,$,#=#)=(S,$,#=#)
ТАКТ 30
cостояние S
входная цепочка "</ass>" ;}
магазин "</ASS>";<R10>}h0
выходная цепочка a7 "BOOL" a7 "FALSE"!=
функция перехода (S,"</ASS>","</ASS>")=(S,$,$)
ТАКТ 31
cостояние S
входная цепочка ;}
магазин ;<R10>}h0
выходная цепочка a7 "BOOL" a7 "FALSE"!=
функция перехода (S,;,;)=(S,$,$)
ТАКТ 32
cостояние S
входная цепочка }
магазин <R10>}h0
выходная цепочка a7 "BOOL" a7 "FALSE"!=
функция перехода *(S,},<R10>)=(S,$,$)
ТАКТ 33
cостояние S
входная цепочка }
магазин }h0
выходная цепочка a7 "BOOL" a7 "FALSE"!=
функция перехода (S,},})=(S,$,$)
ТАКТ 34
cостояние S
входная цепочка
магазин h0
выходная цепочка a7 "BOOL" a7 "FALSE"!=
функция перехода (S,,h0)=(S1,$,$)
ТАКТ 35
cостояние S1
входная цепочка
магазин h0
выходная цепочка a7 "BOOL" a7 "FALSE"!=
Магазинный автомат успешно завершил работу