1
我正在嘗試爲REPL製作一個.NET包裝器(具體來說,Scheme,但我沒有注意它的重要性)。我尋找某種期待式庫,但我找不到一個庫,所以我一直在使用System.Diagnostics.Process。我認爲我沒有成功地閱讀和寫作。如何使用.NET打包REPL?
這是我的代碼;它在IronPython的,但我不得不在C#中類似的結果:
from System.Diagnostics import *
def get_process(cmd):
psi = ProcessStartInfo()
psi.RedirectStandardOutput = True
psi.RedirectStandardInput = True
psi.RedirectStandardError = True
psi.UseShellExecute = False
psi.FileName = cmd
prc = Process()
prc.StartInfo = psi
return prc
def read_to_prompt(prc):
output = ""
while prc.StandardOutput.Peek() > 0:
output += chr(prc.StandardOutput.Read())
return output
prc = get_process("racket.exe")
prc.Start()
print read_to_prompt(prc)
prc.StandardInput.WriteLine("(+ 3 15)\n")
prc.StandardInput.Flush()
print read_to_prompt(prc)
prc.Kill()
,這裏是輸出:
Welcome to Racket v5.0.1
C:\home>
我希望它最終讓我閱讀提示(像「> 「),並且我輸入的表達式的結果(」(+ 3 15)「應該返回」18「)。