Xtextのチュートリアルを試してみる。
|
|
Xtext 2.4.2で、Xtextのドキュメントの先頭に載っている『5 Minutes Tutorial』を試してみる。
項目 | 初期値 | 説明 |
---|---|---|
Project name | org.xtext.example.mydsl |
プロジェクト名 |
Language Name | org.xtext.example.mydsl.MyDsl |
“DSL”の名前 |
Language Extensions | mydsl |
“DSLファイル”の拡張子 |
これで、以下の3つのプロジェクトが作られる。
org.xtext.example.mydsl
org.xtext.example.mydsl.tests
org.xtext.example.mydsl.ui
そして、org.xtext.example.mydsl/src/org.text.example.mydsl/MyDsl.xtext
というファイルが作られている。
そのファイルの中身(DSL定義)は以下の様になっている。
grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals generate myDsl "http://www.xtext.org/example/mydsl/MyDsl" Model: greetings+=Greeting*; Greeting: 'Hello' name=ID '!';
このファイルによって定義されているDSLは、「'Hello'
で始まり、適当な文字列(name)があり、末尾が'!'
」という文(Greeting)が0個以上、というもの。
“DSL定義”から実行環境を生成する。
MyDsl.xtext
を選択する。0 [main] INFO lipse.emf.mwe.utils.StandaloneSetup - Registering platform uri 'D:\data\workspace'
41 [main] INFO lipse.emf.mwe.utils.StandaloneSetup - Adding generated EPackage 'org.eclipse.xtext.xbase.XbasePackage'
152 [main] INFO clipse.emf.mwe.utils.GenModelHelper - Registered GenModel 'http://www.eclipse.org/Xtext/Xbase/XAnnotations' from 'platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel'
154 [main] INFO clipse.emf.mwe.utils.GenModelHelper - Registered GenModel 'http://www.eclipse.org/xtext/xbase/Xtype' from 'platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel'
158 [main] INFO clipse.emf.mwe.utils.GenModelHelper - Registered GenModel 'http://www.eclipse.org/xtext/xbase/Xbase' from 'platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel'
158 [main] INFO clipse.emf.mwe.utils.GenModelHelper - Registered GenModel 'http://www.eclipse.org/xtext/common/JavaVMTypes' from 'platform:/resource/org.eclipse.xtext.common.types/model/JavaVMTypes.genmodel'
*ATTENTION*
It is recommended to use the ANTLR 3 parser generator (BSD licence - http://www.antlr.org/license.html).
Do you agree to download it (size 1MB) from 'http://download.itemis.com/antlr-generator-3.2.0.jar'? (type 'y' or 'n' and hit enter)
136251 [main] INFO erator.parser.antlr.AntlrToolFacade - downloading file from 'http://download.itemis.com/antlr-generator-3.2.0.jar' ... 143753 [main] INFO erator.parser.antlr.AntlrToolFacade - finished downloading. 143759 [main] INFO ipse.emf.mwe.utils.DirectoryCleaner - Cleaning D:\data\workspace\org.xtext.example.mydsl\..\org.xtext.example.mydsl\src-gen 143759 [main] INFO ipse.emf.mwe.utils.DirectoryCleaner - Cleaning D:\data\workspace\org.xtext.example.mydsl\..\org.xtext.example.mydsl.ui\src-gen 143760 [main] INFO ipse.emf.mwe.utils.DirectoryCleaner - Cleaning D:\data\workspace\org.xtext.example.mydsl\..\org.xtext.example.mydsl.tests\src-gen 143857 [main] INFO ipse.xtext.generator.LanguageConfig - generating infrastructure for org.xtext.example.mydsl.MyDsl with fragments : ImplicitRuntimeFragment, ImplicitUiFragment, GrammarAccessFragment, EcoreGeneratorFragment, SerializerFragment, ResourceFactoryFragment, XtextAntlrGeneratorFragment, ValidatorFragment, ImportNamespacesScopingFragment, QualifiedNamesFragment, BuilderIntegrationFragment, GeneratorFragment, FormatterFragment, LabelProviderFragment, OutlineTreeProviderFragment, QuickOutlineFragment, QuickfixProviderFragment, ContentAssistFragment, XtextAntlrUiGeneratorFragment, Junit4Fragment, RefactorElementNameFragment, TypesGeneratorFragment, XbaseGeneratorFragment, CodetemplatesGeneratorFragment, CompareFragment 144524 [main] INFO clipse.emf.mwe.utils.GenModelHelper - Registered GenModel 'http://www.xtext.org/example/mydsl/MyDsl' from 'platform:/resource/org.xtext.example.mydsl/src-gen/org/xtext/example/mydsl/MyDsl.genmodel' 145739 [main] INFO text.generator.junit.Junit4Fragment - generating Junit4 Test support classes 145753 [main] INFO text.generator.junit.Junit4Fragment - generating Compare Framework infrastructure 145844 [main] INFO .emf.mwe2.runtime.workflow.Workflow - Done.※このダウンロードが行われる(ATTENTIONが出る)のは初回のみ。
“DSL定義”で定義されたDSLを入力する為のエディターを起動してみる。
org.xtext.example.mydsl
」プロジェクトを選択する。Hello World!
」とか入力してみると、「Hello」の部分に色が付く。