2010-02-14 3 views
5

Dans Lex/Flex existe-t-il un moyen d'obtenir la position dans le flux de caractères (depuis le début du fichier) à laquelle un jeton apparaît? Un peu comme yylineno sauf qu'il renvoie la position du caractère comme un entier?Position du caractère dans le scanner en utilisant Lex/Flex

Sinon, quelle est la meilleure façon d'y arriver? Ai-je besoin de garder mon propre compteur?

Merci!

+0

position depuis le début du fichier ou depuis le début de la ligne? –

+0

Position depuis le début du fichier – ChrisDiRulli

Répondre

4

Vous pouvez suivre la position du caractère en utilisant yyleng et YY_USER_ACTION. yyleng a la longueur du jeton courant, YY_USER_ACTION est invoqué avant de correspondre à un jeton. Dans YY_USER_ACTION, ajoutez yyleng à une variable de position. Vous devrez réinitialiser la variable à chaque jeton de fin de ligne, sauf si vous souhaitez que la position du caractère soit définie au début du flux d'entrée. Dans votre action de règle, la variable - yyleng est la position de départ du jeton.

+0

C'est génial! Merci! – ChrisDiRulli

Questions connexes