Sto per scrivere un parser per un linguaggio simile alla matematica e ho scoperto che sarebbe bello invocare talvolta la mia grammatica dello spirito per le parti secondarie dell'espressione da analizzare.Sono consentite le grammatiche boost-spirit ricorsive?
vale a dire se sto per analizzare
a+b*c+d
sarebbe utile per chiamare parse()
sul 'b * c' parte durante l'interrogazione il segno '+'.
È possibile eseguire questa operazione durante l'utilizzo della stessa istanza della grammatica? (Il parametro grammaticale sarebbe '* this')
Anche se non sono ancora del tutto convinto che questo sia il modo migliore per eseguire questo particolare compito, trovo la domanda piuttosto interessante, dal momento che non ho trovato nulla nei documenti .
Ovviamente non dovrei dipendere da variabili locali o globali della classe se ho usato questa tecnica. Ma mi piacerebbe sapere se è principalmente permesso dal disegno dello spirito.
EDIT:
mie istanze di grammatica apparire come segue:
class MyGrammar : public boost::spirit::qi::grammar<...>
{
/* a few rules. Some with local and/or inherited attributes */
MyGrammar(void)
{
/* assign all the rules, use a few 'on_error' statements */
// In one or two rules I would like to invoke parse(...,*this,...)
// on a subrange of the expression
}
}
Grazie!
come l'istanza assomiglia? – elyashiv
@elyashiv Vedi modifica – iolo
Questa è una domanda altamente specifica con uno snippet di codice privo di significato. Perché non inizi con gli esempi nella documentazione: http://boost-spirit.com/home/doc/ – sehe