2010-09-23 24 views
9

मैं एक भाषा (या भाषाओं के परिवार) को लागू करने की कोशिश कर रहा हूं जिसका व्याकरण गतिशील रूप से बदला जा सकता है। मुझे कोई उदाहरण नहीं मिला है जो अध्ययन के मामलों के रूप में कार्य करता है।अनुकूली व्याकरण का उपयोग

क्या आप मुझे वास्तविक दुनिया (यहां तक ​​कि अकादमिक दुनिया से भी) में उपयोग किए जाने वाले किसी भी संदर्भ का कुछ संदर्भ दे सकते हैं?

क्या यह एक गतिशील व्याकरण के साथ एक डोमेन-विशिष्ट भाषाओं को लागू करने के लिए समझ में आता है?

+0

आपका मतलब एक ऐसी भाषा है जिसमें आप फ्लाई पर नए नियंत्रण संरचनाओं को परिभाषित कर सकते हैं? वह अजीब तरह का है। क्या आपके पास ऐसी चीजों का उदाहरण है जो आप करना चाहते हैं जिसके लिए आपको लगता है कि आपको इस तरह की कार्यक्षमता की आवश्यकता है? – Welbog

+0

क्या लिस्प आपके विवरण को फिट करेगा? – Starkey

+0

चूंकि सभी संकलक इस परिभाषा के अनुसार "संकलित" सभी संकलित भाषाओं की तुलना में उपकरण (जैसे Yacc और Lex और Bison) के साथ बनाए जाते हैं। यह सवाल जवाब देने के लिए बहुत अस्पष्ट है। –

उत्तर

9

गतिशील वाक्यविन्यास वाला सबसे प्रसिद्ध वर्तमान भाषा Perl6 है। सामान्य में सबसे प्रसिद्ध उदाहरण शायद Smalltalk-72 है।

तुम भी OMeta पर गौर और Alan Kay's Viewpoints Research Institute से STEPS project के बाकी है, साथ ही वैल Schorre के मूल META II कर सकते हैं।

भी दिलचस्प: π programming language

XL (Extensible Language) सिंटैक्स के शक्तिशाली हेरफेर के लिए भी अनुमति देता है।

+1

+1, बढ़िया! – yassin

+1

[अंग्रेज़ीस्क्रिप्ट] (https://github.com/pannous/english-script) में गतिशील वाक्यविन्यास भी है, लेकिन यह अभी भी एक कार्य प्रगति पर है। –

+0

इस उत्तर को कुछ स्पष्टीकरण की आवश्यकता है। पर्ल 6 का सिंटैक्स "गतिशील" क्यों माना जाता है? –

8

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

सीटॉन this paper में Fortress प्रोग्रामिंग भाषा के लिए मैक्रो सिस्टम का वर्णन करते हुए उद्धृत किया गया है। लेखकों का लक्ष्य कोर वाक्यविन्यास से सिंटैक्टिक विस्तार को अलग करना है।

+0

मैं कैटाहदीन के बारे में कैसे भूल सकता हूं! एक संबंधित, इसी तरह का एक भी है, जिसका नाम मुझे इस समय से बच निकला है। Katahdin –

+1

+1 PFront का लिंक अब टूटा हुआ प्रतीत होता है। – yassin

0

मुझे वास्तव में Agda का सिंटैक्स पसंद है, जो बेहद लचीला है। यह मनमाने ढंग से डिस्टिक्स ऑपरेटरों की अनुमति देता है जो अनिवार्य रूप से अनुमति देता है, जो नई भाषा सुविधाओं की तरह दिखता है।

हालांकि मैंने अपने काम में बारीकी से नहीं देखा है, मुझे पता है कि अन्निका आसा ने प्रोग्रामर को नए वाक्यविन्यास निर्दिष्ट करने पर कुछ काम किया है। आपको Google विद्वान पर अपना काम मिल जाएगा।

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

0

कैटाहदीन एक स्पष्ट विकल्प है। PFront भी है, और साथ ही साथ आम लिस्प में अच्छे पुराने पार्सिंग मैक्रोज़ भी हैं।

+0

उद्धरण के लिए –

+0

@AndersonGreen, संपादित: एक लेख का एक लिंक अभी भी काम करता है, सुनिश्चित नहीं है कि अब डाउनलोड लिंक कहां है। –

0

मैं एक ही चीज़ पर काम कर रहा हूं।

मेरे पास कुछ विस्तारणीय पार्सर पुस्तकालय होना चाहिए जो लोग जल्द ही उपयोग कर सकते हैं। मुझे लेक्सर मिल गया है और मैं पार्सर को एक साथ फेंकने में व्यस्त हूं।

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

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

पार्सिंग प्रोडक्शंस और एलएल (1) के अंदर के डिफिक्स भागों के बाहर सरल ऑपरेटर प्राथमिकता है। हम देखेंगे कि मुझे लगता है कि मैं कुछ भी मजबूत चाहता हूं।

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