有没有办法配置/修改yylineno
以将单个\r
(回车)字符识别为换行符?
最后,我想将yylineno
用于3种不同类型的文件:
\n
:类似Unix的\r\n
:基于Windows(将被识别为单个换行符,而不是两个换行符,即\r
+ \n
)\r
:例如经典Mac OS 我知道我可以定义自己的变量来跟踪Flex中的行号,并在每次找到换行符(\r|\n|\r\n)
时将其递增,但我更喜欢如果可用,请使用内置的Flex功能。
谢谢。
答案 0 :(得分:2)
坏消息是flex没有这个功能。行计数根本不可配置,它取决于模式的静态分析,以查看哪些可能与换行符匹配。如果换行符序列长度超过一个字节,那是不可能的,因为换行符序列可以分成两个单独的标记。 (如果要实现自己的行计数器,请务必考虑这一事实。最简单的解决方案是确保令牌在\r
序列\r\n
之后无法结束。)
好消息是\r
- 终止文件现在非常罕见。因此,不处理它们的成本可能不会很大。