\alpha
LaTeX エスケープ コード (例: ) を Unicode (数学) 文字 (例: )に解析しようとしていますU+1D6FC
。
現在、これは、このsymbols
パーサー (ルール)を使用していることを意味します。
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;
これは正常に動作しますがstd::u32string
、結果として取得していることを意味します。コード内に Unicode コード ポイントを保持するエレガントな方法 (おそらく将来の自動化のため) とメンテナンスの理由が必要です。この種のパーサーを UTF-8 に解析する方法はありstd::string
ますか?
symbols
構造体を a に解析することを考えましたstd::string
が、それは非常に非効率的です (時期尚早の最適化は bla bla です)。
これを機能させるために一連のフープを通過する代わりに、エレガントな方法があることを望んでいました(symbols
結果に文字列を追加します)。
ただし、コード ポイント値を使用して UTF8 を使用すると、変換のランタイム コストが発生するのではないかと心配しています (または、constexpr
UTF32->UTF8 変換の可能性はありますか?)。