मैं कुछ जीएनयू/लिनक्स उपकरणों के कमांड लाइन उपयोग का वर्णन करने के लिए एक बीएनएफ-जैसे औपचारिक व्याकरण लिखना चाहता हूं।जीएनयू/लिनक्स कमांड के कमांड लाइन उपयोग को सही तरीके से औपचारिक रूप से कैसे औपचारिक रूप से औपचारिक रूप से कार्यान्वित किया जाए?
(cat-command) : 'cat' (arguments-list)
(arguments-list) : (argument)
(arguments-list) : (arguments-list) (argument)
(argument) : (file)
समस्या मैं नीचे इस तरह के md5sum
के रूप में कुछ आदेश के लिए एक सटीक व्याकरण नहीं लिख सकता है: उदाहरण के लिए मैं के रूप में cat
आदेश के उपयोग का वर्णन कर सकते हैं।
(md5sum-command) : 'md5sum' (arguments-list)
(arguments-list) : (argument)
(arguments-list) : (arguments-list) (argument)
(argument) : (file)
(argument) : '--check'
लेकिन आप इस व्याकरण देख सकते हैं के रूप में आप कई बार के रूप --check
तर्क आप चाहें, जो सही नहीं है के रूप में आप इसे ज़्यादा से ज़्यादा एक समय का उपयोग करना चाहिए के रूप में निर्दिष्ट कर सकते हैं: मेरी कि पहला प्रयास निम्नलिखित होगा ।
मैं इसे कैसे ठीक कर सकता हूं? इसके अलावा, इस तरह की समस्याओं का बेहतर इलाज करने के लिए मुझे किस प्रकार के औपचारिक व्याकरण का अध्ययन करना चाहिए?
क्या आप सुनिश्चित हैं कि आपका व्याकरण गलत है? मेरे लिए यूनिक्स आदेशों में से कई एक ही तर्क के कई घटनाओं को खुशी से स्वीकार करते हैं, जैसे 'ls -l -l -l'। –
हां, आप सही हैं। लेकिन शायद कुछ ऐसे उपकरण हैं जो पुनरावृत्ति की अनुमति नहीं देते हैं। मैं अपना खुद का प्रोग्राम भी लिख सकता हूं जो पुनरावृत्ति की अनुमति नहीं देता है। तो मुझे लगता है कि मेरी समस्या अभी भी प्रासंगिक है। –