У меня есть рабочая грамматика (написанная на лексах и бизонах), которая разбирает полиномиальные выражения.Это как ваш стандартный синтаксис, похожий на учебник.Вот очень упрощенная версия грамматики:
Expr
: DOUBLE {$$ = newConstExpr($1);}
| Expr '+' Expr {$$ = newBinaryExpr('+', $1, $2);}
| Expr '*' Expr {$$ = NewBinaryExpr('*', $1, $2);}
| '(' Expr ')' {$$ = $2;}
;
Моя проблема в том, что Лекс использует FILE * для yyin, и мне нужно проанализировать ввод из istream C ++.Я знаю, что flex ++ может генерировать класс FlexLexer (который может принимать istream в своей конструкции), но трудно заставить его связываться с Bison, и даже сам автор утверждает (в комментариях в сгенерированном файле лексера), чтоглючит.
Поэтому мне интересно, если кто-нибудь знает хороший способ использовать гибкий сканер и синтаксический анализатор бизонов с объектом istream C ++ в качестве ввода вместо ФАЙЛА *.