2012-02-24 106 views
1

我的計劃是在C#Windows窗體應用程序。C#「scanf的」使用自定義控制檯

我有一個解釋器/編譯器IDE W/C基本上貫穿定製控制檯窗口自定義語言。

當解釋輸入線,如「scanf函數」,怎麼辦暫停口譯,而用戶沒有按回車鍵?

樣品自定義代碼解析:

1  VAR x AS INT 
2  START 
3  INPUT: x 
4  OUTPUT: x 
5  STOP 

例如,在這些線路,當我的程序處理線3條,它不處理其他線路直至用戶輸入的東西,並按下回車。

僞片段由行解析線:

foreach (string line in inputCode) 
{ 
    LineType lineType = line.getType(); 

    if(lineType.InputStatement) 
    { 
    //wait for input here 
    } 
    else if(lineType.OutputStatement) 
    { 
    //analyze output code here 
    } 
    else if(lineType.AssignmentStatement) 
    { 
    //do Evaluation here 
    } 
} 

回答

1

你應該讓每個方法引發一個事件來觸發下一行。
INPUT方法應該火機輸入用戶後該事件。

+1

能否請您闡述? – helix 2012-02-24 15:14:11

+0

基本上,將您的程序代碼轉換爲異步。您可以使用C#5異步或使用迭代器更簡單 – SLaks 2012-02-24 15:43:58

+0

我正在使用Microsoft V.S. 2010 Express與C#3.0。它不支持異步... – helix 2012-02-25 05:18:20

1

Console.ReadlineConsole.ReadKey將允許您從控制檯呈三角scanf函數讀取輸入。

+0

我沒有使用控制檯應用程序。我正在使用Form作爲定製控制檯。 – helix 2012-02-24 14:30:27

+0

您是否開發了定製控制檯?它坐在另一個控制的頂部嗎? – rerun 2012-02-24 14:32:21

+0

控制檯基本上是一個帶有文本框的窗體。它由一個MDI表格觸發。 – helix 2012-02-24 14:37:34