Le regole "Abstract Syntax Tree" (questa terminologia è strana) potrebbero essere interpretate come quelle regole che modellano la costruzione della sintassi astratta durante l'analisi. Questi sono di solito scritti, in una regola grammaticale per una T non terminale, come i costruttori oltre albero sintattico astratto prodotte analizzando le frasi controllate di T. Se
T = '(' A ';' B ')' ;
è una regola grammaticale, un costruttore di AST per T potrebbe essere
T(A,B)
che implica la costruzione di un nodo T con figli essendo gli AST costruiti per le sottounità A e B.
Le regole semantiche sono vincoli che il programma deve soddisfare per essere legale, oltre la semplice sintassi. Quindi si può costruire un albero sintattico astratto (da "regole"); così facendo dimostra solo che il programma è sintatticamente corretto. Ma la sintassi astratta può dire le cose che sono semplicemente senza senso semantico, per esempio,
"declare s as function; ... s=7; ..."
L'unico modo per controllare questo, in generale, è quello di camminare sopra l'albero di sintassi astratta, la raccolta di dati a livello locale (ad esempio, "s è una funzione "è un fatto estratto dall'istruzione dichiarare;" s è assegnato un intero "viene raccolto dall'assegnazione) e la propagazione di tali fatti fino a quando non si incontrano e si mostra che sono (in) compatibili.
fonte
2012-03-06 01:20:31