2012-08-08 233 views
1

可能重複:
Implementing a scripting language in C#C#自定義腳本語言

我有一個C#應用程序,現在我希望允許用戶調用從我的應用程序的一些方法,例如:

:step2 
$test2=Click("post") 
Wait() 
IF($test2==1){ 
    runjs("mceRemoveControl") 
    Form("post") 
    $test3=Input("post_title","$TITLE") 
    IF($test3==0){ 
     GOTO(step2) 
    } 
} 

這是我想在我的應用程序中解析的自定義語言。方法Click,runjjs,Input是我C#程序中的方法。我應該在哪裏尋找這樣的任務的解決方案?

+5

這是一個相當廣泛的問題。你能把它縮小到更具體的東西嗎? – Nathan 2012-08-08 20:14:48

+0

也許你應該看看WCF(Web Services) – 2012-08-08 20:17:47

+5

@ChrisGessler:然後他/她有兩個問題。 – leppie 2012-08-08 20:21:07

回答

4

的方法有很多..只是個開始:

如果你想堅持與時髦的語法,與http://www.antlr.org/或類似的解析器發電機或框架開始。如果你只是想要合理的腳本語言,但不一定是這個例子,試試IronRuby,IronPython甚至是JavaScript或C#(命名空間CompilerServices允許你在運行時編譯代碼,然後加載它(可能在單獨的appdomain能夠事後卸載)並運行)..

編輯:有很多的鏈接解析器/ compilercompilers另一個線程:What is a good C# compiler-compiler/parser generator?

2

我發現這本書Compiler Construction從尼克勞斯·維爾特成爲這種類型的有用任務。因爲我們正在討論在這裏創建一個編譯器。它是一本解釋形式語言基本方面的小書,解釋了語法描述語言EBNF並系統地解釋瞭如何編寫編譯器。即使你只是一個口譯員。解釋器可以被認爲是一種特殊的編譯器。

請注意,這不是一件容易的事。你也可以考慮使用compiler-compilerIrony提供了一個有趣的替代方法。 Irony允許您使用運算符重載直接在C#中指定語言語法。