2012-03-05 116 views
5

首先,語義規則和抽象語法樹規則是相同的嗎?語義規則/抽象句法樹規則

現在,如果我有一個語言規範,並且我有CFG,那麼我該如何去構建抽象語法樹規則。 任何來源是讚賞。謝謝。

回答

3

「抽象語法樹」規則(這是奇怪的術語)可能會被解釋爲在解析過程中形成抽象語法的結構的那些規則。這些通常被寫,在非終結噸語法規則,如在通過解析T的子公司短語如果

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

產生抽象語法樹的構造是一個語法規則,對於T的AST構造可能是

T(A,B) 

意味着構建一個T節點,其子節點是爲A和B子分析構建的AST。

語義規則是程序必須符合的約束條件,超越單純的語法。所以可以構造一個抽象語法樹(來自「規則」);這樣做只會證明程序在語法上是正確的。但是,抽象語法可以說的事情,只是無意義的語義,例如,

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

一般要檢查這個問題的唯一辦法就是走在抽象語法樹,在當地收集的事實(例如,「s是一個功能「是從聲明語句中提取出來的一個事實;」分配一個整數「是從作業中收集的)並傳播這些事實,直到它們相遇並顯示爲(不)相容。

0

要回答第二個問題,下面是一篇將語法和語法樹的概念聯繫在一起的文章,並檢查了一些解析算法。

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

從文章:

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

具體語法樹解析樹是表示根據一些形式文法的一個字符串的語法結構的樹。

這裏是從語法解析樹的例子推導的鏈接:

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

這也凸顯了處理模棱兩可的語法問題。