2013-02-02 14 views
5

में स्रोत कोड ट्रांसफॉर्म करें मैं अक्सर जावा और फोरट्रान में लागू भौतिकी समीकरणों में बहुत सारे आते हैं। ज्यादातर मामलों में इन समीकरणों को सीधे एक उन्नत भौतिकी पाठ्यपुस्तक या प्रकाशन से कॉपी किया जाता है। उनके मूल रूप में समीकरण पढ़ने के लिए काफी आसान हैं क्योंकि वे आमतौर पर लाटेक्स में टाइपसेट होते हैं। हालांकि, जब इन समीकरणों को कोड में अनुवादित किया जाता है तो वे अस्पष्ट दिखते हैं। यहां तक ​​कि लघु डोमेन-विशिष्ट चर नाम as suggested here का उपयोग करके, या समीकरण को एकाधिक रेखा में तोड़ने से यह टाइपसेट संस्करण के रूप में सहज नहीं दिखता है।लाटेक्स

क्या कोई ऐसा उपकरण है जो जावा/फोरट्रान स्रोत फ़ाइल को पार्स कर सकता है और इसे लाटेक्स में आउटपुट कर सकता है, जो सभी गणितीय अभिव्यक्तियों को उनके लाटेक्स समकक्ष में बदल देता है। उदाहरण के लिए,

Math.sqrt(Math.pow(a,2) + Math.pow(b,2)) 

बस स्पष्ट होना

\sqrt{a^2 + b^2} 

में तब्दील हो जाता। मैं उन समाधानों की तलाश नहीं कर रहा हूं जो लाटेक्स को टिप्पणियों/जावाडोक के हिस्से के रूप में शामिल करने की अनुमति देते हैं। क्योंकि यह केवल मेरी टिप्पणियों का लाटेक्स आउटपुट बनाएगा, न कि स्रोत कोड में अभिव्यक्ति।

+0

क्या आपको ऐसा कुछ चाहिए जो कस्टम फ़ंक्शंस e.t.c. को भी संभालेगा? – thkala

+0

कस्टम फ़ंक्शंस को रखा जा सकता है। लेकिन मैं गणित वर्ग से मानक तरीकों का समर्थन करने की अपेक्षा करता हूं। बोनस के रूप में, यह बहुत अच्छा होगा अगर टूल परिवर्तनीय नामों में सबस्क्रिप्ट नोटेशन को समझ सके। उदाहरण के लिए t_out का अनुवाद 'टी' सबस्क्रिप्ट 'आउट' के रूप में किया जाएगा। – Shahriar

+0

ठीक है, _this_ specfic उदाहरण के लिए, आप बैकस्लैश के साथ 'Math.' को प्रतिस्थापित करने के लिए किसी प्रकार की स्क्रिप्ट का उपयोग करते हैं, और' '' '' '' 'को उनके संबंधित' {','} 'के साथ परिभाषित करने की आवश्यकता है, '\ newcommand {\ pow} [2] {# 1^{# 2}} 'और आपके पास लाटेक्स समकक्ष आउटपुट कोड है ... –

उत्तर

1

मुझे लगता है कि मैंने कुछ ऐसा देखा है जैसा आपने jetbrains mps के प्रक्षेपण संपादक के साथ किया था। यह स्रोत कोड में लेटेक्स-जैसे रेंडर समीकरणों के रूप में अंकगणितीय अभिव्यक्तियों को प्रदर्शित करता था। हालांकि मैं बिल्कुल याद नहीं कर सकता, जहां मैंने इसे देखा। शायद यह mbeddr था।

हालांकि आप स्रोत से लेटेक्स के रास्ते में अधिक रुचि रखते हैं, तो यहां मेरा सुझाव है: ATL मॉडल-टू-मॉडल रूपांतरण प्रदान करता है। आप इसका उपयोग अपने जावा एक्सप्रेशन को लेटेक्स एक्सप्रेशन में बदलने के लिए कर सकते हैं। इसलिए आपको जावा के EMF model की आवश्यकता है। MoDisco पहले से ही जावा 1.5 मॉडल के साथ जहाजों। मुझे लेटेक्स ईएमएफ मॉडल के बारे में पता नहीं है। मॉडल को लेटेक्स स्रोतों में क्रमबद्ध करने के लिए, आप Xtext का उपयोग कर सकते हैं।

+1

मुझे कुछ पुस्तकालय मिले जो जावा एएसटी पार्सिंग करते हैं: [जावा पार्सर] (http://www.semanticdesigns.com/Products/FrontEnds/JavaFrontEnd.html), [ग्रहण जेडीटी] (http://www.vogella.com/ लेख/ग्रहण जेडीटी/article.html), और [चम्मच] (http://spoon.gforge.inria.fr/) – Shahriar