यह बिल्कुल आसान नहीं है, चेहरे में, यह एक कठिन बात है। आपको एक पूर्ण व्याकरण पार्सर की आवश्यकता है, जो पूर्व परिभाषित स्थिरांक/कार्यों (sin
, log
, pi
, आदि) के साथ संयुक्त है।
यदि आपके पास सीआई के साथ कोई व्यापक पिछला अनुभव नहीं है, तो यह करने से इनकार कर दिया जाएगा, लेकिन यदि आप वास्तव में यह देखना चाहते हैं तो recursive descent parsing पर यह करने का सबसे आसान तरीका है (उपयोगकर्ता पर बोझ डाले बिना, रिवर्स पॉलिश अंकन)।
अंतिम लेकिन कम से कम आप कम से कम नहीं कहते हैं कि आप उपयोगकर्ता द्वारा जेनरेट किए गए इनपुट से सी फ़ंक्शन बनाना चाहते हैं। यह लगभग हमेशा गलत काम है - उपयोगकर्ता इनपुट से कोड उत्पन्न करना, इसके बजाय सबसे आसान तरीका एक मध्यवर्ती प्रतिनिधित्व बनाने के लिए पूर्व-प्रसंस्करण है जिसे कुशलतापूर्वक निष्पादित किया जा सकता है।
बाइसन दस्तावेज़ीकरण पर एक नज़र डालें, [उदाहरण] (http://www.gnu.org/software/bison/manual/html_node/Infix-Calc.html#Infix-Calc) जो आपको मार्गदर्शन करेंगे। –
http://stackoverflow.com/questions/1151127/evaluating-mathematical-expressions के संभावित डुप्लिकेट, [तेज़ सी या उद्देश्य-सी गणित पार्सर क्या है?] (Http://stackoverflow.com/questions/4892152/what -इस-ए-फास्ट-सी-या-उद्देश्य-सी-गणित-पार्सर), http://stackoverflow.com/questions/5115872/what-is-the-best-way-to-evaluate-mathematical-expression- इन-सी/5117028 # 5117028, http://stackoverflow.com/questions/4071456/opensouce-cc-math-expression-parser-library/4071701#4071701, और कई अन्य। – lhf
कोशिश करें [TinyExpr] (https://github.com/codeplea/tinyexpr)। यह एक सी स्रोत कोड फ़ाइल और शीर्षलेख में है। – 131