मैं पार्ससी का उपयोग करके हास्केल में एक पार्सर लिखने का प्रयास कर रहा हूं। वर्तमान में मैं एक प्रोग्राम है जो पार्स कर सकते हैंमुठभेड़ के लिए हास्केल पारसेक पार्सर [...]
test x [1,2,3] end
कोड है कि के रूप में
testParser = do {
reserved "test";
v <- identifier;
symbol "[";
l <- sepBy natural commaSep;
symbol "]";
p <- pParser;
return $ Test v (List l) p
} <?> "end"
जहां commaSep
commaSep = skipMany1 (space <|> char ',')
अब के रूप में परिभाषित किया गया है इस प्रकार इस दिया जाता है है वहाँ मेरे लिए कुछ रास्ता है एक समान बयान का विश्लेषण करने के लिए, विशेष रूप से:
test x [1...3] end
उस मामले के लिए हास्केल और पारसेक के लिए नया होने के नाते, मुझे यकीन है कि ऐसा करने का कुछ अच्छा संक्षिप्त तरीका है जिसे मैं अभी नहीं जानता हूं। किसी भी सहायता की सराहना की जाएगी।
फिर से धन्यवाद।
क्या अवधि की संख्या स्थिर या परिवर्तनीय होनी चाहिए? क्या संख्याओं और अवधि, और अवधि के बीच रिक्त स्थान की अनुमति है? वैसे, आपका पहला पार्सर 'टेस्ट एक्स [1, 2,, 3] एंड' से मेल खाता है; हो सकता है कि आप जो चाहते हैं वह नहीं है। – dflemstr
अवधि की संख्या स्थिर होना चाहिए, यानी [1 ... 3] किसी भी मामले के लिए बिल्कुल 3 अवधि होनी चाहिए। [1 ... 3] के बीच व्हाइटस्पेस को अनदेखा किया जाना चाहिए। उम्मीद है कि यह स्पष्ट करता है कि मैं थोड़ा और बाद में क्या कर रहा हूं। –