[C++] Sintassi particolare

di
Anonimizzato13722
il
5 risposte

[C++] Sintassi particolare

Buona sera a tutti,

sto studiando per passione la libreria boost.spirit per il parsing di testo in C++.

Durante il tutorial ufficiale ho incontrato una sintassi molto particolare che non riesco a comprendere appieno e non pensavo nemmeno che il linguaggio permettesse sinceramente.

struct ones_ : qi::symbols<char, unsigned>
{
    ones_()
    {
        add
            ("I"    , 1)
            ("II"   , 2)
            ("III"  , 3)
            ("IV"   , 4)
            ("V"    , 5)
            ("VI"   , 6)
            ("VII"  , 7)
            ("VIII" , 8)
            ("IX"   , 9)
        ;
    }

} ones;
Questa è la sintassi, come vedete add sembra essere una funzione ma al posto di una sola sequenza di argomenti ne accetta più di una in un modo che non ho mai visto. Qualcuno di voi con più esperienza di me per caso può spiegarmi come funziona?

Ringrazio tutti per l'aiuto in anticipo.

5 Risposte

  • Re: [C++] Sintassi particolare

    http://www.boost.org/doc/libs/1_50_0/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html
  • Re: [C++] Sintassi particolare

    Avevo già letto la documentazione e so cosa fa il metodo. Devo essermi espresso male scusate, quello che avevo bisogno di sapere è come questa sintassi sia possibile. Cioè come posso io programmatore generare una funzione che accetti più di una coppia di parentesi?

    Grazie comunque del link.
  • Re: [C++] Sintassi particolare

    Non ho mai studiato la libreria boost (purtroppo) , comunque "credo" che se add è una classe , possa ricevere più serie di argomenti in parentesi separate a causa del sovraccarico del operatore() .
  • Re: [C++] Sintassi particolare

    Può darsi che add ritorni un callable, e questo callable sia add stesso. In questo caso, quella sintassi vorrebbe dire: chiama add con gli argomenti nelle prime parentesi; questo primo add ritorna un puntatore ad add che viene eseguito con i parametri nelle seconde parentesi, e via dicendo.

    EDIT: ho trovato conferma qui: http://stackoverflow.com/questions/6505461/function-returning-pointer-to-itself
  • Re: [C++] Sintassi particolare

    dvaosta ha scritto:


    Può darsi che add ritorni un callable, e questo callable sia add stesso. In questo caso, quella sintassi vorrebbe dire: chiama add con gli argomenti nelle prime parentesi; questo primo add ritorna un puntatore ad add che viene eseguito con i parametri nelle seconde parentesi, e via dicendo.

    EDIT: ho trovato conferma qui: http://stackoverflow.com/questions/6505461/function-returning-pointer-to-itself
    Non avevo mai pensato si potesse fare una cosa del genere, ma risulta essere veramente intelligente ed anche molto utile. La utilizzerò.

    Grazie mille dell'aiuto, difficilmente ci sarei arrivato da solo.
Devi accedere o registrarti per scrivere nel forum
5 risposte