我已经使用精灵经典了很长一段时间,最近开始学习 v2。两者都易于使用和功能强大,足以处理中度解析 问题。如何更改解析器的内部字符类型?
在精神古典和ascii字符的田园诗般的日子里, 这项工作只是简单地将EBNF修改为LL格式。但最后,我必须 处理国际。
我的想法很粗糙。创建一个前向迭代器,它在任何编码的输入文本字节流上迭代 。迭代器处理 这些编码转换作业,并为解析器提供utf16/32代码 单元(该迭代器可以通过iconv或icu4c轻松实现)。
代码单元的类型应该是解析器处理的内部字符类型。 但通过阅读文档后,我只能找到几个 原语,迭代器模板具有显式的char_t参数。 这意味着我必须重新配置这些数字,指令,扫描仪和 等?
我也检出了v2文档。它提供了一种命名空间的方式来使 的所有内容保持一致,但仍然没有太多关于如何明确地更改内部char类型的内容。再次,我搜索了邮件列表 存档,但似乎那些unicode和其他编码相关的帖子是 还在空中。有人告诉我,通过不同编码的文件,精神仍然可以工作 。所以我使用不同编码但内容相同的文件测试了解析器 。几个MBCS 编码的文件通过了测试,随便传递了一些utf8文件。 但其他编码大部分时间都失败了。