PHP  »  Articoli  »  Programmazione Php 

Espressioni matematiche in PHP: la teoria

di: Gabriele Farina     12 Giugno 2008

Esecuzione

La fase di esecuzione è probabilmente la più semplice: abbiamo un AST che sappiamo rappresentare un'espressione sicuramente valida (dato che è stata validata nella fase di Parsing) e quello che ci resta fare è fornire un contesto di esecuzione e navigare ricorsivamente i nodi per estrarne il valore. In base al tipo di nodo il valore restituito sarà diverso. Fornire un contesto di esecuzione significa definire il valore delle variabili e delle funzioni in modo che tutti gli identificatori registrati nella SymbolTable abbiano un valore valido.

Prendiamo per esempio l'AST generato nell'esempio precedente e cerchiamo di eseguirlo nel contesto in cui la variabile a vale 10 e l'identificatore sin sia mappato alla omonima funzione per il calcolo del seno di un angolo. L'esecuzione ricorsiva valuta prima i figli dei nodi, e quando ha finito la valutazione di questi torna ai padri fino a raggiungere la cima. I nodi in grassetto sono quelli valutati nello step successivo

(call sin (multiplication (identifier a) (sum (neg (number 5)) (number 15.6))))
(call sin (multiplication (identifier a) (sum (neg (number 5)) 15.6)))
(call sin (multiplication (identifier a) (sum (neg 5) 15.6)))
(call sin (multiplication (identifier a) (sum -5 15.6)))
(call sin (multiplication (identifier a) 10.6))
(call sin (multiplication 5 10.6))
(call sin 53)

= 0.39592515018183422

Il risultato è facilmente raggiunto e probabilmente matematicamente corretto nel contesto fornito. Dato un AST avremmo anche potuto per esempio semplificare tutte le espressioni costanti e riscrivere la stessa espressione in modo più compatto.

Nel prossimo articolo vedremo come implementare la libreria ed analizzeremo il codice per comprendere come passare dalla teoria alla pratica.

Guide PHP

Guida Yii Framework

Come creare applicazioni Web in modo semplice e veloce con il...

Guida Zend Framework

Diventate professionisti dello sviluppo Web. Zend Framework è lo...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso PHP per Webmaster

11 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti