배치 스크립트를 사용하여 .h 파일을 분석하려고합니다. .H 파일에서 일부 구조체는 아마도 다음과 같이있다 : 당신이 볼 수 있듯이배치에서 "*"파일에서 올바르게 읽을 수 없습니다
typedef struct _sample {
int *a;
char* b;
float * c;
} Sample;
는, "*"어디서든 데이터 타입과 멤버 이름 사이에있을 수 있습니다. 그것이 내가 내 .BAT 파일에 쓴 것입니다 아래 (간체) :
for /F "tokens=*" %%i in (sample.h) do (
for %%j in (%%i) do echo %%j
)
이 박쥐 내가 그것을 단순화했기 때문에 그것을 읽고 모든 단어를 에코한다 무엇. 결과는 다음과 같습니다
는
typedef
struct
_sample
{
int ::"*a" is skipped
b ::"char*" is skipped
float
sample.bat ::"*" is solved as reading current path files
sample.h
c
}
Sample
그래서 질문입니다 : 어떻게 "*"제대로와 포인터 선언의이 3 가지를 분석 할 수 있습니까?
tokens=x,y,m-n - specifies which tokens from each line are to be passed to the for body for each iteration. This will cause additional variable names to be allocated. The m-n form is a range,
참고이 부분 : for
가 와일드 카드로 *
및 ?
를 해석하고이를 확장
specifying the mth through the nth tokens. If the last character in the tokens= string is an asterisk, then an additional variable is allocated and receives the remaining text on the line after the last token parsed.
프레인 'for' 루프 사용'* '(또한'? ')는 와일드 카드의'in' 키워드 후의 모든 항목은 포함되어 있으면되므로'for' 파일 시스템 및 검색 액세스 일치하는 항목의 경우, 그 경우에 반환됩니다. 와일드 카드가 사용되지 않으면 파일 시스템에 액세스 할 수없고 항목은'for'에 의해 직접 반환됩니다 ... – aschipfl
이것은 cmd 스크립팅의 큰 단계이지만 코드를 실제로 분석하려면 ANTLR이 좋을 것입니다 선택. C 언어 구문을 크게 지원합니다. http://www.antlr.org/ – lit