КС-грамматика для языка L, построение дерева вывода и левосторонней для цепочки aabbbcccc. Метод восходящего разбора

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Фрагмент текста работы

Если допустить в правилах вывода грамматики пустую альтернативу

A ® a a |…| a a|e

то метод рекурсивного спуска может оказаться не применим.

Грамматика G = (VT, VN, P, S) называется контекстно-свободной ( КС), если каждое правило из Р имеет вид A →β, где A € VN, β € (VT U VN).

Грамматика G = (VT, VN, P, S) называется укорачивающей контекстно-

свободной ( УКС ), если каждое правило из Р имеет вид A →β, где A Î VN,

β Î(VT U VN)*.

Решение:

G:

S -> A┴

A -> B { aB } B

B -> b

По данной грамматике анализ методом рекурсивного спуска вести можно, так грамматика имеет правила имеют вид  A®.a ; A®aiai, i=1…n  .  В регулярной грамматики правила вида:                                   A -> a

A -> aA

A -> Aa  

2.2.13. Записать в ПОЛИЗе следующий оператор языка Си, используя стек, выполнить его при указанных начальных значениях переменных:

S = 0;

for ( I = 1; I <= k; I = I + 1) S = S +i*i;

при k = 3.

ПОЛИЗ(ПОЛьская Инверсная Запись)внутренне представление программы. В ПОЛИЗе операнды выписываются слева направо в порядке их использования, знаки стоят таким образом, что знаку операции непосредственно предшествуют операнды, учтено старшинство операций, а скобок нет. В ПОЛИЗе всегда подразумевается по умолчанию, что любая операция бинарная.

При решении используется алгоритм Дейкстры по переводу выражений в ПОЛИЗ.

Так же ПолИЗу соответствует так называемое дерево ПолИЗа.

Распознавателями для КС-языков служат автоматы с магазинной памятью.МП-автомат имеет стек (магазин), в который можно помещать специальные «магазинные символы»(обычно это терминальные и нетерминальные символы грамматики языка). Переход из одного состояния в другое зависит не только от входного символа, но и от символа на верхушке стека.

Магазинный автомат

Контекстно-свободными называются языки, определяемые грамматиками типа G(VT, VN, P, S), в которых правила P имеют вид: A®b, где AÎ VN и bÎV*, V =VT ÈVN. Распознавателями КС-языков служат автоматы с магазинной памятью (МП-автомат).

В общем виде МП-автомат можно определить следующим образом:

R(Q, V, Z, d, q0, z0, F), где Q – множество состояний автомата;

V – алфавит входных символов автоматаж

Z – специальныйконечный алфавит магазинных символов автомата, VÍZ;

d - функция переходов автомата, которая отображает множество Qx(VÈ{l})xZ на конечное множество подмножеств P(QxZ*);

q0 ÎQ – начальное состояние автомата;

z0 ÎZ – начальный символ магазина;

FÍ Q – множество конечных состояний.

МП-автомат имеет стек (магазин), в который можно помещать специальные «магазинные символы»(обычно это терминальные и нетерминальные символы грамматики языка). Переход из одного состояния в другое зависит не только от входного символа, но и от символа на верхушке стека. Конфигурация автомата определяется тремя параметрами: состоянием автомата, текущим символом входной цепочки(положением указателя в цепочке) и содержанием стека.

Решение:

S 0 =

I 1 +

p0 :    I k  <=

p1

!F

S S I I * + =

I I 1 + =

p0

!

p1:                             

Реализация стека:

1)  S=0, I=1, k=3

2)  I=1, S=0+ 1*1 = 1

3)  I=2, S=1+2*2=5

4)  I=3, S=5+3*3=14

2.2.14. Записать в ПОЛИЗе следующий оператор языка Си, используя стек, выполнить его при указанных начальных значениях переменных:

switch (k) {

case 1: a = not a; break;

case 2: b = a or not b;

case 3: a = b;

}

ПОЛИЗ(ПОЛьская Инверсная Запись)внутренне представление программы. В ПОЛИЗе операнды выписываются слева направо в порядке их использования, знаки стоят таким образом, что знаку операции непосредственно предшествуют операнды, учтено старшинство операций, а скобок нет. В ПОЛИЗе всегда подразумевается по умолчанию, что любая операция бинарная.

Распознавателями для КС-языков служат автоматы с магазинной памятью.МП-автомат имеет стек (магазин), в который можно помещать специальные

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.