2013-10-18 6 views
7

निम्नलिखित पैटर्न (this page से) संतुलित कोष्ठकों के साथ ही तार से मेल खाता है समझने के लिए की आवश्यकता है:LPeg और खूंटे

b = lpeg.P{ "(" * ((1 - lpeg.S"()") + lpeg.V(1))^0 * ")" } 

1 - lpeg.S"()" में 1- क्या मतलब है?

function gsub (s, patt, repl) 
    patt = lpeg.P(patt) 
    patt = lpeg.Cs((patt/repl + 1)^0) 
    return lpeg.match(patt, s) 
end 

patt/repl + 1 में +1 क्या मतलब है?

और मैं अभी भी नहीं काफी प्राथमिकता के आधार पर चुनाव ऑपरेटर / का कार्य बहुत अच्छी तरह से इस paper

किसी भी मदद की सराहना की होगी से मिलता है!

उत्तर

4

11 - lpeg.S"()" में कोई वर्ण है। सेट "()" में किसी चरित्र से मेल नहीं खाते हुए, पूरे कथन को किसी भी चरित्र से मेल नहीं किया जा सकता है।

+1, एक ही विचार है अगर repl एक स्ट्रिंग तो patt/repl + 1 पैटर्न patt से मेल खाता है और फिर इसे स्ट्रिंग repl साथ कब्जा है या एक चरित्र को छोड़ देता है बदल देता है।

+1

आम तौर पर, जब भी एलपीईजी एक तर्क के रूप में पैटर्न को स्वीकार कर सकता है, तो यह एक सादा संख्या (या स्ट्रिंग, या बूलियन इत्यादि) भी स्वीकार कर सकता है और इसे lpeg.P() का उपयोग करके एक पैटर्न में रूपांतरित कर देगा। और lpeg.P (1) का अर्थ है "कोई चरित्र"। – mpeterv

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