是否有方法配置/修改yylineno
以将单个\r
(回车)字符识别为换行符?
最后,我想对3种不同类型的文件使用yylineno
:
\n
:类Unix\r\n
:基于Windows的(将识别为单个换行符,而不是两行,即\r
+ \n
)\r
:例如经典Mac我知道,我能够定义自己的变量,以跟踪Flex中的行号,并在每次找到一个新行字符(\r|\n|\r\n)
时增加它,但如果可用,我更愿意使用内置的Flex特性。
谢谢。
发布于 2017-06-01 04:36:51
坏消息是flex没有这个功能。行计数根本无法配置,这取决于对模式的静态分析,以查看哪些模式可能与换行符匹配。如果换行符长度超过一个字节,这是不可能的,因为换行符序列可以被分割成两个独立的标记。(如果您正在实现自己的线路计数器,请确保考虑到这一事实。最简单的解决方案是确保令牌不可能在\r
之后以\r\n
序列结束。)
好消息是,现在\r
-terminated文件非常罕见。因此,不处理这些问题的成本可能不会很大。
https://stackoverflow.com/questions/44296371
复制相似问题