2011-11-05 117 views
8

首先,我需要一種編程語言來在代碼和我的應用程序環境之間進行交互,這就是我的目標。我寫了一些類似Interpreters的東西,它們只知道ifvoidfunction,變量及其範圍,當然還會調用內置函數,這些函數都可以完美工作。但是我現在停留在某些部分,並意識到我無法繼續進行簡單的文本解析,並且有許多事情我不能做。用C#創建編程語言

因此,對於這一點,我搜索關於這個話題,我Creating programming language using C#。這很好,但我有兩個問題。

  1. 我無法理解這一點。
  2. 它生成控制檯代碼,但我想在winapps中使用它們。

對於短,是否有任何人知道我怎樣才能使我自己的語言沒有通過的課程像詞法分析,思考......

感謝。

+8

「_For總之,就是有誰知道我怎麼才能做出自己的語言,而不需要通過詞法,反思等課程......「......嗯,不。您需要了解如何創建自己真正獨特的語言的基礎知識。你需要做什麼?請記住,我們有DLR,允許您將腳本語言嵌入到應用程序中,這對您而言是否足夠? – driis

+5

這是一個學習任務嗎?或者你是否真的想**做點什麼。如果是後者,你可以在c#中使用很多腳本語言 - 「鐵桿」(鐵蟒,鐵紅寶石等),boo,f#,JavaScript引擎;大概lua,等等...... –

+0

這不是學習任務,我需要這個爲我的引擎!我做了一個很好的2D級別編輯器,我想用代碼與它進行交互。 DLR?嗯,我想我看到它,但從來不知道它的名字。哦! DLR我忘了那是什麼,是的,但我從未試圖嵌入。我應該嘗試一下。 – MahanGM

回答

2

創建自己的語言是可能的,但非常具有挑戰性。沒有像詞法分析器這樣的事情,你做得不好。

創建你自己的語言也迫使你的客戶,瞭解另一種語言,就沒有現存的第三方代碼或庫這個假定的語言。

另一種方法是嵌入現有的語言並通過使您的應用程序的功能。 Python是嵌入的一個非常普遍的選擇,但還有很多其他選項。我強烈建議,爲了這個任務,你考慮嵌入一種現有的語言,而不是發明自己的語言。

+0

這是爲什麼downvoted?對, –

+0

是的,沒錯。感謝您的回覆。 – MahanGM

4

我不確定我是否真的瞭解你的問題。

這是否是您的程序的擴展?用C#編寫的庫函數集合?

或者一個完全獨立的語言,你正在寫在C#中的解釋? (這是我猜的)

如果是後者,在過去的好時光,我會指出你在萊克斯/ Yacc的(GIYF)。

現在,我只能說ANTLR。退房Five minute introduction to ANTLR 3ANTLR v3 C# Code generator and Runtime library

只是檢查出IDE的屏幕截圖此頁面

enter image description here

enter image description here

+0

謝謝。看起來真好!我現在就試一試。 – MahanGM