使用Lex / Flex在扫描仪中的字符位置

时间:2010-02-14 04:09:17

标签: parsing compiler-construction lexical-analysis

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

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

谢谢!

1 个答案:

答案 0 :(得分:5)

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