2010-02-14 5 views
5

In Lex/Flex esiste un modo per ottenere la posizione nel flusso di caratteri (dall'inizio del file) in cui appare un token? Un po 'come lo yylineno tranne che restituisce la posizione del personaggio come un numero intero?Posizione caratteri nello scanner utilizzando Lex/Flex

In caso contrario, qual è il modo migliore per ottenere a questo? Devo tenere il mio contatore?

Grazie!

+0

posizione dall'inizio del file o dall'inizio della riga? –

+0

Posizione dall'inizio del file – ChrisDiRulli

risposta

4

È possibile tenere traccia della posizione del carattere utilizzando yyleng e YY_USER_ACTION. yyleng ha la lunghezza del token corrente, YY_USER_ACTION è invocato prima della corrispondenza con un token. In YY_USER_ACTION, aggiungi yyleng a una variabile di posizione. Dovrai reimpostare la variabile su ciascun token di fine linea a meno che tu non voglia la posizione del carattere dall'inizio del flusso di input. Nell'azione della regola, la variabile - yyleng è la posizione iniziale del token.

+0

È grandioso! Grazie! – ChrisDiRulli