मुझे स्टैक-आधारित प्रोग्रामिंग भाषा को लागू करके कंप्यूटर प्रोग्रामिंग के बारे में अपना ज्ञान विस्तार करने में दिलचस्पी है। मैं कहां से शुरू करना चाहता हूं, इस बारे में सलाह ले रहा हूं, क्योंकि मेरा इरादा "pushint 1
" जैसे कार्यों के लिए है, जो "L01: jump L01:
" जैसे लेबल के माध्यम से स्टैक और फ्लो-कंट्रोल के शीर्ष पर मान 1 के साथ एक पूर्णांक को धक्का देगा।मैं एक साधारण स्टैक-आधारित प्रोग्रामिंग भाषा को कार्यान्वित करने के बारे में कैसे जाउंगा
अब तक मैंने अपनी भाषा को इस तरह से कार्य करने के लिए सी # कार्यान्वयन किया है (इसे लिंक करना चाहता था लेकिन आईडीईओएन अवरुद्ध है), लेकिन यह बहुत गन्दा है और अनुकूलन की आवश्यकता है। यह इनपुट को एक्सएमएल में अनुवाद करता है और फिर इसे पार करता है। मेरे लक्ष्यों को निम्न स्तर की भाषा में जाना है, (शायद सी/सी ++) लेकिन मेरे मुद्दे एक स्टैक को कार्यान्वित कर रहे हैं जो विभिन्न डेटा प्रकारों को पकड़ सकता है और उसके पास निश्चित आकार नहीं है।
आखिरकार मैं सरणी और कार्यों को भी लागू करना चाहता हूं। इसके अलावा, मुझे लगता है कि मुझे बेहतर लेक्सर होना चाहिए और मैं सोच रहा हूं कि एक पार्सिंग-पेड़ ऐसी सरल भाषा के लिए एक अच्छा विचार होगा।
कोई सलाह/आलोचना का स्वागत है, और कृपया ध्यान दें कि मैं प्रोग्रामिंग के लिए अभी भी काफी नया हूं (मैंने अभी हाल ही में एपी कंपस्सी 1 पूरा किया है)। इसके अलावा, ओपन-सोर्स स्टैक-आधारित भाषाओं के लिंक का स्वागत है।
यहाँ एक बुनियादी कार्यक्रम है कि मैं कोशिश करते हैं और व्याख्या करने के लिए/संकलन चाहते हैं (जहां [this is a comment]
):
[Hello World!]
pushchar '\n'
pushstring "Hello World!"
print
[Count to 5 and then count down!]
pushint 1
setlocal 0
L01:
pushchar '\n'
getlocal 0
print [print x + '\n']
getlocal 0
increment
setlocal 0 [x = x + 1]
pushint 5
getlocal 0
lessthan [x < 5]
iftrue L01
L02:
pushchar '\n'
getlocal 0
print [print x + '\n']
getlocal 0
decrement
setlocal 0 [x = x - 1]
pushint 0
getlocal 0
greaterthan [x > 0]
iftrue L02
उम्मीद उत्पादन होगा:
Hello World!
1
2
3
4
5
4
3
2
1
संयोग से, आपकी नई प्रोग्रामिंग भाषा का वाक्यविन्यास बहुत ही समान है [टैग: REBOL] प्रोग्रामिंग भाषा का वाक्यविन्यास। –
@AndersonGreen यह वाक्यविन्यास वास्तव में एडोब एक्शनस्क्रिप्ट वर्चुअल मशीन 2 (एवीएम 2) के ऑपोड्स पर आधारित था। हालांकि Rebol दिलचस्प लग रहा है! – Wingpad