Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Xiaomi Pad 8 Pro adotta il potente Snapdragon 8 Elite all'interno di un corpo con spessore di soli 5,75 mm e pannello LCD a 144Hz flicker-free, per un tablet che può essere utilizzato con accessori dedicati di altissima qualità. Fra le caratteristiche esclusive, soprattutto per chi intende usarlo con la tastiera ufficiale, c'è la modalità Workstation di HyperOS 3, che trasforma Android in un sistema operativo con interfaccia a finestre
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-10-2008, 17:49   #1
LimiT-MaTz
Senior Member
 
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 673
[Python] Parser C/C++

buongiorno a tutti,
avrei il seguente problema da sottoporvi ( spero di recuperare qualche consiglio ).
Quello che devo ottenere dato un file.c e data una funzione (puo' essere anche il main ) determinare tutte le variabili utilizzate ( nome variabile e tipo ). Nel caso sia utilizzata anche una variabile globale protrarre la ricerca negli include.

Il mio modo di procedere 'barbaro' potrebbe essere quello di leggere la porzione di codice che mi interessa e:
- cliclare al fine di leggere la dichiarazione delle variabili
- ricerca delle variabili globali ( per determinare quali sono le variabili globali: itero nel codice e per ogni token verifico che non sia una funzione ( nel formato "nomefunzione(.*)" ) e che non sia una keyword C ). una volta determinato il nome della variabile globale cercare ricorsivamente negli include la definizione in modo da trovare il tipo.

Sono abbastanza sicuro che esista qualche parser (libreria) che mi possa aiutare, ottenendo un prodotto migliore e in meno tempo.

avete qualche consiglio in merito? qualche spunto per fare delle ricerce...

grazie.
__________________
MaTz!
LimiT-MaTz è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2008, 21:03   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
http://www.antlr.org/

Scaricalo e installalo. Per lavorare con la grammatica utilizza ANTLRWork che è un bellissimo e comodissimo tool.

Perché ANTLR? Perché permette di scrivere velocemente parser, e può generarli per diversi linguaggi di programmazione (tra cui Python).

Ma la cosa bellissima di ANTLR è che può generare direttamente degli AST (Abstract Syntax Tree).

Una volta generato l'AST per risolvere il tuo problema ti basta partire dall'AST della funzione che t'interessa andando a caccia degli identificatori utilizzati al suo interno. Ovviamente nel caso in cui non venga trovata nessuna definizione locale per una certa variabile usata ti basterà esplorare l'AST del livello precedente (che è quello globale) andando a caccia delle definizioni di variabili.

E' chiaro che puoi anche fare a meno degli AST e, quindi, scrivere delle opportune azioni da eseguire man mano che il parser riconosce i vari costrutti sintattici, ma con gli AST secondo me ti sbrighi prima.

Nel sito trovi un sacco di materiale e anche una grammatica per il linguaggio C: http://www.antlr.org/grammar/1153358328744/C.g
Questa genera codice Java e ovviamente il codice delle azioni è Java, ma è molto poco e non dovresti avere difficoltà a riscriverle in Python.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Addio definitivo a iOS 26.4, Apple blocc...
EPYC di nuova generazione: AMD supporter...
AMD, Arm e Qualcomm scommettono su Wayve...
Intel potrebbe estendere la vita del soc...
Windows, gli aggiornamenti di aprile for...
Addio cavi perimetrali: il robot tosaerb...
Google Pixel 10 oggi proposto a soli 549...
I robot di Boston Dynamics possono inter...
Tech, gadget e accessori a meno di 5€ su...
Ford riorganizza la divisione elettrica:...
Elon Musk trasforma xAI in fornitore di ...
Pirateria musicale: batosta record per A...
iRobot riparte: nuova era con Picea, Roo...
Bitcoin: Killing Satoshi, film sul miste...
Haier Mini LED 4K da 65 pollici a soli 5...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:05.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v