似乎挠曲不支持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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top