2011-04-24 6 views
5
grammar = Literal("from") + Literal(":") + Word(alphas) 

व्याकरण को from : mary को अस्वीकार करने की आवश्यकता है और केवल from:mary यानी बिना किसी अंतःस्थापित स्थान के स्वीकार करें। मैं इसे पाइपर्सिंग में कैसे लागू कर सकता हूं? धन्यवादपाइपरिंग में अक्षर के बीच रिक्त स्थान को कैसे अस्वीकार करें?

उत्तर

3

क्या आप Combine का उपयोग कर सकते हैं?

grammar = Combine(Literal("from") + Literal(":") + Word(alphas)) 

तो फिर: अपनी टिप्पणी के जवाब में

संपादित

वास्तव में?

>>> grammar = pyparsing.Combine(Literal("from") + Literal(":") + Word(pyparsing.alphas)) 
>>> grammar.parseString('from : mary') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/pymodules/python2.6/pyparsing.py", line 1076, in parseString 
    raise exc 
pyparsing.ParseException: Expected ":" (at char 4), (line:1, col:5) 
>>> grammar.parseString('from:mary') 
(['from:mary'], {}) 
+0

'संयोजन' 'mary' के लिए 'ParseException' नहीं फेंकता है। मैं त्रुटि फेंकना चाहता हूँ। –

+0

यह काम करता है। मैं अपवाद फंस रहा था। –

+2

इसके अलावा, विशिष्ट अभिव्यक्तियों के लिए व्हाइटस्पेस-स्किपिंग को दबाने के लिए 'leaveWhitespace' विधि' पर पढ़ें। इस विधि को किसी भी अभिव्यक्ति पर कॉल करें जो रिक्त स्थान छोड़े बिना मेल खाना चाहिए, आपके मामले में ':' और नाम वाला शब्द। – PaulMcG

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