View
2.800
Download
0
Embed Size (px)
DESCRIPTION
第2回APASEC+第2期サイボウズ・ラボユース合同勉強会 ( http://atnd.org/events/36798 ) での発表です. このブログ記事の発展ネタです → http://swatmac.info/?p=1013 デモと口頭メインなので,資料は物足りないかも(追記する可能性は微小にある)
Citation preview
正規言語と
プログラミングRyoma Sin’ya @ Tokyo Tech
Friday, March 29, 13
世の中には色んなプログラミング・パラダイムがありますね
手続き型オブジェクトしこーラムダ計算制約論理型プログラミング項書換えシステムカテゴリカル・プログラミング
Friday, March 29, 13
新しいパラダイムを提案したい!
しかも「正規言語」を使って!!
正規表現はプログラミング言語達の手下じゃない!
Friday, March 29, 13
正規言語で
プログラミングRyoma Sin’ya @ Tokyo Tech
Friday, March 29, 13
はじめに宣伝!
Friday, March 29, 13
僕が開発した「RANS」
正規表現を与えて「受理文字列」と「自然数」を対応させるツール
Friday, March 29, 13
僕が開発した「RANS」
正規表現を与えて「受理文字列」と「自然数」を対応させるツール
「対応」って何?
Friday, March 29, 13
文字列と数の対応例:正規表現/a*(ba*b)*a*/ で「対応」を取ると...
Friday, March 29, 13
文字列と数の対応例:正規表現/a*(ba*b)*a*/ で「対応」を取ると...
/a*(ba*b)*a*/
Friday, March 29, 13
文字列と数の対応例:正規表現/a*(ba*b)*a*/ で「対応」を取ると...
/a*(ba*b)*a*/長さ--辞書順で並べる
Friday, March 29, 13
文字列と数の対応例:正規表現/a*(ba*b)*a*/ で「対応」を取ると...
/a*(ba*b)*a*/={!, a, aa, bb, aaa, abb, bab, ... }長さ--辞書順で並べる
Friday, March 29, 13
文字列と数の対応例:正規表現/a*(ba*b)*a*/ で「対応」を取ると...
/a*(ba*b)*a*/={!, a, aa, bb, aaa, abb, bab, ... }長さ--辞書順で並べる
0, 1, 2, 3, 4, 5, ....................
....................
Friday, March 29, 13
で,プログラミングは?
Friday, March 29, 13
プログラミング言語Grass
“w”と“W”と“v”の三文字でプログラミングする言語
ちょっと草植えときますね型言語 (新パラダイム?)
Friday, March 29, 13
プログラミング言語Grass
“w”と“W”と“v”の三文字でプログラミングする言語
ちょっと草植えときますね型言語 (新パラダイム?)
つまり「ネタ言語」!!
Friday, March 29, 13
プログラミング言語Grass
“w”と“W”と“v”の三文字でプログラミングする言語
ちょっと草植えときますね型言語 (新パラダイム?)
つまり「ネタ言語」!!
Friday, March 29, 13
Grassはネタじゃない!
当たり前にちゅーりんぐ完全(型無しラムダ計算がベース)
しかも... 文法が正規!!!!
Friday, March 29, 13
しかも文法が正規!!!
Friday, March 29, 13
しかも文法が正規!!!
BNFで書かれてるけどこれは正規!!!!!!!!(プロなら一瞬で分かる)
Friday, March 29, 13
しかも文法が正規!!!
/([vw]*(W+w)*)*/
0 1w 2W
[v-w] W
w
Friday, March 29, 13
Grassで「Hello, World」wwvwwwWWWwwWwwWWWWwvwWWwwwWwwvwWwwwWwwvwWWwWWWWWwvwWWWwwwwWWWWwWWWWwWWWWWWwWWWWWWWwWWWWWWWwWWWWWWWWwWwwwwwwwwvwWWWwwwwwWWWWWwWWWWWwWWWWWWWwWWWWWWWWwWWWWWWWWWwWwwwwwwwvwWWWWwwwwwwWWWWWWwWWWWWWwWWWWWWWwWWWWWWWWWwWWWWWWWWWwWwwwwwwwvwWWWWWwwwwwwwWWWWWWWwWWWWWWWWwWWWWWWWWwWWWWWWWWWWwWWWWWWWWWWwWwwwwwwwvwWWWWWWWwwwwwwwwWWWWWWWWwWWWWWWWWWwWWWWWWWWWwWWWWWWWWWWWwWwwwwwwvwWWWWWWWWwwwwwwwwwWWWWWWWWwWWWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwwwvwWWWWWWWWwwwwwwwwwwWWWWWWWWWwWWWWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwwvwWWWWWWWWWWwwwwwwwwwwwWWWWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwvwWWWWWWWWWWwwwwwwwwwwwwWWWWWWWWWWWWwWWWWWWWWWWWWWwWWWWWWWWWWWWWWwWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWwWwwwwwwwvwWWWWWWWWWWwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwWWWwwwwwwwwwwwwwwwwwwwWwwWWWWWWWWWWWWWWWWWWWWwvwWWwwwwWWWwwwwwwwwwwWWWWwwwwwwwwwwWWWWWwwwwwwwwwwwwwWWWWWWwwwwwwwWWWWWWWwwwwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwvwWWWWWWWWWWWWWWWWwwwwwwwWwwvwWWWWwwwwwwwWWWWWwwwWWWWWWwwwwwwwWWWWWWWwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwWWWWWW
WWWwwwwwwwwwwwwwwvwWWwWWWWWw
Friday, March 29, 13
Grassで「Hello, World」wwvwwwWWWwwWwwWWWWwvwWWwwwWwwvwWwwwWwwvwWWwWWWWWwvwWWWwwwwWWWWwWWWWwWWWWWWwWWWWWWWwWWWWWWWwWWWWWWWWwWwwwwwwwwvwWWWwwwwwWWWWWwWWWWWwWWWWWWWwWWWWWWWWwWWWWWWWWWwWwwwwwwwvwWWWWwwwwwwWWWWWWwWWWWWWwWWWWWWWwWWWWWWWWWwWWWWWWWWWwWwwwwwwwvwWWWWWwwwwwwwWWWWWWWwWWWWWWWWwWWWWWWWWwWWWWWWWWWWwWWWWWWWWWWwWwwwwwwwvwWWWWWWWwwwwwwwwWWWWWWWWwWWWWWWWWWwWWWWWWWWWwWWWWWWWWWWWwWwwwwwwvwWWWWWWWWwwwwwwwwwWWWWWWWWwWWWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwwwvwWWWWWWWWwwwwwwwwwwWWWWWWWWWwWWWWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwwvwWWWWWWWWWWwwwwwwwwwwwWWWWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwvwWWWWWWWWWWwwwwwwwwwwwwWWWWWWWWWWWWwWWWWWWWWWWWWWwWWWWWWWWWWWWWWwWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWwWwwwwwwwvwWWWWWWWWWWwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwWWWwwwwwwwwwwwwwwwwwwwWwwWWWWWWWWWWWWWWWWWWWWwvwWWwwwwWWWwwwwwwwwwwWWWWwwwwwwwwwwWWWWWwwwwwwwwwwwwwWWWWWWwwwwwwwWWWWWWWwwwwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwvwWWWWWWWWWWWWWWWWwwwwwwwWwwvwWWWWwwwwwwwWWWWWwwwWWWWWWwwwwwwwWWWWWWWwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwWWWWWW
WWWwwwwwwwwwwwwwwvwWWwWWWWWw
16276174481634706127730787006880531370466380062973401969614529593658839588034299561019072802997488228415949574466048507125675902695500470444239679117615660403895503574832850368252492606680475482324809259888431440137005387911828231622152001940020161961290610781750518034051891012651593393183367228559192813007464702644798560118848397692667365050537949162937125903768151493422519792535824464997
03084436758664366464026061342507810037583
番目のGrassプログラム!!
Friday, March 29, 13
正規表現「で」プログラミング
正規表現(文法)を固定数字を喰わせればプログラムが得られる!
数字を固定正規表現(文法)を喰わせればプログラムが得られる!
Friday, March 29, 13
正規言語で
プログラミングRyoma Sin’ya @ Tokyo Tech
Friday, March 29, 13
説明が面倒くさいので終了
Friday, March 29, 13
説明が面倒くさいので終了
_人人人人人人人人人人人人人人_> アイディア述べて終了!! <‾Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y‾
Friday, March 29, 13
続きが気になる人は...
RANSのプロジェクトページをチェック!!http://sinya8282.github.com/RANS/
@sinya8282 に reply直接質問(これが一番)私のブログなど
http://swatmac.info
Friday, March 29, 13