S-JIS[2013-08-14/2013-08-17] 変更履歴

Xtextチュートリアル

Xtextのチュートリアルを試してみる。


5 Minutes Tutorial

Xtext 2.4.2で、Xtextのドキュメントの先頭に載っている『5 Minutes Tutorial』を試してみる。

プロジェクトの作成

  1. メニューバーの「File」→「New」→「Project」で、「New Project」ダイアログを開く。
  2. ツリーから「Xtext」→「Xtext Project」を選択して、Nextボタンを押す。
  3. プロジェクトの情報を入力する。
    項目 初期値 説明
    Project name org.xtext.example.mydsl プロジェクト名
    Language Name org.xtext.example.mydsl.MyDsl “DSL”の名前
    Language Extensions mydsl “DSLファイル”の拡張子
  4. Finishボタンを押す。

これで、以下の3つのプロジェクトが作られる。

そして、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定義”から実行環境を生成する。

  1. パッケージエクスプローラー上でMyDsl.xtextを選択する。
  2. 右クリックして開くコンテキストメニューから「Run As」→「Generate Xtext Artifacts」を選択する。
  3. すると、コンソールに何やらメッセージが出力される。
    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)
  4. (コンソールをクリックして)コンソールにフォーカスを当て、「y」(と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を入力する為のエディターを起動してみる。

  1. テスト実行用Eclipseを起動する。
    1. パッケージエクスプローラー上で「org.xtext.example.mydsl」プロジェクトを選択する。
    2. ツールバーの「実行」ボタンを押す。(もしくは、メニューバーの「Run」→「Run」)
      これで、新しいEclipseが起動する。
  2. 新しく起動したEclipse上でエディターを開く。
    1. メニューバーの「File」→「New」→「Project」で、「New Project」ダイアログを開く。
    2. 適当なプロジェクトを作成する。(「General」→「Project」とか)
    3. 作ったプロジェクト上で新しいファイルを作成する。このとき、ファイルの拡張子は「mydsl」とする。
    4. 作ったファイルを右クリックし、コンテキストメニューの「Open With」→「MyDsl Editor」を選択すると、エディターが開く。
      (MyDsl Editorが無いときは、「Open With」→「Other」で「Editor Selection」ダイアログを開き、 「MyDsl Editor」を選択する。
       ダイアログ内にも「MyDsl Editor」が存在しない場合は、ビルドが失敗しているものと思われる)
  3. 開いたエディターに適当に文字を入力してみる。

Xtext目次へ戻る / Eclipseへ戻る / 技術メモへ戻る
メールの送信先:ひしだま