2012-03-05 33 views

Odpowiedz

3

Reguły "Drzewo składni abstrakcyjnej" (jest to dziwna terminologia) mogą być interpretowane jako reguły, które kształtują konstrukcję składni abstrakcyjnej jako przetwarzanie. Są to zwykle napisane w reguły gramatyki dla nieterminalowi T, jako konstruktorów ponad drzewo składniowe produkowanych przez parsowania zwrotów pomocnicze T. Jeśli

T = '(' A ';' B ')' ; 

jest regułą gramatyki, konstruktora AST dla T może być

T(A,B) 

co oznacza budowę węzła T z dziećmi będącymi AST zbudowanymi dla A i B usterek.

Reguły semantyczne to ograniczenia, które program musi spełniać jako legalne, poza samą składnią. Można więc zbudować abstrakcyjne drzewo składniowe (z "reguł"); robi to tylko pokazuje, że program jest poprawny pod względem składniowym. Ale składnia streszczenie może powiedzieć rzeczy, które są po prostu bezsensowne semantycznie np

"declare s as function; ... s=7; ..." 

Jedynym sposobem, aby sprawdzić to w ogóle jest chodzić na drzewo składniowe, zbierając fakty lokalnie (na przykład „s jest funkcją "jest faktem wyodrębnionym z deklaracji deklaracji," s ma przypisaną liczbę całkowitą "jest pobierana z przypisania) i propaguje te fakty, dopóki nie spotkają się i okaże się, że są (nie) kompatybilne.

0

Aby odpowiedzieć na twoje drugie pytanie, oto artykuł, który łączy pojęcia gramatyki i drzewa składni oraz analizuje niektóre algorytmy analizowania.

http://www.cs.purdue.edu/homes/xyzhang/spring11/notes/ast.pdf

Z artykułu:

The resulting grammar is called the concrete grammar. 
The corresponding derivation tree is called the parse tree. 

beton drzewo składni lub parse drzewo jest drzewem, który reprezentuje struktury składniowej łańcucha według niektórych formalnej gramatyki.

Tu jest link do przykładowego pozyskiwania drzewa parsowania z gramatyki:

http://www.cs.rochester.edu/~nelson/courses/csc_173/grammars/parsetrees.html

który podkreśla również problem radzenia sobie z gramatyk niejednoznacznych.

Powiązane problemy