2011-10-23 17 views
5

मैंने सुना है कि एस-अभिव्यक्तियों को पेड़ के रूप में दर्शाया जा सकता है; के रूप मेंक्या लिस्प के लिए "वृक्ष संरचना संपादक" है?

 . 
. . . . 
f 1 .  3   [first level] 
     g 2    [second level] 

उदाहरण (f 1 (g 2) 3) के लिए वहाँ संरचना सीधे इस तरह का संपादन के लिए एक संपादक (अधिमानतः मुफ्त) है? यह होगा

  1. से बचें "उन सभी कोष्ठकों"
  2. प्रदर्शनी लालित्य मैं तुतलाना की समझ गया है।

उत्तर

2

जहाँ तक मुझे पता के रूप में (और विकिपीडिया लेख के रूप में की पुष्टि करता है), structure editingInterlisp-D में इस्तेमाल किया गया था। मैं आज आम तौर पर उपयोग में आम लिस्प के लिए किसी भी संरचना संपादक से अवगत नहीं हूं, लेकिन हो सकता है कि मुझे ऐसा कुछ पता न हो। Pascal J. Bourguignon की साइट पर example है जिसके साथ आप खेलना चाह सकते हैं। (मैंने इसे नज़रअंदाज़ नहीं किया) मैंने कुछ समय पहले XML को Oxygen में कुछ समान उपयोग किया था।

(इसके अलावा, मैं कारण Interlisp इस कोष्ठकों से छुटकारा पाने से कोई लेना देना था इस्तेमाल किया नहीं लगता कि, और वहाँ टिप्पणी के साथ समस्याओं, उदाहरण के लिए हो सकता है।)

+0

मुझे लगता है कि पास्कल कार्यक्रम, उपयोगी हो सकता है अगर मैं पता लगा सकते हैं कि कैसे Emacs में एकीकृत करने के लिए। यह काफी पेड़ संपादक नहीं है जिसे मैं ढूंढ रहा था, हालांकि, मुझे लगता है कि मुझे अब प्रश्न खोलना चाहिए। मैं स्वीकार करता हूं कि कुछ गूंजने के बाद भी मैं वास्तव में इंटरलिस्प को समझ नहीं पा रहा हूं; क्या यह लिस्प मशीनों के लिए एक ऑपरेटिंग सिस्टम था?(दुर्भाग्य से, शायद यह बहुत मदद नहीं करेगा! :) – scarlet

+0

हां, इंटरलिस्प लिस्प मशीनों पर भाग गया और आम लिस्प से पहले उपयोग में आने वाली प्रणालियों में से एक था। हालांकि, आम लिस्प, मैकलिस्प द्वारा अधिक दृढ़ता से प्रभावित था, और संरचना संपादकों का उपयोग नहीं किया गया था। यहां तक ​​कि अगर यह "बहुत मदद नहीं करता" है, तो यह जानना अच्छा होगा कि संरचना संपादन एक नया विचार नहीं है, लेकिन कुछ दशक पहले ही इसका उपयोग पहले से ही किया जा रहा था। (मुझे इस बारे में चर्चाएं मिलती हैं, इसलिए आप इस विषय को Google समूहों में खोजना चाहेंगे।) – danlei

+0

यदि आप वास्तव में ऐसा कुछ करने के लिए एमाक्स मोड लिखना चाहते हैं, तो हो सकता है कि आप एक ऐसे मोड पर भी विचार कर सकें जो बस रास्ते को बदलता है पास्कल के कोड के रूप में, सीधे लिंग बदलने के बजाय, कोड का प्रतिनिधित्व और संपादित किया जाता है। (यह ऑक्सजेन जैसे एक्सएमएल टूल्स का दृष्टिकोण है) फिर आप इन-कोड टिप्पणियों के साथ संभावित समस्याओं से बच सकते हैं, और दूसरों के साथ कोड का आदान-प्रदान करना आसान होगा, जो संरचना संपादन का उपयोग नहीं करते हैं। – danlei

5

एस भाव एक पेड़ का प्रतिनिधित्व , कोई और रास्ता नही। आपका उदाहरण, नई-पंक्तियों के साथ स्वरूपित:

(f 1 
    (g 2) 
    3) 

यह निम्न विपक्ष पेड़ प्रतिनिधित्व करता है:

+---+---+ +---+---+ +---+---+ +---+---+ 
--->| f | ----->| 1 | ----->| ¦ | ----->| 3 |NIL| 
    +---+---+ +---+---+ + ¦ +---+ +---+---+ 
           v 
          +---+---+ +---+---+ 
          | g | ----->| 2 |NIL| 
          +---+---+ +---+---+ 

यह एक ही समय में है कार्यक्रम — कुछ है कि अन्य भाषा परिवारों के लिए compilers की वास्तविक सार वाक्य रचना पेड़ जटिल नियमों से निर्माण करना है।

संपादन के लिए, कोष्ठक आप सभी हैं और आपके संपादक को पेड़ के स्तर पर काम करने की आवश्यकता है। Emacs में यह paredit-mode है, लेकिन मुझे लगता है कि अन्य संपादकों की समान सुविधाएं या प्लगइन हैं।

+0

मुझे लगता है कि कैसे ब्रांड्स पेड़ संरचना का प्रतिनिधि हैं; मैं बस सोच रहा था कि क्या एक संपादक था जो उपयोगकर्ता को संपादित करने के लिए पेड़ को चित्रकारी पेड़ के रूप में प्रदर्शित करता है। (मुझे यकीन नहीं है कि पॉइंटर्स ऐसी चीज़ के लिए उपयोगकर्ता के अनुकूल होंगे, लेकिन मुझे लगता है कि यह काम कर सकता है।) – scarlet

2

emacs के लिए ParEdit मोड अनिवार्य रूप से एक संरचित संपादक है।

इसके अलावा, their paper में, Gomolka & Humm एक शोध प्रोटोटाइप ग्रहण के लिए CUSP विस्तार का उल्लेख है, लेकिन मैं एक डाउनलोड कार्यान्वयन के बारे में पता नहीं है।

+0

यह क्रूर है। चित्र संपादक, कोड की रेखाएं, सर्वेक्षण परिणामों सहित संरचना संपादक का पूरा विवरण प्रदान करें, फिर इसे प्राप्त करने के लिए कोई संकेत नहीं है। (ईमानदार होने के लिए मैं शायद आजकल emacs से स्विच नहीं होगा, लेकिन बस वही।) अद्यतन के लिए धन्यवाद। – scarlet

2

Gingko as a Tree Structure editor for lisp

हम आपको write Lisp with Gingko (एक सामान्य वृक्ष संरचना संपादक) दे पर काम कर रहे हैं।

पेड़ से स्रोत में रूपांतरण छोटा है, इसलिए वास्तव में केवल एक चीज गायब है और अधिक गहराई है (गिंगको वर्तमान में 3 स्तर तक सीमित है)।

[यह अभी भी बहुत प्रयोगात्मक है, इसलिए मैं प्रतिक्रिया लिस्प विशेषज्ञों से & इनपुट खुशी होगी।]

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