2012-02-24 104 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