DotNet Irony Understanding

-1

Irony include due fasi. Nella prima fase crea un parser tree. Dopo di ciò è facoltativo creare un albero AST.

Quali sono le differenze tra l'albero di analisi e l'albero AST?

Qual è la ragione per implementarlo?

    
posta user3452883 20.12.2016 - 17:51
fonte

1 risposta

3

Parse Tree s a volte vengono anche chiamati Concrete Syntax Tree s per distinguerli da Abstract Syntax Tree s, che forse dice già tu di cosa si tratta.

In sostanza, un albero di analisi dipende ancora dalla reale sintassi del calcestruzzo utilizzata nel codice sorgente. Per esempio. se una lingua ha due modi per definire una funzione che è semanticamente equivalente, allora l'albero di analisi potrebbe ancora dirti quale dei modi è stato usato. L'albero di analisi potrebbe anche contenere ancora gli artefatti del parser specifico utilizzato, ad es. se il parser supporta la ricorsione a sinistra o no, ecc.

L'AST, OTOH, dovrebbe idealmente essere indipendente da qualsiasi sintassi concreta particolare che è stata usata nel codice sorgente e nel particolare parser che è stato usato. In teoria, un AST dovrebbe essere abbastanza astratto da poter anche servire da interfaccia tra il parser e il resto del sistema, in teoria IOW, dovrei essere in grado di scambiare un parser diverso che genera lo stesso AST senza il resto di il sistema se ne accorge. (In pratica, però, ciò è raramente possibile.)

    
risposta data 20.12.2016 - 18:04
fonte

Leggi altre domande sui tag