1

我正在學習語言的翻譯(通常是它的正式編譯)。我們研究如何做到能夠從一種語言翻譯到另一種語言(比如說Java到Python,但在我們的情況下,C到彙編)。我問了我的老師關於語言必須滿足的條件才能做翻譯。答案是沒有任何條件,我們可以從任何語言翻譯成另一種語言(例如Java - > XML)。將語言翻譯爲另一種語言

這真的有可能嗎?如果兩種語言中的一種不是圖靈完成語言,該怎麼辦?

+0

我認爲這種類型的概念問題最好在http://cs.stackexchange.com問問 – 2014-09-10 12:34:47

+0

@HighPerformanceMark不,這是理論計算機科學。 – Marcin 2014-09-10 17:29:20

+0

其中,我想這是反思。 – Marcin 2014-09-10 17:36:00

回答

0

理論上講,你可以將任何編程語言翻譯成任何其他編程語言。但是,您提供的示例並不成熟,因爲XML不是一種編程語言。您當然可以將Java翻譯成XML語法,但該語言不會有任何語義。如果你希望你可以定義然後用XML語法爲你的新Java類語言編寫一個字節碼編譯器。這不會是XML。它將是一種新的語言,其語法和Java的語義是XML的子集。在實踐中,如果你有一種真正的編程語言,你可以編譯任何語言,但是你可能會根據旋轉完整性沒有考慮到的東西而具有略微不同的屬性。例如,如果您將Haskell編譯爲python,那麼您可能在併發程序上運行時間很糟糕。在極端情況下,如果您將任何普通語言編譯爲lambda演算,則無法執行IO操作。

1

答案是沒有任何條件,我們可以從任何語言翻譯成另一種語言(例如Java - > XML)。

這是真的,您可以使用XML來表示任何具有樹結構的東西,並且java是隱式樹形結構。

但是,您可以在不正確的情況下構造語言對,例如,描述任意圖的語言不能被翻譯成只能描述樹的語言。但是,如果我們正在談論翻譯編程語言,那麼問題(正如您已經確定的那樣)是目標語言是否與源語言一樣強大。在哪裏(正常情況下)兩種語言都是完整的,這是給定的。但是,不能翻譯例如每個Java程序都用正則表達式。

相關問題