6
어떻게 표준 입력을 버퍼링하지 않고 파싱합니까? 올바르게 이해하면 phrase/2
에 목록이 필요하고 phrase_from_file/2
에서 library(pure_input)
까지 파일이 필요합니다. 표준 입력에서 파싱하기
get_char/2
및
read_line_to_codes/2
같은 내장 기능을 사용하여 내 문제를 해결하지만, 마지막에 구현 내가
그리고 만약 C.
로 작성했을 솔루션에 대한 의심과 유사 SWI-Prolog의 표준 입력은 무엇입니까?read_line_to_codes
(
library(readutil)
)에는 입력 스트림이 필요합니다 (예 :
get/1
과는 다른). 나는 다음과 같은 술어로 얻는다 :
input_stream(Stream) :-
current_stream(Object, read, Stream),
integer(Object).
. . . 물론 작동하지만 약간 해킹 된 것으로 느껴집니다. 하나 이상의 입력 스트림을 열 수 있습니까? 어떤 것이 운영체제의 표준 입력인지 어떻게 알 수 있습니까 (필자의 경우 Linux)?
나는이 페이지를주의 깊게 충분히 읽었다 고 생각했다 ... 이것은 내 표준 입력 질문에 실제로 대답한다. 표준 입력을 구문 분석하기 위해 DCG를 사용할 수 있는지 여부는 아직 알 수 없습니다. –
예,'repeat, read_line_to_codes (user_input, L), phrase (your_grammar, L) '과 같은 루프를 사용하십시오. – CapelliC