7

在 Lex/Flex 中,有没有办法获取令牌出现在字符流中的位置(从文件的开头)?有点像 yylineno ,只是它将字符位置作为整数返回?

如果没有,最好的方法是什么?我需要保留自己的柜台吗?

谢谢!

4

1 回答 1

6

您可以使用 yyleng 和 YY_USER_ACTION 跟踪字符位置。yyleng 具有当前令牌的长度,在匹配令牌之前调用 YY_USER_ACTION。在 YY_USER_ACTION 中,将 yyleng 添加到位置变量。您需要在每个行尾标记处重置变量,除非您想要输入流开头的字符位置。在您的规则操作中,变量 - yyleng 是令牌的起始位置。

于 2010-02-14T04:30:51.097 回答