क्या ऐसी भाषा डिजाइन करना संभव है जिसमें वाक्यविन्यास त्रुटियां न हों? [बन्द है]


14

दूसरे शब्दों में, एक भाषा जहां हर संभव स्ट्रिंग वैध वाक्यविन्यास है?

EDIT : यह एक सैद्धांतिक प्रश्न है।
मुझे ऐसी भाषा का उपयोग करने में कोई दिलचस्पी नहीं है ; मैं सिर्फ यह पूछ रहा हूं कि क्या यह संभव है।

आगे संपादित करें

मैं ऐसी डिज़ाइन की गई भाषा को आगे बढ़ाता हूं। त्रुटि देखें


2
अगर हम ऐसा कर सकते हैं, तो हमने AI बनाया होगा।
माइकल के

5
@ मिचेल: नहीं; मुझे ऐसा नहीं लगता।
SLKs

7
!!! पर्ल !!!

8
मैं इस सवाल पर कड़ा एतराज जता रहा हूं! यह न तो व्यक्तिपरक है और न ही रचनात्मक है !!!
फेलिक्स डॉम्बेक

1
असेंबली लैंग्वेज को क्यों न लें: 256 निर्देश, 128 रजिस्टर, और एक सामान्य वाक्यविन्यास instruction operand*, जहां एक ऑपरेंड 0-127 के बीच एक रजिस्टर या एक संख्या हो सकती है (और इसके बाद के संस्करण में सब कुछ एक रजिस्टर के रूप में माना जाता है) और एक ऑपरेंड एक मल्टी-एरिटी इंस्ट्रक्शन के लिए गायब है, '0' मान लिया गया है।
फेलिक्स डॉम्बेक

जवाबों:


8

हां, यदि आप इसे बहुत ही विनम्र तरीके से एक निर्धारक ट्यूरिंग मशीन बनाते हुए देखते हैं जो हमेशा एक निश्चित भाषा के हर एक स्ट्रिंग के लिए एक अच्छी अंतिम स्थिति में रुकती है, तो आप संभवत: ध्वस्त हो गए होंगे। डेमोस्ट्रेशन बहुत सीधा है, आपको केवल एक संक्रमण के साथ एक संक्रमण फ़ंक्शन के साथ एक नियमित TM होना चाहिए, जो इस तरह दिखता है:

TF(w,q) -> (w,Qa) 

Considerations:
    L = { w | w is any possible string }
    w e L
    q e Q
    F is a set with all good final states {Qa,Qr}
    Qa e F

इसकी विध्वंस किया गया है कि एक टीएम में एक ही कंप्यूटिंग शक्ति होती है जो किसी भी वास्तविक जीवन कंप्यूटर पर होती है, इसलिए यह बिल्कुल संभव है


1
पृथ्वी पर इसका क्या मतलब है, हमारे लिए आम छंटनी? 'W', 'e', ​​'L', 'q', 'Q', 'Qa', 'Qr', 'F', 'TF' क्या है। इनमें से किसी भी परिभाषित के बिना मेरे पास संदर्भ का कोई ढांचा नहीं है।
बेरिन लोरिट्श

1
क्षमा करें, लेकिन इस उत्तर के लिए ट्यूरिंग मशीन के दृष्टिकोण को समझाने का कोई आसान तरीका नहीं है। थोड़ा स्पष्ट करने के लिए इस लिंक को जांचें: en.wikipedia.org/wiki/Turing_machine
guiman

16

हां, यह संभव है, यह बहुत ही आसान है।

<programm> ::= char | char <program> |

मुझे समझ नहीं आता कि कोई भी "नहीं" कैसे कह सकता है। उस ने कहा, ऐसी भाषा के लिए सार्थक अर्थ को परिभाषित करना कठिन हो सकता है, लेकिन यह संभव भी है। सिर्फ व्हॉट्सएप को देखो ।


तो अगर भाषा इसे नजरअंदाज करती है, तो यह वैध सिस्टैक्स है? और "tabtabspace" एक वैध स्ट्रिंग नहीं है?
माइकल के

1
भाषा का शब्दार्थ इसके साथ मेरा मुद्दा था, लेकिन वास्तव में इसके बिना चर्चा नहीं हो सकती है कि यह विषय-दर्शन / भाषाविज्ञान के लिए उचित नहीं है।
स्टुपरयूजर

2
माइकल: बिल्कुल। सब कुछ सिंथेटिक रूप से मान्य है, लेकिन यह संभवतः एक एनओपी हो सकता है (जिसका कोई विशेष अर्थ नहीं है)। बहुत सारे सामानों की अनदेखी करने वाली भाषा के साथ कुछ भी गलत नहीं है। इस नमूना कार्यक्रम में सी की अनदेखी सभी चीजों को देखें: int main () {3 ;; / * टिप्पणी * /}
user281377

बहुत से लोग "नहीं" कहते हैं क्योंकि उन्हें वाक्य रचना और शब्दार्थ के बीच कोई वैचारिक भेद नहीं है। "यह संकलन नहीं है? सिंटैक्स त्रुटि होनी चाहिए, फिर!"
fredoverflow

बहुत से लोग "नहीं" कहते हैं क्योंकि इसमें कोई वास्तविक अर्थ नहीं है। जैसे ही आप संरचना जोड़ते हैं (यानी एक स्व-पुनरावर्ती पार्सिंग नियम से अधिक) आपके पास सिंटैक्स की अवधारणा है। संरचना का उल्लंघन एक वाक्यविन्यास प्रेरित त्रुटि है। सिंटैक्स प्रेरित त्रुटि एक सिंटैक्स त्रुटि है, चाहे पार्सर इसे इस तरह से झंडी दे या नहीं।
बेरिन लोरिट्श

5

मुझे लगता है कि यह इस बात पर निर्भर करता है कि आपको मान्य सिंटैक्स से क्या मतलब है।

आप ऐसी भाषा डिज़ाइन कर सकते हैं जो किसी भी स्ट्रिंग को स्वीकार करती है लेकिन ऐसी किसी भी चीज़ को अनदेखा करती है जिसे विशिष्ट अर्थ नहीं दिया गया है। यह मूल रूप से यह कहने के बराबर है कि "मैं वाक्यविन्यास त्रुटियों से छुटकारा पाऊंगा, लेकिन कह रहा हूं कि वे त्रुटियां नहीं हैं" - कई कारणों से बहुत ही बेकार और बेहद अवांछनीय।

इससे परे कि आपके पास एक ऐसी भाषा हो सकती है, जिसमें कोई वाक्यविन्यास त्रुटियां न हों, इसके लिए हर संभव स्ट्रिंग का एक मान्य निर्देश / उपयोग होगा। एकमात्र तरीका मैं ऐसा करने के लिए देख सकता हूं कि सभी ऑपरेशन एकल पात्रों के रूप में होंगे और यह सुनिश्चित करने के लिए कि हर एक चरित्र को एक ऑपरेशन सौंपा गया था।

इसके साथ एक लाख चीजें गलत हैं - जाहिर है कि कोई आरक्षित शब्द नहीं है, यह सभी के बारे में है जहां इसे संदर्भ में उपयोग किया जाता है और परिणामस्वरूप यह मूल रूप से अवैध होगा और, जबकि सिंटैक्स त्रुटियों से प्रतिरक्षा हर दूसरे प्रकार का अनुभव करने की अधिक संभावना होगी। त्रुटि की।

तो सैद्धांतिक रूप से संभव है (अम्मो इसे I से अधिक बड़े करीने से रखता है) लेकिन पूरी तरह से अवांछनीय है।


मैंने पढ़ा है कि टीईसीओ ऐसा था, प्रत्येक चरित्र को एक अर्थ सौंपा जा रहा है।
डेविड थार्नले

3
मशीन कोड उस तरह से बहुत काम करता है। बाइट्स के हर संभव संयोजन को एक कार्यक्रम के रूप में देखा जा सकता है जो कुछ करता है , भले ही यह सब करता है एक बाधा पैदा कर रहा है।
user281377

डेविड, जैसा मैं सोच रहा था, वैसा ही टीईसीओ। हालांकि IIRC TECO इनपुट में सिंटैक्स त्रुटियां हो सकती हैं। लेकिन यह ऐसी घनी भाषा की कठिनाई को प्रदर्शित करता है-जिसे पढ़ना मुश्किल है और त्रुटियों को समझने में मुश्किल होती है।
ओमेगा सेंटॉरी

@ user281377: 6502 पर, बहुत कुछ निर्देश हैं जिनके कोई परिभाषित अर्थ नहीं हैं। कुछ में ऐसे व्यवहार होते हैं जो किसी भी प्रलेखित निर्देश के साथ सुसंगत, उपयोगी और उपलब्ध नहीं होते हैं (मेरा पसंदीदा उपनाम "DCP" है - एक मेमोरी एड्रेस को डिक्लेयर करना और संचायक के साथ परिणाम की तुलना करना, झंडे को उचित रूप से सेट करना), लेकिन कुछ में ऐसा व्यवहार होता है जो निर्भर करता है अजीब और विचित्र तरीकों से बस का समय, और कुछ को रीसेट करने के लिए प्रोसेसर को काफी मुश्किल से लॉक किया जाएगा (यहां तक ​​कि "नॉन-मास्केबल" रुकावट से भी मदद नहीं मिलेगी)। मुझे लगता है कि बाद के निर्देशों को "वाक्यविन्यास त्रुटियां" माना जा सकता है।
सुपरकैट

5

गैर-पाठ आधारित प्रोग्रामिंग भाषा में कोड में सिंटैक्स त्रुटियां नहीं हो सकती हैं।

मैं BYOB जैसी दृश्य भाषा के बारे में सोच रहा हूं । आप गलती से "अगर x दस और फू" टाइप नहीं कर सकते क्योंकि "सिंटैक्स" को ग्राफिकल ब्लॉकों द्वारा परिभाषित किया गया है।


3

सिंटैक्स का बहुत उद्देश्य वैध और गैर-वैध के बीच अंतर करना है जो कोड को निष्पादित करने की तुलना में तेज़ और प्रभावी है। सिंटैक्स केवल एक अनुकूलन है, इसमें क्या जाता है और शब्दार्थ में क्या जाता है वह मनमाना है।

आमतौर पर आप काफी विपरीत चाहते हैं: अधिक से अधिक समय बचाने के लिए सिंटैक्स को जितना संभव हो सके बनाने के लिए, लेकिन निश्चित रूप से आप सिंटैक्स को पूरी तरह से बदल सकते हैं और हर त्रुटि को एक अर्थ घोषित कर सकते हैं: आप एक गैर-टोकन इंटरचेंटर के साथ समाप्त करेंगे।


0

अहबेफ़ियास्लाक एस्लेर्शाफ़ो; च jwi [asdfasdf] नए सिरे से & # Q! @ # $} {!-P

तो उसका क्या मतलब हुआ?

जब तक भाषा में संरचना और व्याकरण है, तब तक हमेशा एक वाक्यविन्यास त्रुटि की अवधारणा होगी। सवाल यह है कि आप इसे लागू करते हैं या नहीं। लोग गलती करेंगे, और सिंटैक्स त्रुटियां हैं जो प्रोग्रामर को बेवकूफ गलतियों से बचने में मदद करने के लिए अधिकांश भाषा डिजाइनर तक पहुंचते हैं।

एक सिंटैक्स त्रुटि प्रोग्रामर्स लिखने वाले कोड द्वारा शुरू की गई एक त्रुटि है जिसका भाषा से कोई मतलब नहीं है।

उपरोक्त परिभाषा के आधार पर वाक्यविन्यास त्रुटियों से छुटकारा पाना असंभव है। हम सभी गलत पहचान वाले हैं, हम सभी गलत तरीके से नाम रखते हैं। भाषा को चुपचाप गुमराह करना स्वीकार करते हैं और खुशी से कुछ भी नहीं एक सुखद अनुभव का मेरा विचार नहीं है।

ऐसी भाषा डिजाइन करना संभव है जो पहचानकर्ता के रूप में किसी भी मान्य यूनिकोड चरित्र (या चरित्र अनुक्रम) का उपयोग कर सकती है। समतुल्य पात्रों / चरित्र अनुक्रमों को सामान्य करने जैसी चुनौतियाँ हैं, ताकि उन्हें एक ही चीज़ के रूप में पहचाना जाए - लेकिन यह संभव है। नोट: यूनिकोड सामान्यीकरण के चार मानक प्रकार हैं


1
संरचना की आवश्यकता के लिए एक व्याकरण की आवश्यकता नहीं होती है। पीट पर विचार करें जहां संरचना एक ग्रिड में चरित्र (या रंग) की स्थिति में है, न कि किसी वर्ण में अन्य वर्णों के साथ इसका संबंध।
माइक सैमुअल

1
संरचना का उल्लंघन करें और क्या होता है?
बेरिन लोरिट्श
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.