2017-05-07 44 views
0

目前我正在爲我的DSL寫一個解釋器,它是從eclipse應用程序中的菜單啓動的。解釋器讀取活動文件:xtext寫作和解釋器

IXtextDocument document = ((XtextEditor) activeEditor).getDocument().get(); (返回一個字符串)

然後我讀通過掃描儀活動文件一行行,但真的很難,閱讀所有的線,使交換機和IFS爲他們執行的每一個可能性。

當我在eclipse應用程序中讀取活動文件時,是否有一種方法可以使用我的語法信息(知道什麼是行:聲明,函數,...)? ,還是有沒有更好的方式來實現這一點,而不像正常的字符串讀取文件?

回答

0

IXtextDocument實現IReadAccess<XtextResource>接口,所以你應該能夠調用editor.document.readOnly(...),喜歡這裏:https://github.com/eclipse/xtext-eclipse/blob/01ffa30f58160e4c13cb193da3d1e21a40e0d508/org.eclipse.xtext.ui.tests/tests/org/eclipse/xtext/ui/tests/editor/SimpleEditorTest.java#L64

+0

我沒有你所說的話,但在這一點上,我試圖從資源 'TreeIterator獲取信息 contents = resource.getAllContents(); \t \t while(contents.hasNext()){ \t \t \t EObject o = contents.next(); \t \t \t console.out.println(o.eClass()。toString()); \t \t \t console.out.println(o.toString()); \t}' (console.out僅適用於我自己的控制檯中寫入),但輸出對於某些類型是奇怪的或不完整的,任何想法我應該如何爲我的解釋器讀取資源?非常感謝 – Aikas

+0

通常你會' resource.getContents()。get(0)'如果你沒有推斷的東西,只有一個根。之後,您將使用解釋器遍歷模型。如果文件有錯誤,模型可能會被破壞,您的解釋器應該能夠處理它。 –