2010-05-30 17 views
5

क्या बीच का अंतर है:पायपरिंग: संयोजन() क्या करता है?

foo = TOKEN1 + TOKEN2 

और

foo = Combine(TOKEN1 + TOKEN2) 

धन्यवाद।

अद्यतन: मेरे प्रयोग के आधार पर, ऐसा लगता है Combine() टर्मिनल, जहां, जबकि सादा + गैर टर्मिनलों के लिए है एक अभिव्यक्ति पर मैच के लिए निर्माण करने के लिए कोशिश कर रहे हैं के लिए है। लेकिन मुझे यकीन नहीं।

  • यह एक एकल स्ट्रिंग

  • में सभी टोकन concatenates यह सब करने के लिए मिलान टोकन कोई हस्तक्षेप खाली स्थान के

साथ आसन्न हो की आवश्यकता है:

उत्तर

13

कम्बाइन 2 असर पड़ता है यदि आप

realnum = Word(nums) + "." + Word(nums) 
जैसी अभिव्यक्ति बनाते हैं

फिर realnum.parseString("3.14") 3 टोकन की एक सूची लौटाएगा: अग्रणी '3', '।', और पिछला '14'। लेकिन अगर आप लपेट इस में के रूप में, संयुक्त करें:

realnum = Combine(Word(nums) + "." + Word(nums)) 

तो realnum.parseString("3.14") वापस आ जाएगी '3.14' (आप तो एक नाव के लिए परिवर्तित कर सकते हैं जो एक पार्स कार्रवाई का उपयोग)। और चूंकि कम्बाइन टोकन के बीच पाइपर्सिंग के डिफ़ॉल्ट व्हाइटस्पेस को छोड़ देता है, इसलिए आपको "3.14" गलती से "जवाब 4" नहीं मिलेगा। 14 अगला जवाब है। "

+0

+1, एक सुंदर आधिकारिक उत्तर (सभी को यह नहीं पता कि पॉल 'पिपर्सिंग' का लेखक है, इसलिए मैं ज्यादातर इसे इंगित कर रहा हूं! -)। –

+0

धन्यवाद, एलेक्स। और @Rosarch, पाइपर्सिंग में आपका स्वागत है! आप जिन प्रश्नों को पोस्ट कर रहे हैं वे पहली बार पाइपर्सिंग उपयोगकर्ताओं के लिए बहुत आम हैं, इसलिए प्लगिंग को दूर रखें। मैंने ऑनलाइन विकी और दस्तावेज़ों में से कुछ बिंदुओं को कवर करने का प्रयास किया है, लेकिन मैं देख सकता हूं कि अभी भी जाने के तरीके हैं! – PaulMcG

+0

हाँ, मुझे पूरी तरह से पता है कि पॉल पाइपर्सिंग का लेखक है। यह बहुत अच्छा है कि आप मार्गदर्शन के साथ मेरे जैसे नोब प्रदान करने के लिए SO पर हैं। –

संबंधित मुद्दे