libclang określa jedynie 5 rodzaje tokenów:libclang: jak zdobyć żeton semantyka
- CXToken_Punctuation
- CXToken_Keyword
- CXToken_Identifier
- CXToken_Literal
- CXToken_Comment
Czy to możliwe, aby uzyskać bardziej szczegółowe informacje na temat tokeny? Na przykład, z następującego kodu źródłowego:
struct Type;
void foo(Type param);
spodziewałbym wyjście być jak:
- struct - kluczowe
- Typ - nazwa typu
- ; - znaki interpunkcyjne
- nieważne - typ/Hasło
- foo - nazwa funkcji
- (- interpunkcja
- Typ - typ parametru funkcji
- param - funkcja nazwa parametru
- ) - znaki interpunkcyjne
- ; - interpunkcja
Muszę również odwzorować te obiekty na lokalizacje plików.
Niektóre linki na którym opierają swoje obserwacje dotyczące Clang prace będą bardzo przydatne (nie twierdząc, jesteś źle, w rzeczywistości widziałem większość z tego, co mówisz podczas eksploracji libclang sam, wskazując tylko, jak edukacyjne będzie miał kilka linków do poparcia swoich uwag.) – Yannis
Wiem, jak działają parsery, zaimplementowałem więcej niż jeden. W późniejszym czasie dodam więcej szczegółów do mojego pytania.Teraz używam 'clang_annotateTokens', ale zwraca on kursory z nieoczekiwanym' CXCursorKind's. – piotrekg2
@ piotrekg2: Jeśli naprawdę wiesz, jak działają analizatory, dlaczego spodziewasz się, że * token stream * będzie zawierał nie-tokenowe informacje, takie jak "nazwa funkcji" i tak dalej? Jest to informacja oparta na analizatorze, a nie na tokenie. –