2012-12-19 29 views
6

मैं मानक इनपुट (बफरिंग के बिना) का विश्लेषण कैसे करूं? अगर मैं सही ढंग से समझता हूं, phrase/2 को एक सूची की आवश्यकता है, और library(pure_input) से फ़ाइल की आवश्यकता है।मानक इनपुट से पार्सिंग

मैं सामान्य विधेय (नहीं DCG) का उपयोग कर और get_char/2 और read_line_to_codes/2 की तरह बनाया गया-इन का उपयोग कर मेरी समस्या हल, लेकिन अंत में कार्यान्वयन संदेह से समाधान मैं सी

में

और अगर लिखा है | के समान दिखता है मैं एक बहुत अधिक संबंधित प्रश्न छीन सकता हूं: एसडब्ल्यूआई-प्रोलॉग में मानक इनपुट क्या है? read_line_to_codes (library(readutil)) को एक इनपुट स्ट्रीम की आवश्यकता है (उदाहरण के लिए get/1 के विपरीत)। मैं निम्नलिखित विधेय के साथ इसे पाने:

input_stream(Stream) :- 
    current_stream(Object, read, Stream), 
    integer(Object). 

। । । जो निश्चित रूप से काम करता है, लेकिन थोड़ा हैक महसूस करता है। क्या एक से अधिक खुली इनपुट स्ट्रीम हो सकती है? मुझे कैसे पता चलेगा कि ऑपरेटिंग सिस्टम का मानक इनपुट कौन सा है (मेरे मामले में लिनक्स)?

उत्तर

2

मुझे लगता है कि आप धाराओं के उचित नामकरण की तलाश में हैं। यहां एक नमूना उपयोगी हो सकता है कि:

?- read_line_to_codes(user_input,L). 
|: a line 
L = [97, 32, 108, 105, 110, 101]. 

सबसे विस्तृत विवरण पेज मैंने पाया here है।

+0

मैंने सोचा कि मैंने इस पृष्ठ को सावधानीपूर्वक पर्याप्त पढ़ा है ... यह वास्तव में मेरे मानक इनपुट प्रश्न का उत्तर देता है। अभी भी नहीं पता कि मैं मानक इनपुट पार्सिंग के लिए डीसीजी का उपयोग कर सकता हूं या नहीं। –

+1

हां, 'दोहराना, read_line_to_codes (user_input, एल), वाक्यांश (your_grammar, एल) जैसे लूप का उपयोग करें। – CapelliC