-------
-
100
-----------
-
-

<i>::=<type-name>;<i>
<i>::=$

<op-def>::=<var-name><def-set>;
<var-name>::=<letter><var-name1>
<var-name1>::=<letter><var-name1>
<var-name1>::=<digit><var-name1>
<var-name1>::=<under-symbol><var-name1>
<var-name1>::=$
<type-name>::=<int-or-if>|<bool>|<string>|<do-or-double>

<int-or-if>::=i<int-or-if1>
<int-or-if1>::=n<int>
<int-or-if1>::=f<if>

<int>::=t<int1>
<int1>::=<letter><op-set>
<int1>::=" "<op-def>

<bool>::=b<bool1>
<bool1>::=o<bool2>
<bool2>::=o<bool3>
<bool3>::=l<bool4>
<bool4>::=<letter><op-set>
<bool4>::=" "<op-def>

<string>::=s<string1>
<string1>::=t<string2>
<string2>::=r<string3>
<string3>::=i<string4>
<string4>::=n<string5>
<string5>::=g<string6>
<string6>::=<letter><op-set>
<string6>::=" "<op-def>

<do-or-double>::=d<do-or-double1>
<do-or-double1>::=o<do-or-double2>
<do-or-double2>::=" "<_op-while>
<do-or-double2>::=u<double>
<do-or-double2>::=<letter><op-set>
<do-or-double2>::=<_op-while>
<_op-while>::={<op-while>

<double>::=b<double1>
<double1>::=l<double2>
<double2>::=e<double3>
<double3>::=<letter><op-set>
<double3>::=" "<op-def>

<if>::=<letter><op-set>
<if>::=" "<_op-if>
<if>::=<_op-if>
<_op-if>::=[<op-if>

<def-set>::=$
<def-set>::=<right-set>

<digit>::=<null-digit>|1|2|3
<null-digit>::=0

<letter>::=a|b|c
<under-symbol>::=_
<symbol>::=<letter>|<digit>|<operations>|<special-symbols>
<operations>::=<arifmetics-ops>|<logics-ops>
<arifmetics-ops>::=+|-|*|/
<logics-ops>::=&|^
<not-op>::=~
<special-symbols>::=<under-symbol>
<special-symbols>::=!|@|.|;

<const>::=<number>|<string_>

<string_>::=\<string_1>\
<string_1>::=<symbol><string_1>
<string_1>::=$

<number>::=<decimal-number><part-of-real>
<part-of-real>::=$
<part-of-real>::=<real-number>

<decimal-number>::=-<decimal-number1>
<decimal-number1>::=<digit><decimal-number2>
<decimal-number2>::=<digit><decimal-number2>
<decimal-number2>::=$

<real-number>::=.<real-number1>
<real-number1>::=<digit><real-number2>
<real-number2>::=<digit><real-number2>
<real-number2>::=$

<right-set>::==<const>

<op-set>::=<var-name><right-set>
<op-if>::=<condition>]{<i>}
<op-while>::=<i>}while[<condition>]

<condition>::=<unar-op><op><condition1>
<condition1>::=$
<condition1>::=<logics-ops><unar-op><op><condition1>
<op>::=<var-name>
<op>::=[<condition>]
<unar-op>::=<not-op>
<unar-op>::=$



	
New Chain
do" "{}while[[[~aaaa^~a0aa_110__bbbbb1bbbbcc_3^a_1^[[a_112_b]]]]^~[[[~cca^[b_3_^a1&[~c1aa__111_c11111_^a_13aa_^[~cccc]]]]^c0_a0cca]]^[~[cb^[~[~c]]]]];

	
	
New Functions
 -- Оптимизированные функции для правил, правая часть которых начинается с терминала
 -- сдвиг, вытолкнуть, заменить
 (S,i,<int-or-if>)=(S,<int-or-if1>,$)              -- для правила 13
 (S,n,<int-or-if1>)=(S,<int>,$)                    -- для правила 14
 (S,f,<int-or-if1>)=(S,<if>,$)                     -- для правила 15
 (S,t,<int>)=(S,<int1>,$)                          -- для правила 16
 (S," ",<int1>)=(S,<op-def>,$)                     -- для правила 18
 (S,b,<bool>)=(S,<bool1>,$)                        -- для правила 19
 (S,o,<bool1>)=(S,<bool2>,$)                       -- для правила 20
 (S,o,<bool2>)=(S,<bool3>,$)                       -- для правила 21
 (S,l,<bool3>)=(S,<bool4>,$)                       -- для правила 22
 (S," ",<bool4>)=(S,<op-def>,$)                    -- для правила 24
 (S,s,<string>)=(S,<string1>,$)                    -- для правила 25
 (S,t,<string1>)=(S,<string2>,$)                   -- для правила 26
 (S,r,<string2>)=(S,<string3>,$)                   -- для правила 27
 (S,i,<string3>)=(S,<string4>,$)                   -- для правила 28
 (S,n,<string4>)=(S,<string5>,$)                   -- для правила 29
 (S,g,<string5>)=(S,<string6>,$)                   -- для правила 30
 (S," ",<string6>)=(S,<op-def>,$)                  -- для правила 32
 (S,d,<do-or-double>)=(S,<do-or-double1>,$)        -- для правила 33
 (S,o,<do-or-double1>)=(S,<do-or-double2>,$)       -- для правила 34
 (S," ",<do-or-double2>)=(S,<_op-while>,$)         -- для правила 35
 (S,u,<do-or-double2>)=(S,<double>,$)              -- для правила 36
 (S,{,<_op-while>)=(S,<op-while>,$)                -- для правила 39
 (S,b,<double>)=(S,<double1>,$)                   -- для правила 40
 (S,l,<double1>)=(S,<double2>,$)                   -- для правила 41
 (S,e,<double2>)=(S,<double3>,$)                   -- для правила 42
 (S," ",<double3>)=(S,<op-def>,$)                   -- для правила 44
 (S," ",<if>)=(S,<_op-if>,$)                     -- для правила 46
 (S,[,<_op-if>)=(S,<op-if>,$)                     -- для правила 48
 (S,1,<digit>)=(S,$,$)                             -- для правила 52
 (S,2,<digit>)=(S,$,$)                             -- для правила 53
 (S,3,<digit>)=(S,$,$)                             -- для правила 54
 (S,0,<null-digit>)=(S,$,$)                        -- для правила 55
 (S,a,<letter>)=(S,$,"A")                            -- для правила 56
 (S,b,<letter>)=(S,$,"B")                            -- для правила 57
 (S,c,<letter>)=(S,$,"C")                            -- для правила 58
 (S,_,<under-symbol>)=(S,$,$)                      -- для правила 59
 (S,+,<arifmetics-ops>)=(S,$,$)                    -- для правила 66
 (S,-,<arifmetics-ops>)=(S,$,$)                    -- для правила 67
 (S,*,<arifmetics-ops>)=(S,$,$)                    -- для правила 68
 (S,/,<arifmetics-ops>)=(S,$,$)                    -- для правила 69
 (S,&,<logics-ops>)=(S,$,$)                    -- для правила 70
 (S,^,<logics-ops>)=(S,$,$)                    -- для правила 71
 (S,~,<not-op>)=(S,$,$)                            -- для правила 72
 (S,!,<special-symbols>)=(S,$,$)                   -- для правила 74
 (S,@,<special-symbols>)=(S,$,$)                   -- для правила 75
 (S,.,<special-symbols>)=(S,$,$)                   -- для правила 76
 (S,;,<special-symbols>)=(S,$,$)                   -- для правила 77
 (S,\,<string_>)=(S,\<string_1>,$)                 -- для правила 80
 (S,-,<decimal-number>)=(S,<decimal-number1>,$)    -- для правила 86
 (S,.,<real-number>)=(S,<real-number>,$)           -- для правила 90
 (S,=,<right-set>)=(S,<const>,$)                   -- для правила 94
 (S,[,<op>)=(S,]<condition>,$)                     -- для правила 102

 -- Функции общего вида
 -- нет сдвига, заменить
*(S,i,<i>)=(S,<i>;<type-name>,$)                   -- для правила 1
*(S,b,<i>)=(S,<i>;<type-name>,$)                   -- для правила 1
*(S,s,<i>)=(S,<i>;<type-name>,$)                   -- для правила 1
*(S,d,<i>)=(S,<i>;<type-name>,$)                   -- для правила 1
*(S,b,<op-def>)=(S,;<def-set><var-name>,$)         -- для правила 3
*(S,a,<op-def>)=(S,;<def-set><var-name>,$)         -- для правила 3
*(S,c,<op-def>)=(S,;<def-set><var-name>,$)         -- для правила 3
*(S,b,<var-name>)=(S,<var-name1><letter>,$)        -- для правила 4
*(S,a,<var-name>)=(S,<var-name1><letter>,$)        -- для правила 4
*(S,c,<var-name>)=(S,<var-name1><letter>,$)        -- для правила 4
*(S,a,<var-name1>)=(S,<var-name1><letter>,$)       -- для правила 5
*(S,b,<var-name1>)=(S,<var-name1><letter>,$)       -- для правила 5
*(S,c,<var-name1>)=(S,<var-name1><letter>,$)       -- для правила 5
*(S,1,<var-name1>)=(S,<var-name1><digit>,$)        -- для правила 6
*(S,2,<var-name1>)=(S,<var-name1><digit>,$)        -- для правила 6
*(S,3,<var-name1>)=(S,<var-name1><digit>,$)        -- для правила 6
*(S,0,<var-name1>)=(S,<var-name1><digit>,$)        -- для правила 6
*(S,_,<var-name1>)=(S,<var-name1><under-symbol>,$) -- для правила 7
*(S,i,<type-name>)=(S,<int-or-if>,$)               -- для правила 9
*(S,b,<type-name>)=(S,<bool>,$)                    -- для правила 10
*(S,s,<type-name>)=(S,<string>,$)                    -- для правила 11
*(S,d,<type-name>)=(S,<do-or-double>,$)            -- для правила 12
*(S,b,<int1>)=(S,<op-set><letter>,$)               -- для правила 17
*(S,a,<int1>)=(S,<op-set><letter>,$)               -- для правила 17
*(S,c,<int1>)=(S,<op-set><letter>,$)               -- для правила 17
*(S,a,<bool4>)=(S,<op-set><letter>,$)              -- для правила 23
*(S,b,<bool4>)=(S,<op-set><letter>,$)              -- для правила 23
*(S,c,<bool4>)=(S,<op-set><letter>,$)              -- для правила 23
*(S,b,<string6>)=(S,<op-set><letter>,$)            -- для правила 31
*(S,a,<string6>)=(S,<op-set><letter>,$)            -- для правила 31
*(S,c,<string6>)=(S,<op-set><letter>,$)            -- для правила 31
*(S,b,<do-or-double2>)=(S,<op-set><letter>,$)      -- для правила 37
*(S,a,<do-or-double2>)=(S,<op-set><letter>,$)      -- для правила 37
*(S,c,<do-or-double2>)=(S,<op-set><letter>,$)      -- для правила 37
*(S,{,<do-or-double2>)=(S,<_op-while>,$)      -- для правила 38
*(S,b,<double3>)=(S,<op-set><letter>,$)            -- для правила 43
*(S,a,<double3>)=(S,<op-set><letter>,$)            -- для правила 43
*(S,c,<double3>)=(S,<op-set><letter>,$)            -- для правила 43
*(S,b,<if>)=(S,<op-set><letter>,$)                 -- для правила 45
*(S,a,<if>)=(S,<op-set><letter>,$)                 -- для правила 45
*(S,c,<if>)=(S,<op-set><letter>,$)                 -- для правила 45
*(S,[,<if>)=(S,<_op-if>,$)                         -- для правила 47
*(S,=,<def-set>)=(S,<right-set>,$)                 -- для правила 50
*(S,0,<digit>)=(S,<null-digit>,$)                  -- для правила 51
*(S,b,<symbol>)=(S,<letter>,$)                     -- для правила 60
*(S,a,<symbol>)=(S,<letter>,$)                     -- для правила 60
*(S,c,<symbol>)=(S,<letter>,$)                     -- для правила 60
*(S,1,<symbol>)=(S,<digit>,$)                      -- для правила 61
*(S,2,<symbol>)=(S,<digit>,$)                      -- для правила 61
*(S,3,<symbol>)=(S,<digit>,$)                      -- для правила 61
*(S,0,<symbol>)=(S,<digit>,$)                      -- для правила 61
*(S,-,<symbol>)=(S,<operations>,$)                 -- для правила 62
*(S,*,<symbol>)=(S,<operations>,$)                 -- для правила 62
*(S,/,<symbol>)=(S,<operations>,$)                 -- для правила 62
*(S,&,<symbol>)=(S,<operations>,$)                 -- для правила 62
*(S,^,<symbol>)=(S,<operations>,$)                 -- для правила 62
*(S,+,<symbol>)=(S,<operations>,$)                 -- для правила 62
*(S,;,<symbol>)=(S,<special-symbols>,$)            -- для правила 63
*(S,_,<symbol>)=(S,<special-symbols>,$)            -- для правила 63
*(S,!,<symbol>)=(S,<special-symbols>,$)            -- для правила 63
*(S,@,<symbol>)=(S,<special-symbols>,$)            -- для правила 63
*(S,.,<symbol>)=(S,<special-symbols>,$)            -- для правила 63
*(S,+,<operations>)=(S,<arifmetics-ops>,$)         -- для правила 64
*(S,-,<operations>)=(S,<arifmetics-ops>,$)         -- для правила 64
*(S,*,<operations>)=(S,<arifmetics-ops>,$)         -- для правила 64
*(S,/,<operations>)=(S,<arifmetics-ops>,$)         -- для правила 64
*(S,&,<operations>)=(S,<logics-ops>,$)             -- для правила 65
*(S,^,<operations>)=(S,<logics-ops>,$)             -- для правила 65
*(S,_,<special-symbols>)=(S,<under-symbol>,$)      -- для правила 73
*(S,-,<const>)=(S,<number>,$)                      -- для правила 78
*(S,\,<const>)=(S,<string_>,$)                     -- для правила 79
*(S,;,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,b,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,1,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,2,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,3,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,0,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,a,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,c,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,_,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,+,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,-,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,*,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,/,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,&,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,^,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,!,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,@,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,.,<string_1>)=(S,<string_1><symbol>,$)         -- для правила 81
*(S,-,<number>)=(S,<part-of-real><decimal-number>,$) -- для правила 83
*(S,.,<part-of-real>)=(S,<real-number>,$)          -- для правила 85
*(S,1,<decimal-number1>)=(S,<decimal-number2><digit>,$) -- для правила 87
*(S,2,<decimal-number1>)=(S,<decimal-number2><digit>,$) -- для правила 87
*(S,3,<decimal-number1>)=(S,<decimal-number2><digit>,$) -- для правила 87
*(S,0,<decimal-number1>)=(S,<decimal-number2><digit>,$) -- для правила 87
*(S,1,<decimal-number2>)=(S,<decimal-number2><digit>,$) -- для правила 88
*(S,2,<decimal-number2>)=(S,<decimal-number2><digit>,$) -- для правила 88
*(S,3,<decimal-number2>)=(S,<decimal-number2><digit>,$) -- для правила 88
*(S,0,<decimal-number2>)=(S,<decimal-number2><digit>,$) -- для правила 88
*(S,1,<real-number1>)=(S,<real-number2><digit>,$)  -- для правила 91
*(S,2,<real-number1>)=(S,<real-number2><digit>,$)  -- для правила 91
*(S,3,<real-number1>)=(S,<real-number2><digit>,$)  -- для правила 91
*(S,0,<real-number1>)=(S,<real-number2><digit>,$)  -- для правила 91
*(S,1,<real-number2>)=(S,<real-number2><digit>,$)  -- для правила 92
*(S,2,<real-number2>)=(S,<real-number2><digit>,$)  -- для правила 92
*(S,3,<real-number2>)=(S,<real-number2><digit>,$)  -- для правила 92
*(S,0,<real-number2>)=(S,<real-number2><digit>,$)  -- для правила 92
*(S,b,<op-set>)=(S,<right-set><var-name>,$)        -- для правила 95
*(S,a,<op-set>)=(S,<right-set><var-name>,$)        -- для правила 95
*(S,c,<op-set>)=(S,<right-set><var-name>,$)        -- для правила 95
*(S,b,<op-if>)=(S,}<i>{]<condition>,$)             -- для правила 96
*(S,[,<op-if>)=(S,}<i>{]<condition>,$)             -- для правила 96
*(S,a,<op-if>)=(S,}<i>{]<condition>,$)             -- для правила 96
*(S,c,<op-if>)=(S,}<i>{]<condition>,$)             -- для правила 96
*(S,~,<op-if>)=(S,}<i>{]<condition>,$)             -- для правила 96
*(S,i,<op-while>)=(S,]<condition>[elihw}<i>,$)     -- для правила 97
*(S,b,<op-while>)=(S,]<condition>[elihw}<i>,$)     -- для правила 97
*(S,s,<op-while>)=(S,]<condition>[elihw}<i>,$)     -- для правила 97
*(S,d,<op-while>)=(S,]<condition>[elihw}<i>,$)     -- для правила 97
*(S,},<op-while>)=(S,]<condition>[elihw}<i>,$)     -- для правила 97
*(S,b,<condition>)=(S,<condition1><op><unar-op>,$) -- для правила 98
*(S,[,<condition>)=(S,<condition1><op><unar-op>,$) -- для правила 98
*(S,a,<condition>)=(S,<condition1><op><unar-op>,$) -- для правила 98
*(S,c,<condition>)=(S,<condition1><op><unar-op>,$) -- для правила 98
*(S,~,<condition>)=(S,<condition1><op><unar-op>,$) -- для правила 98
*(S,&,<condition1>)=(S,<condition1><op><unar-op><logics-ops>,$) -- для правила 100
*(S,^,<condition1>)=(S,<condition1><op><unar-op><logics-ops>,$) -- для правила 100
*(S,b,<op>)=(S,<var-name>,$)                       -- для правила 101
*(S,a,<op>)=(S,<var-name>,$)                       -- для правила 101
*(S,c,<op>)=(S,<var-name>,$)                       -- для правила 101
*(S,~,<unar-op>)=(S,<not-op>,$)                    -- для правила 103

 -- Функции для аннулирующих правил
 -- нет сдвига, вытолкнуть
*(S,},<i>)=(S,$,$)                              -- для правила 2
*(S,"-|",<i>)=(S,$,$)                              -- для правила 2
*(S,^,<var-name1>)=(S,$,$)                         -- для правила 8
*(S,],<var-name1>)=(S,$,$)                         -- для правила 8
*(S,=,<var-name1>)=(S,$,$)                         -- для правила 8
*(S,&,<var-name1>)=(S,$,$)                         -- для правила 8
*(S,;,<var-name1>)=(S,$,$)                         -- для правила 8
*(S,;,<def-set>)=(S,$,$)                           -- для правила 49
*(S,\,<string_1>)=(S,$,$)                          -- для правила 82
*(S,;,<part-of-real>)=(S,$,$)                      -- для правила 84
*(S,;,<decimal-number2>)=(S,$,$)                   -- для правила 89
*(S,.,<decimal-number2>)=(S,$,$)                   -- для правила 89
*(S,;,<real-number2>)=(S,$,$)                   -- для правила 93
*(S,],<condition1>)=(S,$,$)                   -- для правила 99
*(S,[,<unar-op>)=(S,$,$)                           -- для правила 104
*(S,c,<unar-op>)=(S,$,$)                           -- для правила 104
*(S,a,<unar-op>)=(S,$,$)                           -- для правила 104
*(S,b,<unar-op>)=(S,$,$)                           -- для правила 104

 -- Функции выталкивания терминалов
 -- сдвиг, вытолкнуть
 (S,i,i)=(S,$,$)
 (S,e,e)=(S,$,$)
 (S,l,l)=(S,$,$)
 (S,h,h)=(S,$,$)
 (S,w,w)=(S,$,$)
 (S,\,\)=(S,$,$)
 (S,],])=(S,$,$)
 (S,[,[)=(S,$,$)
 (S,{,{)=(S,$,$)
 (S,},})=(S,$,$)
 (S,;,;)=(S,$,$)

 -- Функция перехода в заключительное состояние
 (S,"-|","[]")=(S,$,$)

 -- Фактор определённости: 80%
 -- Всего функций для данной грамматики: 213
 -- Выдано функций: 170







