2010-02-14 50 views
5

在Lex/Flex中,是否有一種方法可以獲取令牌出現在字符流中的位置(從文件的開頭)?有點像yylineno,只是它將字符位置作爲整數返回?使用Lex/Flex的掃描儀中的字符位置

如果沒有,最好的方法是什麼?我需要保留自己的櫃檯嗎?

謝謝!

+0

位置從文件的開頭還是從行的開頭? – 2010-02-14 04:30:02

+0

從文件開始的位置 – ChrisDiRulli 2010-02-14 05:30:22

回答

4

您可以使用yyleng和YY_USER_ACTION來跟蹤字符位置。 yyleng具有當前令牌的長度,YY_USER_ACTION在匹配令牌之前被調用。在YY_USER_ACTION中,將yyleng添加到位置變量。除非需要從輸入流開始的字符位置,否則您需要重置每個行尾標記處的變量。在您的規則操作中,變量 - yyleng是令牌的起始位置。

+0

太棒了!謝謝! – ChrisDiRulli 2010-02-14 17:26:30