Доброго времени суток. Нужна помощь, ибо сам «в лыжи обутый». Необходимо запрограммировать вычисление синтезируемых атрибутов для программной реализации синтаксически управляемого сложения вещественных чисел.
Т.е. подаем строку 1.01+1.1 Должен быть ответ: 2.11.
Вот грамматика:
S::=E
E::=T+T
T::=L.L
L::=B
L::=LB
B::=0|1|2|3|4|5|6|7|8|9
Понятия не имею, что можно сделать с третьим и пятым правилами. Сначала, довольный жизнью сганашил через математические выражения. Типа так:
S: E{$$ = $1; cout << "Output string: " <<$$<<endl;};
E: T '+' T {$$=$1+$3;};
T: L '.' L{$$=$1+0.1*$3/10;};
L: B{$$ = $1; cout<<$$<<endl;};
|
L B {$$=$1*10+$2;cout<<$$<<'\n';} ;
B: '0' {$$ = 0;}
| '1' {$$ = 1;}
| '2' {$$ = 2;}
В идеале, как сказал препод, надо бы сделать атрибуты массивами. А в конце запрограммировать сложение в столбик. Буду рад любым идеям. Заранее спасибо.