2014-02-23 3 views
0

플렉스가 읽는 각 토큰에 대해 고유 식별자를 만드는 방법이 있습니까?플렉스/들소의 고유 토큰 식별자

예 :

플렉스 :

"+"  {yylval.string =yytext;return PLUS;} 

[0-9]+ { 
yylval.string =yytext; 
return INT;} 

들소 :

E: INT PLUS INT 
{ 
Node($1.ID);Node(PLUS.ID);Node($3.ID);Edge(PLUS.ID,$1.ID);Edge(PLUS.ID,$3.ID); 
} 

고유 한 노드가 생성 입력이 때마다. 이것은 내가 달성하고 싶은 것의 예일뿐입니다. Node (...) 및 Edge (...)가 호출되면 나중에 그래프로 변환 된 파일에 인쇄됩니다. 나는이를 만들려하기 때문에 나는 그들 고유 싶습니다

enter image description here

아니라이 : 솔루션의

enter image description here

다른 유형도 환영합니다.

답변

0

이렇게하는 명백하고 쉬운 방법은 전역 변수를 사용하고 새 노드 ID가 필요할 때마다이를 증가시키는 것입니다. 렉서 (lexer) 나 파서 (parser)에서이 작업을 수행 하느냐는 다소 부적절합니다. 어느 쪽이든 논쟁이 있습니다. 그러나 파서에서 사용하는 경우 전역 변수에 알레르기가있을 수 있으므로 로컬 변수를 사용할 수 있습니다.이 경우에도 "재진입 가능"플렉스 스캐너를 사용할 수 있습니다.