More Related Content
More from Akira Tanaka (20)
Xtext 紹介
- 4. Xtext
概要
• どんなもの
– 元々は openArchitectureWare(oAW)
のサブプロジェ
クトの一つ
– oAWの持っていた複雑なworkflow記述言語などの簡
素化のため生まれた模様
– 開発元はドイツの itemis
AG
社
– Eclipse
Modeling
Project
に属する
– テキスト型
External
DSL
開発フレームワーク
– Xtend
言語を併用することで、モデル変換(m2m,
m2t)やコード生成を実現
- 5. Xtext
概要
• 技術の流れ
– oAW/Xpand/Xtend(1.0)
– oAW/Xpand/Xtend(1.0),
Xtext
– Eclipse/Xtext/Xpand/Xtend(1.0)
– Eclipse/Xtext(2.X)/Xtend(2.0),
Xbase
ターゲットを
Java
言語
に絞る方向
ターゲットプログラミング
言語特定せず
- 6. Xtext
概要
• プロジェクト所在場所
– hXp://www.eclipse.org/Xtext/
– hXp://www.eclipse.org/xtend/
– hXp://xtext.itemis.com/
• 国内活動
– 日本Xtextユーザ会
• hXps://groups.google.com/forum/#!forum/xtext-‐users-‐japan
• hXps://sites.google.com/site/xtextusersjapan/
– Xtext入門e-‐book
• hXp://www.beta-‐publish.com/
- 8. 準備作業
• インストール
– updateより全体をダウンロードした方が確実
– Ecore
Toolsを追加インストールしておくと作成した文法のecoreモデル
をビジュアルに確認できる(確認不要の方はインストール不要)
• 設定
– workspaceのencodingはUTF-‐8に設定する
– Run
configura3onを使う
– 入力方法(”«»”)
• その他
– Net上に多くのXtext情報があるが、本体が進化し続けているため、最
新版では動作しない場合も往々にしてある
– YoutubeやVimeoにも動画あり
– ドキュメンテーションは、まず現住所のものを確認しよう
– 疑問点はマニュアルの他に
forum
や stackoverflow
もチエックしよう
- 14. Xtext
文法例
Model:
(elements
+=
Element)*;
=
右側の規則が1回だけ呼び出される
+=
右側の規則が1回以上呼び出される(結果はリスト相当になります)
?=
右側の式が成立した場合、左側の式が真となる(ブーリアン)
?
0または1(つまりオプション)
*
0以上
+
1以上
規則の最後は“;”(セミコロン)で締めくくる
規則名
- 15. Xtext
文法例
Element:
Datatype
|
SimpleEn3ty
;
Datatype:
'type'
name=ID
;
terminal
ID
:
('^')?('a'..'z'|'A'..'Z'|'_')
('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
いずれか
ID
は mixin
した別文法で下のように規定される
- 20. サンプルプロジェクト紹介
• Gree3ng
– デフォルトの文法
• Domainmodel
– 簡単
En3ty
モデル
• Domainmodel2
– Package
と
Import
追加
• Domainmodel3
– Xtend
によるコード生成追加
• Domainmodel4
– JVM
言語化(Xbase他)
- 30. Tips
• メジャーリリース時に Xtext
の
Documenta3on
を印刷し手元に置いておくといろいろ便利(検
索には
HTML
が便利)
• Youtube
等の動画サイトに説明ビデオ有り
• Slideshare
等に説明スライド有り
• 参考になる各種プロジェクト
– hXp://www.eclipse.org/Xtext/community.html
- 32. 最後に
• モデリング手法のいろいろ
– UML
&
UML
Profile [UML
Tools]
– Metamodel
[EMF,
Ecore
Tools,
…
]
– DSL
[Xtext,
GMF,
…
]
• 道具立てが多少異なるだけで、やっていることは余り違わな
いような気がします
• どういう状況下でどれを使うかという選択になりそうです