libclang definisce solo 5 tipi di gettoni:libclang: come ottenere gettone semantica
- CXToken_Punctuation
- CXToken_Keyword
- CXToken_Identifier
- CXToken_Literal
- CXToken_Comment
E 'possibile per avere informazioni più dettagliate su gettoni? Ad esempio, per il seguente codice sorgente:
struct Type;
void foo(Type param);
mi aspetterei l'uscita di essere come:
- struct - parola chiave
- Tipo - nome del tipo
- ; - punteggiatura
- vuoto - tipo/parola chiave
- foo - nome della funzione
- (- punteggiatura
- Tipo - il tipo di parametro di funzione
- param - funzione nome del parametro
- ) - punteggiatura
- ; - punteggiatura
Devo anche mappare tali entità in posizioni file.
Alcuni link su dove basate le vostre osservazioni su come funziona Clang sarà molto utile (non sostenendo sei sbagliato, infatti ho visto la maggior parte di quello che dici mentre esploro libclang me stesso, semplicemente sottolineando come sarebbe educativo avere alcuni collegamenti per supportare le tue osservazioni) – Yannis
So come funzionano i parser, ne ho implementato più di uno. Aggiungeremo più dettagli alla mia domanda più tardi Attualmente sto usando 'clang_annotateTokens' ma restituisce cursori con' CXCursorKind's inaspettati. – piotrekg2
@ piotrekg2: se sai veramente come funzionano i parser, perché ti aspetti che il * token stream * abbia informazioni non-token come "nome funzione" e così via in esso? Si tratta di informazioni basate su parser, non basate su token. –