Language Engineering For Everyone! Eclipse Xtext™ is a framework for development of programming languages and domain-specific languages. With Xtext™ you define your language using a powerful grammar language. As a result you get a full infrastructure, including parser, linker, typechecker, compiler as well as editing support for Eclipse, any editor that supports the Language Server Protocol and yo
関数型プログラミング言語とコード生成 HaskellやOCamlなどはコンパイラなどの言語処理系の実装を得意としている。さすがに日常的にコンパイラを実装している人はそう多くないと思うけど、例えばコード自動生成はすぐ試せる割に効き目が大きく、仕事を効率化する方法としてぜひ試してみたい選択肢だ。 今回は、Haskellの言語内DSLからC言語のコードを生成する方法(の一つ)を簡単に紹介する。 この方法で、Haskell上のEDSLを使って (1) C言語のソースコードを生成でき、 (2) Haskellの式として評価できる。 このように、わざわざパーサを書かなくても、コンビネータを適当に作ればすぐにDSLを作ってしまえるのも、関数型言語の魅力かもしれない。 taglessな方法 ただし、ちょっと他と違う方法を試す。 OlegさんのサイトにTyped Tagless Interpretation
マーチンファウラーのDSLの本(厚い黒本)を読んだので、まとめのマインドマップを描いた。画像をクリックすると拡大します。(astah share で詳しく見れます。こちら。) 最近、Rubyist がまわりに増えて、内部DSLをRubyで作るのが楽しそう。Rubyはメタプログラミングに加えて、豊富なリテラル(MapやList)、ブロック、シンボルをうまく使えることなどもあって、すごくきれいなシンタクスのまま、DSLをサポートできる。 この本では、"Part I"がWhatとWhyに集中してかかれていて、他のパートはDSL設計者のためのパターン集。パート1では、DSLの定義やSemantic Modelの意味、そして、なぜDSLをつかうか、DSLの3つのガテゴリなどが書かれている。 All the DSL does is provide a readable way of populatin
チェコのソフトウェアベンダーJetBrainsは7月24日(現地時間)、目的に応じてプログラミング言語を作成/拡張できるソフトウェア開発環境の正式版「JetBrains Meta Programming System(MPS)1.0」を発表した。言語指向プログラム(LOP)という新しいコンセプトを土台にしたもので、初の正式版となる。Windows、Mac、Linuxに対応、ビルドやソースコードを同社Webサイトより入手できる。 MPSは、同社が2003年に研究プロジェクトとして開発したLOPに基づく開発環境。MPSを利用することで、クラスやメソッドを作成する感覚で目的に応じたプログラミング/データ記述言語(ドメイン固有言語、DSL)を容易に開発できる。DSLはソフトウェア開発や既存言語の拡張に利用できるという。JetBrains社内でも、MPSを利用して製品を開発しているとのことだ。 MP
得るものの多いカンファレンスでした。 スタッフの方、講演者の方、参加者の方、おつかれさまでした。 会場で取ったメモを置いておきます。 正確性はまったくあてになりませんので、そのあたりご承知のうえ、だまされたつもりでご利用いただければ。 あとプレゼン資料のメモが多く、著作権的にフェアユースの範疇なのかちょっとよくわかりません。ご指摘あれば対応させていただこうかと考えています。 一日目: オープニング QCon / InfoQ の説明と、午後のマルチトラックセッションの紹介 Rubyトラックは角谷さん 一日目: 午前1: ドメイン固有言語 −その役割− / Martin Fowler DSLについての本をもう2年くらい書いている 年内いっぱいはかかりそう DSLs are everywhere RegEx, make, LINQ, rake, ant, css, SQL, graphwiz .
最近はすっかりScalaプログラマ。代表作はXML SmartDoc(XML文書処理システム),Relaxer(XML/Javaスキーマコンパイラ)。現在はScala DSLモデルコンパイラSimpleModelerを開発中。近著は「上流工程UMLモデリング」(日経BP),「マインドマップではじめるモデリング講座」(翔泳社)。モデル駆動開発×クラウド・コンピューティングの研究プロジェクトedge2.cc(Edge to Cloud Computing)を中心に活動中。 1 はじめに 2 例題 2.1 コンパイル 2.2 アプリケーション 3 DSLの説明 3.1 クラス宣言 3.2 基本情報 3.3 申請情報 3.3.1 字句上の工夫 3.3.2 by-nameパラメタ 3.3.3 施設と設備 3.3.4 同時使用 4 JSON,XMLとの比較 4.1 JSON 4.2 XML 5 メイン
Railsフレームワークは、Rubyで書かれたWebアプリケーションを管理するための、RubyベースのDSLと呼ばれています。RailsがDSLと呼ばれる理由の一つは、汎用的な目的のRuby言語とは対照的にRailsがプログラミングでは無いように思えるのに対して、Ruby言語の機能のいくつかがプログラミングをするのに利用されているからです。言語として考えたとき、その基盤がそれ自体で言語となるのにとても有利なスタートであるとして、RailsはRuby上で作られました。 Dave Thomas (PragDave)が、Rails全体をDSLとして考えているのかは私にはわかりません。しかし、Railsのいくつかの機能が異なるDSLによって支えられていると彼は言っています。彼が示す例は、DSLとしてのActive Record宣言です。ドメインモデルのエンティティの関連に特有な、いくつかの単純な専
Narratives An Introductory Example: Using Domain Specific Languages: Implementing DSLs: Implementing an Internal DSL: Implementing an External DSL: Code Generation: External DSL Topics Delimiter Directed Translation: Translate source text by breaking it up into chunks (usually lines) and then parsing each line. (Syntax Directed Translation): Translate source text by defining a grammar, and u
The 'Language' in Domain-Specific Language Doesn't Mean English (or French, or Japanese, or ...) I'm a really big fan of Domain-Specific Languages. Andy and I plugged them back in '98 when writing The Pragmatic Programmer. I've written my share of them over the years, and I've used even more. Which is why it is distressing to see that a whole group of developers are writing DSLs (and discussing DS
Rake is a build language, similar in purpose to make and ant. Like make and ant it's a Domain Specific Language, unlike those two it's an internal DSL programmed in the Ruby language. In this article I introduce rake and describe some interesting things that came out of my use of rake to build this web site: dependency models, synthesized tasks, custom build routines and debugging the build script
最近はすっかりScalaプログラマ。代表作はXML SmartDoc(XML文書処理システム),Relaxer(XML/Javaスキーマコンパイラ)。現在はScala DSLモデルコンパイラSimpleModelerを開発中。近著は「上流工程UMLモデリング」(日経BP),「マインドマップではじめるモデリング講座」(翔泳社)。モデル駆動開発×クラウド・コンピューティングの研究プロジェクトedge2.cc(Edge to Cloud Computing)を中心に活動中。 1 はじめに 2 例題 2.1 コンパイル 2.2 アプリケーション 3 DSLの説明 3.1 クラス宣言 3.2 基本情報 3.3 申請情報 3.3.1 字句上の工夫 3.3.2 by-nameパラメタ 3.3.3 施設と設備 3.3.4 同時使用 4 JSON,XMLとの比較 4.1 JSON 4.2 XML 5 メイン
今回は内部DSLの詳細、またその実践としてRubyを例にした実装について解説します。 内部DSLに適した言語 - Ruby 2005年12月にRuby on Railsの正式版のリリース以降、そのフレームワークのみならず、プログラミング言語Rubyを支持、採用するプログラマーが増えてきました。 そのことを端的に表しているのが、達人クラスのプログラマー、そしてアーキテクトの存在です。一人は『達人プログラマー[1]』『プログラミングRuby[2]』などの著書で知られているDave Thomas氏です。もう一人は『エンタープライズ アプリケーションアーキテクチャパターン[3]』などで著名なアーキテクト Martin Fowler氏です。Fowler氏が属している会社 - ThoughtWorks社[4]の多くのプロジェクトは、Rubyで開発していると聞いてます。 なぜ、彼等は、Ruby
第1回目は、DSLの基本的な概念について説明します。 DSL概要 DSL(Domain Specific Language)は、ドメイン固有言語と訳されてます。DSLは、Java、C#などの汎用言語とは違い、ある特定の種類の問題に特化したコンピュータ言語です。 今回の連載では、DSLの世界を解き明かします。そして、実際にDSLをつくることで、よりDSLの理解を深め、「用法・用量を守って使える」ようになるのが、今回のゴールです。 DSLの必要性 なぜ、DSLを学ぶ必要があるのでしょうか。 Ruby on Railsの登場以降、メタプログラミングという言葉を良く聞くようになりました。メタプログラミングというと、マクロ、コードの自動生成、テンプレートを上げることができます。 DSLは、メタプログラミングで使われます。メタプログラミングは、一般的なプログラムとはまったく違った方法をとっているので
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く