eclipse - XText: कस्टम टर्मिनलों परिभाषाओं का उपयोग करें



eclipse-plugin grammar (1)

आपके पास बहुत सारे विकल्प हैं (इन सभी को ऑनलाइन सहायता में प्रलेखित किया गया है):

  1. व्याकरण में अपने टर्मिनल नियम को परिभाषित करें जो कि वर्तमान में आपके साथ काम कर रहे हैं।
  2. टर्मिनल प्रतीकों के लिए एक नया समर्पित व्याकरण बनाएं जैसा कि हमने आम लोगों के साथ किया। सामान्य टर्मिनलों के बजाय उस का उपयोग करें
  3. टर्मिनल प्रतीकों के लिए एक नया समर्पित व्याकरण बनाएं, उस व्याकरण में सामान्य। टर्मिनलों का पुन: उपयोग करें और अपने वास्तविक भाषा में अपने खुद के टर्मिनल व्याकरण का उपयोग करें।

मैं सिर्फ उन टर्मिनलों को ओवरराइड करने की सलाह देता हूं जो आप अपनी भाषा (विकल्प 1) में सही बदलना चाहते हैं या यदि आप कई भाषाओं को उसी टर्मिनल के साथ परिभाषित करना चाहते हैं जो मैं उपयोग करता हूं (विकल्प 3) या दोनों विकल्पों को गठबंधन करना है, जैसे

grammar org.mycompany.MyTerminals with org.eclipse.xtext.common.Terminals

terminal ID: ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
terminal SL_COMMENT: '--' !('\n'|'\r')* ('\r'? '\n')?;

==

grammar org.mycompany.MyLanguage with org.mycompany.MyTerminals

MyModel: name=ID other=ANOTHER;

terminal ANOTHER: '/#' -> '#/'

मैं पूरी तरह से XText के लिए नया हूँ

जब आप एक्सटेक्स्ट का इस्तेमाल करते हुए व्याकरण को परिभाषित करते हैं, तो आप एक दूसरे व्याकरण को निर्दिष्ट कर सकते हैं और परिभाषाओं का उपयोग कर सकते हैं जैसा कि यहां कहा गया है :

grammar org.eclipse.xtext.example.Domainmodel with org.eclipse.xtext.common.Terminals

Xtext में प्रत्येक व्याकरण का एक अनोखा नाम है, जो सार्वजनिक जावा वर्गों की तरह जावा कक्षापथ में फ़ाइल के स्थान को प्रतिबिंबित करने की आवश्यकता है। हमारे मामले में व्याकरण फ़ाइल /org /eclipse/xtext/example/Domainmodel.xtext में स्थित है इसलिए व्याकरण का नाम org.eclipse.xtext.example.Domainmodel है। उस कथन का दूसरा भाग (org.eclipse.xtext.common.Terminals के साथ) कहता है, कि यह व्याकरण निर्दिष्ट व्याकरण से नियमों को पुनः उपयोग और ओवरराइड करता है। Org.eclipse.xtext.common.Terminals एक पुस्तकालय व्याकरण Xtext के साथ भेज दिया जाता है और सबसे सामान्य टर्मिनल नियमों को पूर्वनिर्धारित करता है

मैं एक XText प्लगइन विकसित कर रहा हूं और मैं अपने खुद के टर्मिनल प्रतीकों को एक अलग फ़ाइल में परिभाषित करना चाहूंगा। क्या यह संभव है? मैं उसे कैसे कर सकता हूँ?

मैंने दोनों के लिए एक नया एक्सटेक्स्ट फ़ाइल बनाने और org.eclipse.xtext.common टर्मिनलों के बाद इसे जोड़ने के लिए कोशिश की और बस मेरा जोड़ने के लिए लेकिन दोनों समाधान संकलन नहीं करते हैं।

धन्यवाद।

संपादित करें

यदि मैं एक ही परियोजना में दो एक्सटेक्स्ट फाइलों का उपयोग करता हूं, व्याकरण के लिए एक और व्याकरण के टर्मिनलों के लिए मुझे एमवे 2 फ़ाइल लॉन्च करने के लिए निम्नलिखित अपवाद प्राप्त होता है:

java.lang.IllegalStateException: समस्या 'क्लासपाथ: /org/xvr/language/sh/ShaderDsl.xtext' पार्सिंग: [XtextLinkingDiagnostic: null: 1 व्याकरण के संदर्भ को हल नहीं किया जा सका 'org.xvr.language.sh.ShTerminal'। , XtextLinkingDiagnostic: null: 9 AbstractRule 'आईडी' के संदर्भ को हल नहीं किया जा सका, ट्रांसफ़ॉर्मेशन डायग्नोस्टिक: रिक्त: 14 डेटाटाइप इन्वारेन्ट नहीं बना सकता (त्रुटि कोड: नोस्च टाईप उपलब्ध है), ट्रांसफ़ॉर्मेशन डायग्नोस्टिक: रिक्त: 17 डेटाटाइप PRECISION नहीं बना सकता (त्रुटि कोड: NoSuchType उपलब्ध), ट्रांसफ़ॉर्मेशन डायग्नोस्टिक: नल: 19 डेटाटाइप हाइपरिएशन नहीं बनाया जा सकता (त्रुटि कोड: नोस्चटाइप उपलब्ध है), ट्रांसफ़ॉर्मेशन डायग्नोस्टिक: रिक्त: 20 डेटाटाइप नहीं बना सकता है MEDIUM_PRECISION (त्रुटि कोड: नोस्चटाइप उपलब्ध है), ट्रांसफ़ॉर्मेशन डायग्नॉस्टिक: रिक्त: 21 डेटाटाइप LOW_PRECISION नहीं बना सकता (त्रुटि कोड: नोस्चटाइप उपलब्ध)]

दो एक्सटेक्स्ट फाइल हैं:

व्याकरण

grammar org.xvr.language.sh.ShaderDsl with org.xvr.language.sh.ShTerminal //org.eclipse.xtext.common.Terminals

generate shaderDsl "http://www.xvr.org/language/sh/ShaderDsl"
....

और व्याकरण के टर्मिनल

grammar org.xvr.language.sh.ShTerminals with org.eclipse.xtext.common.Terminals
generate shTerminals "http://www.xvr.org/language/sh/ShTerminals"

terminal Test : 'test';