2011-09-03 61 views
0

我需要編寫一個簡單的解析器,將令牌轉換爲解析器樹。 我已經寫了返回令牌的LexicalAnalyzer。現在,我想要 爲「if and while」語句(開始時)編寫規則,因此我可以將此規則傳遞給解析器並創建樹。 所以我需要以這種方式編寫解析器,所以我可以編寫新的規則。如何爲if和while語句編寫簡單的解析器?

你能告訴我如何在C#中實現它嗎?你能舉個例子嗎?

+0

我讀了所有類型的假,但不知道如何開始實現這一點。我看到像a:b |的定義c,c:終端。如果我正確地理解了這一點,這意味着規則,但是如何實現或者我錯誤的方式 – theateist

回答

4

在遞歸下降解析器中,如果您具有常規的塊和表達式解析器,則很容易實現這些語句。在僞代碼,他們基本上是:

void ParseIf() 
{ 
    Match("if"); 
    Match("("); 
    ParseExpression(); 
    Match(")"); 
    ParseBlock(); 
} 

void ParseWhile() 
{ 
    Parse("while"); 
    Parse("("); 
    ParseExpression(); 
    Parse(")"); 
    ParseBlock(); 
} 
+0

你能指定什麼Match,MatchExpression,Parse,ParseBlock是什麼意思? – theateist

+0

'Match'基本上讀取你給它的令牌並忽略它,這是爲了確保它在那裏。另兩個分別解析表達式和塊。 – Blindy