如何使柔性(词法)读取UTF-8字符的输入?
-
06-09-2019 - |
题
似乎挠曲不支持UTF-8的输入。每当扫描器遇到一个非ASCII字符,它将停止扫描,就好像它是一个EOF。
有没有办法迫使柔性吃我的UTF-8字符?我不希望它实际上是匹配UTF-8字符,使用时刚刚吃“”图案。
任何建议?
修改强>
在最简单的办法是:
ANY [\ x00- \ XFF]
和使用的“任意”代替“”在我的规则。
解决方案
我一直在寻找到这个自己和阅读Flex的邮件列表,看看有没有人想过这个问题。为了让Flex的阅读Unicode是一个复杂的事情......
UTF-8编码可以做到的,和大多数其他编码(该16S)将导致大量的表驱动自动机。
一个常见方法到目前为止是:
我所做的就是简单的写配单UTF-8模式 字符。他们看起来像 下面,但你可能要 重新读取的UTF-8规范 因为我写了这个很久以前。结果 当然,您将需要结合 这些既然你想unicode字符串, 不只是单个字符。
UB [\200-\277] %%
[\300-\337]{UB} { do something }
[\340-\357]{UB}{2} { do something }
[\360-\367]{UB}{3} { do something }
[\370-\373]{UB}{4} { do something }
[\374-\375]{UB}{5} { do something }
从邮件列表两者。
我可以看它进一步寻找之后创建用于支持UTF-8的适当的补丁。上述解决方案似乎难以维护大型.L文件。而实在是太丑了!你可以使用类似的创建范围“”变换规则到所有ASCII和UTF-8字符匹配,但是仍然比较难看。
希望这有助于!
其他提示
写作negatet characterclass也可能有助于:
[\ n \ t]的返回WHITESPACE; [^ \ n \吨] retrun NON_WHITESPACE
不隶属于 StackOverflow