2011-12-31 10 views
5

मैं अन्य भाषाओं में लुआ एम्बेड करने के लिए कैसे पता है, लेकिन मैं फिर से उपयोग करने के लिए केवल पार्सर कोड पार्स और मुझे उदाहरण के लिए एएसटी के रूप में परिणाम देने के लिए करना चाहते हैं। लुआ मंच के साथ ऐसा करने का सबसे आसान तरीका क्या है?लुआ पार्सर का पुन: उपयोग करने का सबसे अच्छा तरीका क्या है?

धन्यवाद!

+2

lua पार्सर एक एएसटी उत्पन्न नहीं करता है - स्रोत कोड मतलब यह है कि जो मैं चाहता असंभव है बाईटकोड –

+0

के लिए पाठ से एक पास में चला जाता है? पार्सर का पुन: उपयोग नहीं किया जा सकता है? – CharlesS

+1

आप एएसटी के साथ क्या करना चाहते हैं? – lhf

उत्तर

3

किसी ने पहले ही लुआ भाषा के लिए एक ANTLR व्याकरण बनाया:

https://github.com/antlr/grammars-v4/blob/master/lua/Lua.g4

मैं एक जोड़े पर ANTLR उपयोग किया है:

http://www.antlr3.org/grammar/1178608849736/Lua.g

या आप ANTLR v4 उपयोग कर रहे हैं अच्छे नतीजे वाली परियोजनाएं यदि आप इसके लिए पूछते हैं तो यह एएसटी पीढ़ी समेत एक सी (एएनटीएलआर वी 3) या सी ++ (एएनटीएलआर वी 2) पार्सर उत्पन्न करेगा।

+1

v2 सी ++ क्यों उत्पन्न करता है जबकि v3 सी उत्पन्न करता है? –

+2

और दिलचस्प सवाल। v2 में कई लक्ष्य थे, जिनमें सी ++, जावा और सी # शामिल थे। v3 सी, जावा, सी #, पायथन, और उद्देश्य सी का समर्थन करता है। हालांकि यह स्पष्ट हो सकता है कि उन्होंने पायथन और ऑब्जेक्टिव सी क्यों जोड़ा, यह इतना स्पष्ट नहीं है कि उन्होंने सी ++ क्यों छोड़ा। एक एएनटीएलआर रखरखाव ने कई बार कहा कि वह एएनटीएलआर वी 3 के लिए सी ++ लक्ष्य लिखेंगे, लेकिन कभी नहीं किया। हो सकता है कि अन्य लोगों के प्रयास नहीं किया है क्योंकि कुकी गीला है (http://blogs.msdn.com/b/oldnewthing/archive/2009/12/01/9930480.aspx)। V3 से सी ++ लक्ष्य v3 से "गायब" कैसे हुआ? ऐसा इसलिए है क्योंकि उन्होंने भाषाओं को जोड़ने में आसान बनाने के लिए लक्ष्य API को फिर से डिजाइन किया है। –

+0

@ जोहानज़विन लिंक काम नहीं कर रहा है। –

संबंधित मुद्दे

 संबंधित मुद्दे