Sto provando ad analizzare i codici di escape LaTeX (ad esempio \alpha
) ai caratteri Unicode (matematici) (ad esempio U+1D6FC
).Tabelle dei simboli Boost Spirit (X3) risultanti in stringhe UTF8
In questo momento questo significa che sto usando questo symbols
parser (regola):
struct greek_lower_case_letters_ : x3::symbols<char32_t>
{
greek_lower_case_letters_::greek_lower_case_letters_()
{
add("alpha", U'\u03B1');
}
} greek_lower_case_letter;
Questo funziona bene, ma significa che sto ottenendo un std::u32string
di conseguenza. Mi piacerebbe un modo elegante per mantenere i codici Unicode nel codice (per un'automazione futura) e per motivi di manutenzione. C'è un modo per far analizzare questo tipo di parser in un UTF-8 std::string
?
Ho pensato di rendere l'analisi di symbols
struct a std::string
, ma sarebbe altamente inefficiente (lo so, l'ottimizzazione prematura bla bla).
Speravo ci fosse un modo elegante invece di passare attraverso un mucchio di cerchi per ottenere questo lavoro (symbols
accodare le stringhe al risultato).
Tuttavia, temo che utilizzando i valori del punto di codice e volendo UTF8 si incorre in un costo di runtime della conversione (o è possibile una conversione constexpr
UTF32-> UTF8?).
ho deciso usando 'std :: STRING' come simbolo chiave/valore, e sto cercando di ottenere la regola' char_' a lavorare come una sequenza usando il 'repeat' direttiva. Confronto tra la versione UTF8 e UTF32 [qui] (http://coliru.stacked-crooked.com/a/47a50fdbec15cd31). Non capisco perché la seconda versione fallisce dopo il primo '\ alpha'. – rubenvb
@rubenvb Lo vedrò più tardi stasera. – sehe
https://www.livecoding.tv/sehe/ – sehe