2017-04-17 37 views
2

我想做一個java程序,我自己的格式解析到java文件。例如,當我寫與如何解析自己的語言到java文件

show("Hello World"); 

一個文件,這個文件保存爲hello。[my_own_extension]從我的程序和出口類似的東西閱讀,

class Hello { 
public static void main(String[] args) { 
    System.out.println("Hello World"); 
    } 
} 

我看了網上很多文章。但他們正在寫關於javacc,編譯技術,詞法分析等等。但唯一的事情,我想要做的就是
1.閱讀文件
2.測試文件是否匹配我的規則
3.寫(輸出)java文件和.class文件
我該怎麼辦這個?
我可以做到這一點通過以下方式,
1.使用java.io和java.nio的包(讀取或寫入文件)
2.寫我自己的邏輯,我的規則(可以是簡單的Java代碼)
我不是說,我正在創建一種新的編程語言,而我不是一個java大師。我只是想知道。

+0

您會像閱讀文本文件一樣閱讀文件。假設您將文件轉換爲.me2,那麼在讀取文件時您將使用「theNameOfYourFile.me2」。 – Sedrick

+2

這聽起來像你想建立某種解析器/編譯器。這可能是一個太寬泛的問題。 –

+0

@TimBiegeleisen我可以編寫我自己的程序來創建解析器而不使用任何工具,如javcc? –

回答

1

我可以編寫自己的程序來創建解析器而不使用任何工具(如javcc)嗎?

是的,你可以。事實上,在我的榮譽課程(近40年前)中,講師爲我們設定了一項任務,從頭開始爲Pascal實現遞歸下降解析器。 IIRC這是很多工作。

但是,如果您認真對待它,解析器生成器會爲您提供更好的解析器,從而減少很多工作量。

我上面提到的練習是關於編譯器構建的大約10周「榮譽」級課程的一部分。所以,不要設想你必須閱讀/學習從頭開始實施解析器,而不需要閱讀/學習使用javacc。


1 - 一臺電腦可以做,一個人...或人類的足夠大的團隊的任何任務......可以做的一樣好。這可能需要花費不切實際的時間,並花費不切實際的金錢,但這是可能的。在這個的情況下,這是一個現實的任務。這就是在發明first parser generators之前所有解析器的創建過程。事實上,即使在此之後,PGs也需要很長時間才能趕上。

+0

學習javacc或解析器生成器比從頭創建更合適嗎? –

+0

這取決於你的目標是... –