सीजीओएल
Paradigm | procedural, imperative, structured |
---|---|
द्वारा डिज़ाइन किया गया | Vaughan Pratt |
पहली प्रस्तुति | 1973 |
Influenced by | |
ALGOL, FORTRAN, MLisp |
COLL[1][2] (उच्चारण देखें गॉल) वैकल्पिक वाक्यविन्यास है जो लिस्प (प्रोग्रामिंग भाषा) के लिए विस्तार योग्य बीजीय संकेतन की विशेषता है। इसे वॉन प्रैट द्वारा MACLISP के लिए डिज़ाइन किया गया था और बाद में सामान्य लिस्प में पोर्ट किया गया।[3]
सीजीओएल का नोटेशन, लिस्प के पारंपरिक, समान रूप से कोष्ठक में उपसर्ग संकेतन सिंटैक्स के बजाय, ALGOL की शैली में पारंपरिक इन्फिक्स संकेतन है। सीजीओएल पार्सर ऊपर से नीचे विश्लेषण के लिए प्रैट के डिज़ाइन पर आधारित है|टॉप-डाउन ऑपरेटर-प्राथमिकता पार्सर पार्सर,[4][5] कभी-कभी अनौपचारिक रूप से प्रैट पार्सर के रूप में जाना जाता है।
शब्दार्थ की दृष्टि से, सीजीओएल अनिवार्य रूप से कुछ अतिरिक्त रीडर और प्रिंटर समर्थन के साथ केवल सामान्य लिस्प है।
सीजीओएल को पहले के एलआईएसपी 2 प्रोजेक्ट के पीछे के कुछ आवश्यक विचारों का अधिक सफल अवतार माना जा सकता है। लिस्प 2, एलआईएसपी 1.5 का उत्तराधिकारी था जिसका उद्देश्य ALGOL सिंटैक्स प्रदान करना था। LISP 2 को छोड़ दिया गया, जबकि आज CGOL कोडबेस का उपयोग करना संभव है। ऐसा इसलिए है क्योंकि LISP 2 के विपरीत, CGOL को पोर्टेबल फ़ंक्शंस और लिस्प में लिखे गए मैक्रोज़ के रूप में कार्यान्वित किया जाता है, जिसके लिए होस्ट लिस्प कार्यान्वयन में कोई बदलाव की आवश्यकता नहीं होती है।
वाक्यविन्यास
आमतौर पर उपयोग किए जाने वाले कई सामान्य लिस्प परिचालनों के लिए विशेष नोटेशन उपलब्ध हैं। उदाहरण के लिए, कोई मैट्रिक्स मल्टीप्ल रूटीन को इस प्रकार लिख सकता है:
for i in 1 to n do
for k in 1 to n do
(ac := 0;
for j in 1 to n do
ac := ac + a(i,j)*b(j,k);
c(i,k) := ac)
सीजीओएल में इंफिक्स है .
ऑपरेशन (कॉमन लिस्प का जिक्र करते हुए)। cons
फ़ंक्शन) और इन्फ़िक्स @
ऑपरेशन (कॉमन लिस्प का जिक्र करते हुए)। append
समारोह):
a.(b@c) = (a.b)@c
पिछला उदाहरण मूल कॉमन लिस्प में इस पाठ से मेल खाता है:
(EQUAL (CONS A (APPEND B C)) (APPEND (CONS A B) C))
सीजीओएल का उपयोग करता है of
गुणों को पढ़ने और सेट करने के लिए:
'father' of x := 'brother' of relative of y
पिछला उदाहरण मूल कॉमन लिस्प में इस पाठ से मेल खाता है:
(PUTPROP X (GET (GET Y RELATIVE) 'BROTHER) 'FATHER)
यह दर्शाता है कि सीजीओएल दो तर्कों के फ़ंक्शन को कैसे नोट करता है:
\x,y; 1/वर्ग(x**2 + y**2)
पिछला उदाहरण मूल कॉमन लिस्प में इस पाठ से मेल खाता है:
(LAMBDA (X Y) (QUOTIENT 1 (SQRT (PLUS (EXPT X 2) (EXPT Y 2)))))
सीजीओएल का सिंटैक्स डेटा-संचालित है और इसलिए परिवर्तनीय और विस्तार योग्य दोनों है।
स्थिति और स्रोत कोड
सीजीओएल को सशस्त्र भालू आम लिस्प पर काम करने के लिए जाना जाता है।[6]
सीजीओएल स्रोत कोड और इसकी चर्चाओं वाली कुछ पाठ फ़ाइलें कार्नेगी-मेलन विश्वविद्यालय के आर्टिफिशियल इंटेलिजेंस रिपोजिटरी से फ्रीवेयर के रूप में उपलब्ध हैं।[3]
संदर्भ
- ↑ Pratt, Vaughan R. CGOL: An Alternative External Representation for LISP Users. AI Working Paper 121. MIT Artificial Intelligence Laboratory (Cambridge, MA). 1976.
- ↑ Pratt, Vaughan R. CGOL - an Algebraic Notation For MACLISP users. January 27, 1977.
- ↑ 3.0 3.1 CGOL: Algol-like language that compiles into Common Lisp
- ↑ Pratt, Vaughan R. Top Down Operator Precedence. Proceedings of the ACM Symposium on Principles of Programming Languages. 1973. pp41–51.
- ↑ Van De Vanter, Michael L. A Formalization and Correctness Proof of the CGOL Language System (Master's Thesis). MIT Laboratory for Computer Science Technical Report MIT-LCS-TR-147 (Cambridge, MA). 1975.
- ↑ CGOL on ABCL Development of the Armed Bear Common Lisp implementation blog.