如何在Roslyn解释器中确定代码完整性

时间:2018-07-16 00:42:55

标签: c# roslyn

我正在基于Roslyn for C#构建口译员。假定解释器显示一个终端,评估代码用户输入,并显示结果。就像“ python”解释器一样。

当用户按下Enter键以使用this方法评估表达式(或代码段)时,我可以从终端读取输入并传递当前行的内容。它适用于简单的情况,例如

Console.WriteLine(“Hello World”!)

甚至是类似的东西

if (true) Console.WriteLine(“Yes!”);

但是,在第二种情况下,用户不能在“ if”语句后按Enter键。他们必须在一行中完成整个块,然后按Enter。这是因为我的代码很笨,当按下Enter键时,它将发送当前行中的所有内容以进行评估。显然,“ if(true)”不是完整的表达式。

我认为我应该缓冲用户输入的内容,并在用户完成输入代码块后将其发送以进行评估。我的问题是,如何使代码确定代码块何时完成?例如,当用户输入“ if xxx:”或“ For xxx:”时,Python解释器会将其提示从“ >>>”更改为“ ...”。

0 个答案:

没有答案