2010-12-22 19 views
0

我想知道,在自己的平臺中可以使用C#語言語法嗎?我知道C#是ECMA標準化的語言。那麼如何實施呢?如何實現C#語法以使用自己的平臺? ECMA標準

我知道有一些例子,如Mono & Unity3D誰實施C#。例如:一個普通的類庫(自己用C寫成)& C#作爲一種編程語言。

問題是,我從來沒有這樣做過,所以我很感興趣,我應該怎麼讀&從哪裏開始。任何其他關於實現語法的文章都會很好。

+5

編寫你自己的解析器,編譯器和框架不是在公園散步,只是問這讓我覺得這有點超出你,你最好用現有的解決方案。但是有一些編譯器和解析器生成器可以讓你像YACC和Coco/R一樣開始。 – Lloyd 2010-12-22 12:24:12

+1

讓你的'平臺'執行IL,而不是C#。現在你不關心編譯器,任何資格都可以。 – 2010-12-22 14:24:23

回答

0

恕我直言,有一個非常少數情況下,當你需要編寫您的解析器/編譯器等

我會做它用不同的方式。

第一種選擇是從您的C應用程序運行.Net。你可以使用Mono作爲例子。這裏是一個描述:http://www.mono-project.com/Embedding_Mono

第二種選擇是直接從C#應用程序使用你的c類庫。例如,檢查http://www.pinvoke.net/如何聲明它們。

3

如果你想爲C#編寫一個編譯器,那麼開始的地方是Dragon Book,以及C# 4 spec的副本。儘管這是一項可怕的工作,而不是因爲內心的淡薄。你通常需要多年的經驗才能編寫一個像C#那樣複雜的編譯器。

我建議從一個更小的語言開始,也許像brainfuck這樣的微不足道的語言,或者看看現有的玩具編譯器。

+0

+1表達式解析器,可以逐步擴展以支持變量,函數,不同數據類型,IL生成等,也是一種開始使用詞法分析器,解析器,抽象語法樹,語義綁定和其他一切。 – Lucero 2010-12-22 12:32:21

0

一個明顯的選擇是重新調整單聲道AOT。例如,這就是MonoTouch的工作原理。

硬路徑是實現你自己的C#解析器,編譯器和它的大部分標準庫。

相關問題