spirit::symbols: geparsten string rausfinden?



  • Mal eine Frage an die spirit profis:

    Ich versuche den nabialek_trick in meiner Grammatik einzubauen, allerdings brauch ich neben der Rule in der semantik action auch noch den geparsten string als Rückgabewert, ich möchte nämlich sowas in der Art machen:

    boost::spirit::symbols<Rule,Char> table;
    Rule content;
    Rule element
        =
            '<'
            >> table
            //die zurückgegebene rule aus der table in content speichern
            [
                set_rest<Rule>(content)
            ]
            //den geparsten string als tagnamen speichern, das geht so leider nicht
            [
                element.name=phoenix::construct_<String>(phoenix::arg1,phoenix::arg2)
            ]
            >>'>'
            >>content//die gespeicherte regel hier nutzen
            >>'</'
            >>f_str_p(element.name)//tagnamen hier wieder nutzen
            >>'>';
    

    weis vielleicht jemand, wie man elegant an diese Information kommen kann?

    //edit okay, kommentare in [] kicken bb tags. gut zu wissen 😮



  • ich hab jetzt mal ne temporäre lösung gefunden, die aber nicht sonderlich gut ist:

    Rule name=*(/*auswahl der gültigen zeichen*/)
    ...
    table
    [
        set_rest<Rule>(content)
    ]
    & name
    [
        element.name=phoenix::construct_<String>(phoenix::arg1,phoenix::arg2)
    ]
    


  • Hmm ist das Spirit 2.0?

    Kannst du mal die ganze Rule zeigen? (Nur aus Interesse)



  • Mr. N schrieb:

    Kannst du mal die ganze Rule zeigen? (Nur aus Interesse)

    das ist 1.804, und die echte rule isn ticken komplexer, das hier ist sozusagen die entschlackte version(inklusive eines operatorfehlers &&->&).

    Desweiteren ist das ganze ziemlich ungetestet, weil ich das ganze mehrmals umbaue, aber das da oben ist die Lösung, die mir jetzt so nach lesen der doku einfiel.


Anmelden zum Antworten