2013-05-16 84 views
1

如果您在Rebol的腳本,並說像print {Hello},你最終調用PRINT如何在系統環境以外的環境中啓動Rebol REPL?

>> bind? 'print 
== make object! [ 
    system: make object! [ 
     product: 'core 
     version: 2.101.0.2.5 
     build: 22-Jan-2013/2:44:29 
     platform: [ 
      Macintosh osx-x86 
     ] 
     license: {Copyright 2012 REB.... 

的系統版本比方說,我有一個劇本%repl-context.r,它定義的上下文,其中PRINT做別的事情。有沒有辦法讓REPL在這種情況下交互式地運行幾條連續的命令......?

回答

2

有一個常見的repl控制檯包裝來處理StdIn StdOut的I/O重定向。

我經常使用rlwrap從http://utopia.knoware.nl/~hlub/rlwrap/#rlwrap

它使用GNU的readline LIB

+0

接受,因爲這是唯一的答案可能在這個時候... ...還有幾點從來沒有傷害任何人,去看看[StackOverflow Rebol /紅色聊天](http://chat.stackoverflow.com/rooms/291/ rebol-and-red):-) – HostileFork

2

我不完全一定的目的,但你可以用管理循環顛覆與自己的輸入/輸出過程中的控制檯:

while [not find ["q" "quit"] command: ask "my-prompt> "][ 
    result: do bind load command 'my-context 
    if value? result [print ["==" mold result]] 
    () 
] 

我用這個方法我HTTP Console爲R2。

另一種可能性是挖掘系統/端口/輸入端口的工作。

+0

我是在實施[REPL爲Reblis(的角度來思考它https://trello.com/c/WiQ5lSXM )。你的想法在一個基本層面上工作,但並不一定會繼承標準Rebol控制檯的詭計,例如編輯多行輸入......或者處理Ctrl-C ......等等。 – HostileFork