2010-02-14 3 views
5

Lex/Flex에는 문자 스트림의 위치 (파일 시작 부분)에서 토큰이 표시되는 방법이 있습니까? 그것은 문자 위치를 정수로 반환한다는 점을 제외하면 yylineno와 같은 종류입니까?Lex/Flex를 사용하는 스캐너의 문자 위치

그렇지 않다면 어떻게해야할까요? 나 자신의 카운터를 유지해야합니까?

감사합니다.

+0

파일의 시작 위치 또는 줄의 시작 위치? –

+0

파일의 처음부터의 위치 – ChrisDiRulli

답변

4

yyleng 및 YY_USER_ACTION을 사용하여 문자 위치를 추적 할 수 있습니다. yyleng은 현재 토큰의 길이를 가지며 YY_USER_ACTION은 토큰과 일치하기 전에 호출됩니다. YY_USER_ACTION에서 yyleng을 position 변수에 추가하십시오. 입력 스트림의 시작 부분에서 문자 위치를 원한다면 각 행 끝 토큰에서 변수를 재설정해야합니다. 룰 조치에서 변수 -yyleng은 토큰의 시작 위치입니다.

+0

좋습니다. 감사! – ChrisDiRulli