2010-10-24 49 views
0

如何生成規則以將1種形式的語法翻譯成另一種?編譯器中的文法

例如:

語法1:

BLOCK: while (id:=N) { BLOCK } | id:=N 
N: 1 | 2 | 3 | 4 | 5 

語法2:

BLOCK: while id:=N DO BLOCK END | id:=N 
N: 1 | 2 | 3 | 4 | 5 

我想2生成一個翻譯,這樣我可以在語法2翻譯一個語句轉換成相應的在語法1中的語句...

+0

給我們一些關於語法樹以及如何創建它的更多細節? – 2010-10-24 15:14:50

+0

基本上你想建立一個完整的語言翻譯器。即使你擁有兩個文法,這也不是一件容易的事。如果沒有別的,你必須處理*語義*差異。 – 2013-01-14 18:52:01

回答

1

嗯,創建一個解析器,將句子fr om語法1轉換成語法樹,然後將語法樹轉換回語法2中的語句?

+0

創建了語法樹。但如何使它「轉換」成語法2中的一個句子? – letsc 2010-10-24 14:30:03

+0

如果兩個語法是等價的,那麼您只需遍歷樹,並隨時生成字符串。 – 2010-10-24 14:34:58

+0

嗯thanx。 :)但不能我們寫一些翻譯規則?如果你爲我編寫一些示例規則,這將有所幫助。 – letsc 2010-10-24 14:38:44