2011-09-12 69 views
4

我正在尋找C#v4的BNF語法,我可以饋送給fsyacc或者如果我找不到可以輸出F#的基於EBNF的分析器生成器。C#語法在BNF或EBNF F#的分析器發生器#

編輯: 我不希望編寫C#的一個非常類似的語法解析器,但實驗解析器和因爲有兩個語法我發現很容易開始與C#語法之間存在巨大的文字重疊並簡單地改變偏離的位。然而,對於C#V4我發現的唯一語法是EBNF

的備選答案是從EBNF一個轉換器,以BNF

+3

我不認爲你會發現任何堅實的東西。我能想到的最佳選擇是使用Mono中C#編譯器的解析器。您應該能夠編譯並使用來自F#的代碼(或者將其修改爲更適合F#的代碼)。 –

+1

@Tomas:謝謝你指出。猜猜我會重寫EBNF語法並使用fsyacc。我需要能夠改變語法。我不是在編寫C#編譯器,而是編寫非常類似語法的實驗性編譯器。 –

+0

@TomasPetricek如果你寫這個答案,我會獎勵你的答案。我最終擴展了單聲道C#編譯器。工作量比我想象的要少很多 –

回答

1

延長我以前的評論 - 我不認爲有一個爲C#的任何固體語法,可以直接使用。有一些例子,但它們可能不會涵蓋所有新功能(比如LINQ)或者不會很好地測試。

我能想到的最佳選擇是使用Mono中C#編譯器的解析器。這是用C#編寫的,開源的,包含了所有最新的功能(並且也相當穩固)。有關更多信息,請參閱Mono C# compiler。您應該能夠編譯並使用來自F#的代碼(或者將其修改爲更適合F#的代碼)。

1

Wikipedia,可可/ R是一種基於EBNF解析器發電機。根據他們的homepage,有一個Coco/R的F#端口(最後更新2007-07-23,但是,所以我希望有一些重大更改)。如果你最終檢查出來,我會對你的經歷感興趣。

我沒有找到一個BNF語法爲C#V2:http://www.devincook.com/GOLDParser/grammars/index.htm

+1

+1;現在,C#v2語法已轉移到http://goldparser.org/grammars/ –

1

我發現了一些語法here;他們似乎包含C#4.0。