J'utilise spirit classic depuis un moment et j'ai récemment commencé à apprendre v2. Les deux sont faciles à utiliser et assez puissant pour gérer l'analyse modérée problème.Comment changer le type de caractère interne de l'analyseur?
Dans ces jours idylliques avec l'esprit classique et les caractères ascii, le travail est simplement en adaptant une forme EBNF à LL. Mais finalement, je dois traiter avec l'i18n.
Ma pensée est vraiment brute. Créez un itérateur avant qui répète sur le flux d'octets de texte d'entrée de tout codage. L'itérateur gère le travail de conversion d'encodage et alimente l'analyseur avec l'unité de code utf16/32 (l'itérateur peut être facilement implémenté par iconv ou icu4c).
Le type d'unité de code doit être le type de caractère interne traité par l'analyseur. Mais après avoir lu le document, je n'ai trouvé que plusieurs primitives , les modèles d'itérateur ont un paramètre char_t explicite. Est-ce que signifie que je dois reformuler ces nombres, directives, scanners, et etc.?
J'ai également vérifié le document v2. Il offre un moyen d'espace de nom pour rendre tout cohérent , mais toujours pas trop sur la façon explicite de changer le type de caractère interne. Encore une fois, j'ai cherché dans l'archive de la liste de diffusion, mais il me semble que ces messages liés à l'encodage Unicode et autres sont toujours en l'air. Quelqu'un m'a dit que l'esprit pouvait encore fonctionner à travers ces fichiers avec un encodage différent. J'ai donc testé l'analyseur en utilisant des fichiers avec un encodage différent mais avec le même contenu. Plusieurs fichiers codés MBCS ont réussi le test, et un fichier utf8 a également été transmis. Mais l'autre encodage a échoué la plupart du temps.