2010-02-14 9 views
5

En Lex/Flex, ¿hay alguna manera de obtener la posición en la secuencia de caracteres (desde el inicio del archivo) en la que aparece un token? ¿Algo así como yylineno, excepto que devuelve la posición del personaje como un número entero?Posición del carácter en el escáner con Lex/Flex

Si no, ¿cuál es la mejor manera de conseguirlo? ¿Debo guardar mi propio contador?

Gracias!

+0

posición desde el inicio del archivo o desde el comienzo de la línea? –

+0

Posición desde el inicio del archivo – ChrisDiRulli

Respuesta

4

Puede rastrear la posición del carácter usando yyleng y YY_USER_ACTION. yyleng tiene la longitud del token actual, se invoca YY_USER_ACTION antes de hacer coincidir un token. En YY_USER_ACTION, agregue yyleng a una variable de posición. Tendrá que restablecer la variable en cada token de final de línea a menos que desee la posición del carácter desde el inicio de la secuencia de entrada. En su acción de regla, la variable - yyleng es la posición inicial del token.

+0

¡Eso es genial! ¡Gracias! – ChrisDiRulli

Cuestiones relacionadas