Курс Основы построения трансляторов


Грамматики класса LL( (LL(-грамматики) - часть 2


.

Правило G ::= e, способ построения СЛЕД(G):

1. E >> TM >> FGM >> FG+E,              символ +

2. E >> TM >> FGM >> FG-E,              символ -

3. F >> (E) >> ™ >> (FGM) >> (FG),      символ )

4. E# >> TM# >> FGM# >> FG#,            символ #

 

Программа нисходящего разбора для LL(1)-грамматик с перечисленными выше правилами имеется в lgram1.cpp. Принципиально она не отличается от программы для Q-грамматик. Имеется массив указателей на строки-правила GR и массив указателей на строки выбирающих символов CH. Для S-правила выбирающие символы отсутствуют (NULL-указатель), поэтому производится сравнение с первым символом правой части правила, для остальных - последовательно проверяются все выбирающие символы в соответствующей строке.

 

char      *GR[]=

{”E:TM”,”M:-E”,”M:+E”,”M:”,”T:FG”,”G:*T”,”G:/T”,”G:”,“F:a”,”F:(E)”,NULL };

char      *CH[]=

{ “a(“,NULL,NULL,”)#”,”a(“,NULL,NULL,”+-)#”,NULL,NULL};

 




Начало  Назад  Вперед