21/08/09 9:29
TheKaneB
Serve per scrivere dei parser, i quali a loro volta servono per creare compilatori ed interpreti.
Un parser deve riconoscere un testo scritto in un certo linguaggio e crearne l'albero sintattico. Se il linguaggio da riconoscere è espresso per mezzo di una grammatica CF, allora le produzioni di quella grammatica saranno a loro volta dei linguaggi CF o regolari e qui entrano in gioco gli algoritmi per trasformare un'espressione regolare in automa a stati finiti.
L'automa a stati finiti che viene generato sarà quello che effettivamente svolgerà il lavoro di riconoscimento di quella espressione regolare, che unito a tutti gli altri automi, uno per ogni produzione della grammatica, comporrà i vari pezzi del parser.
Una volta ottenuto un parser poi lo si può associare ad una virtual machine (ad esempio come motore di scripting di un videogioco), un code generator (come ad esempio un interprete con Jit Compilation, o un classico compilatore), un motore di rendering (ad esempio un parser per l'HTML può essere associato ad un sistema di rendering grafico per produre pagine web, come WebKit, Gecko e Trident per capirci) e tante altre cose...
Spero di aver soddisfatto la tua curiosità e allo stesso tempo di averti dato spunto per approfondire la questione!
aaa