2013-07-17 7 views
0

일부 정보를 얻기 위해 일부 C++ 파일을 구문 분석해야합니다. 한 사용자의 경우에는 열거 형 값 "ID_XYZ"가 있는데, 소스 파일에 표시되는 횟수를 확인하려고합니다. 그래서 내 질문에 C + +로 구분 기호를 구분 기호는 무엇입니까?C++ 언어 기호 구분 기호

+0

파일을 문자열 변수로 읽은 다음 기본 문자열 일치 또는 정규식 기반 문자열 검색을 사용하여 필요한 enum을 검색하지 마십시오. – AurA

+0

또는 변수 이름에 나타날 수있는 문자 – leon

+0

표준에 모두 포함 –

답변

2

순전히 구분 문자를 기반으로 C 또는 C++ 소스 코드를 토큰화할 수 없습니다. 한 번에 한 문자 씩 읽어야하며, 해당 문자가 현재 토큰의 일부가 될지 여부를 알아야합니다. .

예를 들어 C 스타일의 시작 주석 토큰을 ​​볼 때 닫기 토큰 토큰이 발생할 때까지 문자를 살펴야합니다. 마찬가지로 문자열 및 프리 프로세서 지시문 (예 : #if 0 .... #endif 시퀀스). 그것을 정확하게하기 위해서, 당신은 또한 삼부작을 올바르게 다룰 필요가 있습니다. 예를 들어,이 같은 고려 : 렉서가 제대로 trigraph를 처리하지 않는 경우

// Why doesn't this work??/ 
ID_XYZ = 1; 

, 그것은 아마 당신의 ID_XYZ의 인스턴스로서 식별됩니다 -하지만 실제로는 그렇지 않다 - ??/ 상기 마지막 줄의 끝은 실제로 \으로 끝나는 trigraph입니다. 이는 "단일 줄"주석이 실제로 다음 줄인 줄의 끝까지 확장되며 ID_XYZ의 실제 인스턴스가 실제로 주석의 일부임을 의미합니다.