ठीक है, फ़ेलिक्स में आप इसे दो चरणों में कार्यान्वित कर सकते हैं: सबसे पहले, आप एक सामान्य कार्य लिखते हैं। फिर, आप व्याकरण का विस्तार कर सकते हैं और कुछ नए गैर-टर्मिनलों को फ़ंक्शन में मैप कर सकते हैं।
यह आप जो चाहते हैं उसकी तुलना में यह थोड़ा हेवीवेट है (इसे आसान बनाने में मदद करने के लिए आपका स्वागत है !!) मुझे लगता है कि यह वही करता है जो आप चाहते हैं और बहुत कुछ!
मैं क्योंकि फेलिक्स भाषा का पूरे वास्तव में इस तकनीक द्वारा परिभाषित किया गया कोई वास्तविक उदाहरण दे देंगे (एक्स नीचे, भाव के लिए गैर टर्मिनल एक्स में पी है [p] एक पूर्वता कोड है):
// alternate conditional
x[sdollar_apply_pri] := x[stuple_pri] "unless" x[let_pri]
"then" x[sdollar_apply_pri] =>#
"`(ast_cond ,_sr ((ast_apply ,_sr (lnot ,_3)) ,_1 ,_5))";
यहाँ थोड़ा अधिक है:
// indexes and slices
x[sfactor_pri] := x[sfactor_pri] "." "[" sexpr "]" =>#
"`(ast_apply ,_sr (,(noi 'subscript) (,_1 ,_4)))";
x[sfactor_pri] := x[sfactor_pri] "." "[" sexpr "to" sexpr "]" =>#
"`(ast_apply ,_sr (,(noi 'substring) (,_1 ,_4 ,_6)))";
x[sfactor_pri] := x[sfactor_pri] "." "[" sexpr "to" "]" =>#
"`(ast_apply ,_sr (,(noi 'copyfrom) (,_1 ,_4)))";
x[sfactor_pri] := x[sfactor_pri] "." "[" "to" sexpr "]" =>#
"`(ast_apply ,_sr (,(noi 'copyto) (,_1 ,_5)))";
फेलिक्स व्याकरण साधारण उपयोगकर्ता कोड है। उदाहरणों में व्याकरण कार्यों को योजना में लिखा गया है। व्याकरण जीएलआर है। यह "संदर्भ संवेदनशील कीवर्ड" की अनुमति देता है, यानी पहचानकर्ता जो केवल कुछ संदर्भों में कीवर्ड हैं, जो मौजूदा कोड को तोड़ने के बारे में चिंता किए बिना नई संरचनाओं का आविष्कार करना आसान बनाता है।
शायद आप Felix Grammar Online की जांच करना चाहते हैं।
क्या आप इसे पूरा करने के बारे में कुछ और बता सकते हैं? – nos
ठीक है मुझे लगता है कि कुछ फ़ंक्शन कॉल 'दूरी फ्रॉमो' उदाहरण की तरह पढ़ने के लिए बहुत आसान होंगे। लेकिन मैं सिर्फ उत्सुक था अगर ऐसी प्रोग्रामिंग भाषा जो आपको इस तरह के फ़ंक्शन को परिभाषित करने देती है। –
मुझे लगता है कि आपको यह कहने के लिए एक बेहतर उदाहरण की आवश्यकता है कि आप क्या कहने की कोशिश कर रहे हैं क्योंकि फ़ंक्शन में बहु मानों को पार करना एक ही चीज़ प्राप्त करता है और समान रूप से (यदि अधिक नहीं) स्पष्ट होता है। ईजी। dist = distanceFrom (cityA, cityB) –