मैं अपनी खुद की जावास्क्रिप्ट-आधारित प्रोग्रामिंग भाषा बना रहा हूं (हाँ, यह पागल है, लेकिन यह केवल सीखने के लिए है ... शायद?)। ठीक है, मैं पारसर्स के बारे में पढ़ रहा हूँ और पहली पास कोड स्रोत की तरह, टोकन में बदलने के लिए है: करने के लिएएक पार्सर बनाना (भाग I)
if(x > 5)
return true;
Tokenizer:
T_IF "if"
T_LPAREN "("
T_IDENTIFIER "x"
T_GT ">"
T_NUMBER "5"
T_RPAREN ")"
T_IDENTIFIER "return"
T_TRUE "true"
T_TERMINATOR ";"
मैं नहीं जानता कि अगर मेरे तर्क सही है इसके लिए थोड़ी देर के लिए। मेरी पार्सर पर यह और भी बेहतर है (या नहीं?) और इसे करने के लिए अनुवाद करते हैं (हाँ, बहुआयामी सरणी):
- मेरे रास्ते बेहतर या बदतर है कि है:
T_IF "if" T_EXPRESSION ... T_IDENTIFIER "x" T_GT ">" T_NUMBER "5" T_CLOSURE ... T_IDENTIFIER "return" T_TRUE "true"
मैं कुछ शक है मूल तरीका? ध्यान दें कि मेरा कोड हर समय व्याख्या किए जाने के बजाय, पढ़ा और संकलित किया जाएगा (PHP की तरह किसी अन्य भाषा में अनुवादित)।
- टोकननाइज़र के बाद, मुझे वास्तव में क्या करना चाहिए? मैं वास्तव में इस पास पर खो गया हूँ!
- सीखने के लिए कुछ अच्छे ट्यूटोरियल हैं कि मैं इसे कैसे कर सकता हूं?
ठीक है, कि है। अलविदा!
अरे, एक प्रोग्रामिंग भाषा बनाना पागल नहीं है। यहां बहुत से लोग एक ही काम कर रहे हैं। – ApprenticeHacker
क्या आपने ड्रैगन-बुक को आजमाया था? मूल रूप से जो आप पास करते हैं वह लेक्सर चरण होता है, इसके बाद वास्तविक वाक्य रचनात्मक पार्सिंग चरण -> आदर्श रूप से किसी प्रकार का एएसटी (सार सिंटेक्स ट्री) आउटपुट करता है जिसे आप अर्थात् विश्लेषण (पार्स) या अपनी लक्षित भाषा में परिवर्तित कर सकते हैं – stryba
@IntermediateHacker हाहा ... हाँ, * पागल * हिस्सा यह है कि एक व्यक्ति के लिए यह बहुत जटिल है। लेकिन सीखने के लिए वास्तव में एक बहुत अच्छी बात है। एक पेशेवर उपयोग के लिए मुझे लगता है कि एक टीम की जरूरत है, तो पागल अकेले ऐसा करते हैं। : p –