PDA

Visualizza la versione completa : [c++]automi


giuseppe500
07-05-2010, 11:51
ciao.
Ho la necessitÓ di riconoscere sequenze di caratteri in un file di testo.
Per quanto riguarda le mie conoscenze userei un automa a stati finiti.
Il mio problema Ŕ che vorrei creare una sorta di semplice linguaggio tipo regular expression con cui impostare runtime delle caratteristiche e dei match.
Mi spiego meglio:
Una parola in c++ Ŕ un insieme di occorrenze di caratteri separate con un inizio spazio e una fine spazio(semplificando).
Un operatore puo' essere ad es : + - * ecc...

In pratica vorrei da prima riconoscere le parole separate dai vari token , spazi o ; di caratteri e un livello di astrazione piu su devo riconocere un parola seguita da una altra parola come creazione di oggetto, quindi la prima parola diviene un tipo e la seconda un oggetto e riconosco un instanza.
poi ad es un istanza seguita da una parola... ecc...

In pratica scorro il sorgente carattere per carattere e vado a riconoscere gli stati.
e ho una gerarchia di livelli di stati caratteri/parole/istanze ecc...
vorrei creare un semplice linguaggio che mi permetta di definire:
Parola + Parola = X1(instanza oggetto)
X1+ "= " + parola = assegnazione ecc...

Non voglio reinventare la ruota e vorrei sapere se c'Ŕ qualche libreria che fa quello che ho detto.
ad es cercando su google ho visto che le regular expression si basano su automi.
Ho fatto l'esempio del file di testo , ma vorrei applicare la stessa cosa ad un comportamento di una semplice AI in un gioco in cui vorrei andare a definire dei comportamenti come successione di stati frutto di una espressione(stringa) che posso definire prima dell esecuzione del programma per un dato oggetto.

shodan
07-05-2010, 13:34
Non l'ho mai usata, ma forse Boost::spirit fa al caso tuo.

giuseppe500
07-05-2010, 16:14
si , Ŕ quello che cerco.
E' possibile scaricare i sorgenti ?,e una cosa che non sono mai riuscito a capire:
E' possibile installare ad es solo spirit senza instrallare tutto Boost?
Grazie

giuseppe500
07-05-2010, 16:26
scusate ho chiesto per pigrizia.
Mia culpa
chiedo venia.

Loading