2013-05-16 2 views
1

, 당신은이 전 스크립트 %repl-context.r을했고 그것이 PRINT는 다른 뭔가를 한 컨텍스트를 정의한다고 가정 해 봅시다 Rebol REPL을 시스템 컨텍스트 외에 컨텍스트에서 시작하는 방법은 무엇입니까? 당신이 REBOL에서 스크립트를 실행하고 <code>print {Hello}</code> 같은 것을 말한다면

>> 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.... 

PRINT

의 시스템 버전을 호출 결국. 몇 가지 연속적인 명령을 위해 REPL에게 해당 컨텍스트 내에서 대화식으로 실행하도록 요청하는 방법이 있습니까?

답변

2

StdIn StdOut에 대한 I/O 리디렉션을 처리 할 수있는 일반적인 repl console 래퍼가 있습니다.

가 나는 종종 그것은 GNU의 readline에 lib 디렉토리를 사용 http://utopia.knoware.nl/~hlub/rlwrap/#rlwrap

에서 rlwrap를 사용

+0

이것으로 받아 들일 수있는 유일한 해결책은 현재로서는 가능합니다 ... 그리고 몇 가지 포인트는 결코 누구에게도 해가되지 않습니다. [StackOverflow Rebol/Red chat] (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]] 
    () 
] 

내가 R2 내 HTTP Console으로이 방법을 사용합니다.

또 다른 가능성은 시스템/포트/입력 포트의 작동을 파헤치는 것입니다.

+0

나는 [Reblis에 대한 REPL (구현의 관점에서 생각하고 있었는데 https://trello.com/c/WiQ5lSXM). 당신의 아이디어는 기본 레벨에서 작동하지만 반드시 다중 라인 입력 편집이나 Ctrl-C 처리와 같은 표준 Rebol 콘솔의 속임수를 계승하지는 않습니다. – HostileFork