xtext

2012-12-04 6 views
5

में पार्स पेड़/नोड मॉडल/एएसटी देखकर मैं एक विशेष भाषा के लिए एक संपादक उत्पन्न करने के लिए xtext का उपयोग कर रहा हूं। मेरी नई भाषा के लिए संपादक का उपयोग करते समय, इसमें कोड-पूर्णता और रंग जैसी सभी प्यारी xtext सुविधाएं हैं और इसी तरह। मैं जो करना चाहता हूं वह मेरे संपादक में पाठ की संरचना को कल्पना करना है।xtext

मुझे पता है कि xtext में एक आंतरिक एएसटी और एक पार्स पेड़ है (मैं समझता हूं कि वे इसे 'नोड मॉडल' कहते हैं) - क्या इस पेड़ को देखने का कोई तरीका है?

उत्तर

1

आपको सामग्री की रूपरेखा जांचनी चाहिए। मैंने मेरा कस्टमाइज़ किया है लेकिन मुझे लगता है कि डिफ़ॉल्ट एक मॉडल की संरचना को दर्शाता है।

2

यह आपकी मदद कर सकता है: https://github.com/OLibutzki/xtext.tools

यह नोड मॉडल के लिए और अर्थ मॉडल (एएसटी) के लिए एक रूपरेखा प्रदान करता है।

+0

@ जो, क्या मैं इस उत्तर को स्वीकार करने का प्रस्ताव कर सकता हूं? – thSoft

1

Xtend में एक सरल समाधान (आत्मनिरीक्षण EObject.toString() द्वारा डिफ़ॉल्ट रूप से किया पर आधारित): इस तरह के रूप डंप (someEObject, '') एक फोन से

def static String dump(EObject mod_, String indent) { 
    var res = indent + mod_.toString.replaceFirst ('.*[.]impl[.](.*)Impl[^(]*', '$1 ') 

    for (a :mod_.eCrossReferences) 
     res += ' ->' + a.toString().replaceFirst ('.*[.]impl[.](.*)Impl[^(]*', '$1 ') 
    res += "\n" 
    for (f :mod_.eContents) { 
     res += f.dump (indent+" ") 
    } 
    return res 
} 

आउटपुट होगा वापसी:

ExpressionModel 
Variable (name: i) 
    Plus 
     IntConst (value: 1) 
     Plus 
      IntConst (value: 2) 
      Plus 
       IntConst (value: 3) 
Variable (name: j) 
    Plus 
     VarRef ->Variable (name: i) 
     Plus 
      IntConst (value: 4) 
      Plus 
       IntConst (value: 5) 
संबंधित मुद्दे