Quantcast
Channel: Linux.org.ru: Форум (тех. форум)
Viewing all articles
Browse latest Browse all 74575

Работа с Bison. Сложение вещественных чисел.

$
0
0

Доброго времени суток. Нужна помощь, ибо сам «в лыжи обутый». Необходимо запрограммировать вычисление синтезируемых атрибутов для программной реализации синтаксически управляемого сложения вещественных чисел.

Т.е. подаем строку 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;}
Но такой подход не подходит для чисел с разной разрядностью. Потом попробовал все сделать строками, а потом через atoi - тоже не сложилось.

В идеале, как сказал препод, надо бы сделать атрибуты массивами. А в конце запрограммировать сложение в столбик. Буду рад любым идеям. Заранее спасибо.

 ,


Viewing all articles
Browse latest Browse all 74575

Trending Articles