Standart girişi (arabelleğe alınmadan) nasıl ayrıştırırım? Doğru şekilde anlarsam, phrase/2
bir listeye ihtiyaç duyar ve library(pure_input)
'dan phrase_from_file/2
bir dosyaya ihtiyaç duyar. Standart girişten ayrıştırma
get_char/2
ve
read_line_to_codes/2
gibi inşa eklentileri kullanarak benim sorun çözüldü, ama sonunda uygulama ben
Ve eğer C
yazılmış olurdu çözüme şüpheyle benzer Çok ilgili bir soruya gizlice girebilirim: SWI-Prolog'da standart girdi nedir?read_line_to_codes
(
library(readutil)
) bir giriş akışına ihtiyaç duyar (örneğin,
get/1
'dan farklı olarak). Aşağıdaki yüklemeyle olsun:
input_stream(Stream) :-
current_stream(Object, read, Stream),
integer(Object).
. . . tabii ki çalışıyor, ama biraz hırpalanmış hissediyor. Birden fazla açık giriş akışına sahip olmak mümkün mü? İşletim sisteminin standart girdisini (Linux benim durumumda) hangisi olduğunu nasıl anlarım?
Bu sayfayı yeterince okumuştum sanıyordum ... Bu gerçekten standart giriş sorusu yanıtlıyor. Hala standart girişi ayrıştırmak için DCG kullanıp kullanamayacağımı bilmiyorum. –
evet, yineleme, read_line_to_codes (user_input, L), ifade (your_grammar, L) gibi bir döngü kullanın. – CapelliC