正規言語
                          と
                       プログラミング
                        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)*)*/
                                  [v-w]       W

                              w           W
                          0        1          2
                                          w




Friday, March 29, 13
Grassで「Hello, World」
                       wwvwwwWWWwwWwwWWWWwvwWWwwwWwwvwWwwwWwwvwWWwWWWWWwvwWWW
                       wwwwWWWWwWWWWwWWWWWWwWWWWWWWwWWWWWWWwWWWWWWWWwWw
                       wwwwwwwvwWWWwwwwwWWWWWwWWWWWwWWWWWWWwWWWWWWWWwWWWW
                       WWWWWwWwwwwwwwvwWWWWwwwwwwWWWWWWwWWWWWWwWWWWWWWwWW
                       WWWWWWWwWWWWWWWWWwWwwwwwwwvwWWWWWwwwwwwwWWWWWWWwWW
                       WWWWWWwWWWWWWWWwWWWWWWWWWWwWWWWWWWWWWwWwwwwwwwvwW
                       WWWWWWwwwwwwwwWWWWWWWWwWWWWWWWWWwWWWWWWWWWwWWWWW
                       WWWWWWwWwwwwwwvwWWWWWWWWwwwwwwwwwWWWWWWWWwWWWWWWWW
                       WwWWWWWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwww
                       vwWWWWWWWWwwwwwwwwwwWWWWWWWWWwWWWWWWWWWWwWWWWWWWW
                        WWWwWWWWWWWWWWWWWwWwwwwwwvwWWWWWWWWWWwwwwwwwwwwwWW
                       WWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwvwWWWWW
                       WWWWWwwwwwwwwwwwwWWWWWWWWWWWWwWWWWWWWWWWWWWwWWWWW
                       WWWWWWWWWwWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWwWwwww
                       wwwvwWWWWWWWWWWwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwWWW
                       wwwwwwwwwwwwwwwwwwwWwwWWWWWWWWWWWWWWWWWWWWwvwWWwwwwW
                       WWwwwwwwwwwwWWWWwwwwwwwwwwWWWWWwwwwwwwwwwwwwWWWWWWwwww
                        wwwWWWWWWWwwwwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwvwW
                        WWWWWWWWWWWWWWWwwwwwwwWwwvwWWWWwwwwwwwWWWWWwwwWWWW
                       WWwwwwwwwWWWWWWWwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwWWWWWW
                                     WWWwwwwwwwwwwwwwwvwWWwWWWWWw




Friday, March 29, 13
Grassで「Hello, World」
                       wwvwwwWWWwwWwwWWWWwvwWWwwwWwwvwWwwwWwwvwWWwWWWWWwvwWWW
                       wwwwWWWWwWWWWwWWWWWWwWWWWWWWwWWWWWWWwWWWWWWWWwWw
         1627617448163470612773078700688053137046638006297
                       wwwwwwwvwWWWwwwwwWWWWWwWWWWWwWWWWWWWwWWWWWWWWwWWWW
         3401969614529593658839588034299561019072802997488
                       WWWWWwWwwwwwwwvwWWWWwwwwwwWWWWWWwWWWWWWwWWWWWWWwWW
                       WWWWWWWwWWWWWWWWWwWwwwwwwwvwWWWWWwwwwwwwWWWWWWWwWW
         2284159495744660485071256759026955004704442396791
                       WWWWWWwWWWWWWWWwWWWWWWWWWWwWWWWWWWWWWwWwwwwwwwvwW
         1761566040389550357483285036825249260668047548232
                       WWWWWWwwwwwwwwWWWWWWWWwWWWWWWWWWwWWWWWWWWWwWWWWW
                       WWWWWWwWwwwwwwvwWWWWWWWWwwwwwwwwwWWWWWWWWwWWWWWWWW
         4809259888431440137005387911828231622152001940020
                       WwWWWWWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwww

         1619612906107817505180340518910126515933931833672
                       vwWWWWWWWWwwwwwwwwwwWWWWWWWWWwWWWWWWWWWWwWWWWWWWW
                        WWWwWWWWWWWWWWWWWwWwwwwwwvwWWWWWWWWWWwwwwwwwwwwwWW
         2855919281300746470264479856011884839769266736505
                       WWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwvwWWWWW

         0537949162937125903768151493422519792535824464997
                       WWWWWwwwwwwwwwwwwWWWWWWWWWWWWwWWWWWWWWWWWWWwWWWWW
                       WWWWWWWWWwWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWwWwwww
             03084436758664366464026061342507810037583
                       wwwvwWWWWWWWWWWwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwWWW
                       wwwwwwwwwwwwwwwwwwwWwwWWWWWWWWWWWWWWWWWWWWwvwWWwwwwW
                       WWwwwwwwwwwwWWWWwwwwwwwwwwWWWWWwwwwwwwwwwwwwWWWWWWwwww


                       番目のGrassプログラム!!
                        wwwWWWWWWWwwwwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwvwW
                        WWWWWWWWWWWWWWWwwwwwwwWwwvwWWWWwwwwwwwWWWWWwwwWWWW
                       WWwwwwwwwWWWWWWWwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwWWWWWW
                                     WWWwwwwwwwwwwwwwwvwWWwWWWWWw




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

正規言語でプログラミング

  • 1.
    正規言語 と プログラミング Ryoma Sin’ya @ Tokyo Tech Friday, March 29, 13
  • 2.
    世の中には色んなプログラミ ング・パラダイムがありますね 手続き型 オブジェクトしこー ラムダ計算 制約論理型プログラミング 項書換えシステム カテゴリカル・プログラミング Friday, March 29, 13
  • 3.
    新しいパラダイムを提案し たい! しかも「正規言語」を使っ て!! 正規表現はプログラミング言語達の 手下じゃない! Friday, March 29, 13
  • 4.
    正規言語 で プログラミング Ryoma Sin’ya @ Tokyo Tech Friday, March 29, 13
  • 5.
  • 6.
    僕が開発した「RANS」 正規表現を与えて 「受理文字列」と「自然数」 を対応させるツール Friday, March 29, 13
  • 7.
    僕が開発した「RANS」 正規表現を与えて 「受理文字列」と「自然数」 を対応させるツール 「対応」って何? Friday, March 29, 13
  • 8.
    文字列と数の対応 例:正規表現/a*(ba*b)*a*/ で「対応」を取ると... Friday, March 29, 13
  • 9.
    文字列と数の対応 例:正規表現/a*(ba*b)*a*/ で「対応」を取ると... /a*(ba*b)*a*/ Friday, March 29, 13
  • 10.
    文字列と数の対応 例:正規表現/a*(ba*b)*a*/ で「対応」を取ると... 長さ--辞書順で並べる /a*(ba*b)*a*/ Friday, March 29, 13
  • 11.
    文字列と数の対応 例:正規表現/a*(ba*b)*a*/ で「対応」を取ると... 長さ--辞書順で並べる /a*(ba*b)*a*/={!, a, aa, bb, aaa, abb, bab, ... } Friday, March 29, 13
  • 12.
    文字列と数の対応 例:正規表現/a*(ba*b)*a*/ で「対応」を取ると... 長さ--辞書順で並べる /a*(ba*b)*a*/={!, a, aa, bb, aaa, abb, bab, ... } ................... 0, 1, 2, 3, 4, 5, ................... Friday, March 29, 13
  • 13.
    で, プログラミングは? Friday, March 29, 13
  • 14.
    プログラミング言語Grass “w”と“W”と“v”の三文字でプ ログラミングする言語 ちょっと草植えときますね型言 語 (新パラダイム?) Friday, March 29, 13
  • 15.
    プログラミング言語Grass “w”と“W”と“v”の三文字でプ ログラミングする言語 ちょっと草植えときますね型言 語 (新パラダイム?) つまり「ネタ言語」!! Friday, March 29, 13
  • 16.
    プログラミング言語Grass “w”と“W”と“v”の三文字でプ ログラミングする言語 ちょっと草植えときますね型言 語 (新パラダイム?) つまり「ネタ言語」!! Friday, March 29, 13
  • 17.
    Grassはネタじゃない! 当たり前にちゅーりんぐ完全 (型無しラムダ計算がベース) しかも... 文法が正規!!!! Friday, March 29, 13
  • 18.
  • 19.
    しかも文法が正規!!! BNFで書かれてるけど これは正規!!!!!!!! (プロなら一瞬で分かる) Friday, March 29, 13
  • 20.
    しかも文法が正規!!! /([vw]*(W+w)*)*/ [v-w] W w W 0 1 2 w Friday, March 29, 13
  • 21.
    Grassで「Hello, World」 wwvwwwWWWwwWwwWWWWwvwWWwwwWwwvwWwwwWwwvwWWwWWWWWwvwWWW wwwwWWWWwWWWWwWWWWWWwWWWWWWWwWWWWWWWwWWWWWWWWwWw wwwwwwwvwWWWwwwwwWWWWWwWWWWWwWWWWWWWwWWWWWWWWwWWWW WWWWWwWwwwwwwwvwWWWWwwwwwwWWWWWWwWWWWWWwWWWWWWWwWW WWWWWWWwWWWWWWWWWwWwwwwwwwvwWWWWWwwwwwwwWWWWWWWwWW WWWWWWwWWWWWWWWwWWWWWWWWWWwWWWWWWWWWWwWwwwwwwwvwW WWWWWWwwwwwwwwWWWWWWWWwWWWWWWWWWwWWWWWWWWWwWWWWW WWWWWWwWwwwwwwvwWWWWWWWWwwwwwwwwwWWWWWWWWwWWWWWWWW WwWWWWWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwww vwWWWWWWWWwwwwwwwwwwWWWWWWWWWwWWWWWWWWWWwWWWWWWWW WWWwWWWWWWWWWWWWWwWwwwwwwvwWWWWWWWWWWwwwwwwwwwwwWW WWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwvwWWWWW WWWWWwwwwwwwwwwwwWWWWWWWWWWWWwWWWWWWWWWWWWWwWWWWW WWWWWWWWWwWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWwWwwww wwwvwWWWWWWWWWWwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwWWW wwwwwwwwwwwwwwwwwwwWwwWWWWWWWWWWWWWWWWWWWWwvwWWwwwwW WWwwwwwwwwwwWWWWwwwwwwwwwwWWWWWwwwwwwwwwwwwwWWWWWWwwww wwwWWWWWWWwwwwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwvwW WWWWWWWWWWWWWWWwwwwwwwWwwvwWWWWwwwwwwwWWWWWwwwWWWW WWwwwwwwwWWWWWWWwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwWWWWWW WWWwwwwwwwwwwwwwwvwWWwWWWWWw Friday, March 29, 13
  • 22.
    Grassで「Hello, World」 wwvwwwWWWwwWwwWWWWwvwWWwwwWwwvwWwwwWwwvwWWwWWWWWwvwWWW wwwwWWWWwWWWWwWWWWWWwWWWWWWWwWWWWWWWwWWWWWWWWwWw 1627617448163470612773078700688053137046638006297 wwwwwwwvwWWWwwwwwWWWWWwWWWWWwWWWWWWWwWWWWWWWWwWWWW 3401969614529593658839588034299561019072802997488 WWWWWwWwwwwwwwvwWWWWwwwwwwWWWWWWwWWWWWWwWWWWWWWwWW WWWWWWWwWWWWWWWWWwWwwwwwwwvwWWWWWwwwwwwwWWWWWWWwWW 2284159495744660485071256759026955004704442396791 WWWWWWwWWWWWWWWwWWWWWWWWWWwWWWWWWWWWWwWwwwwwwwvwW 1761566040389550357483285036825249260668047548232 WWWWWWwwwwwwwwWWWWWWWWwWWWWWWWWWwWWWWWWWWWwWWWWW WWWWWWwWwwwwwwvwWWWWWWWWwwwwwwwwwWWWWWWWWwWWWWWWWW 4809259888431440137005387911828231622152001940020 WwWWWWWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwww 1619612906107817505180340518910126515933931833672 vwWWWWWWWWwwwwwwwwwwWWWWWWWWWwWWWWWWWWWWwWWWWWWWW WWWwWWWWWWWWWWWWWwWwwwwwwvwWWWWWWWWWWwwwwwwwwwwwWW 2855919281300746470264479856011884839769266736505 WWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWwwwwwvwWWWWW 0537949162937125903768151493422519792535824464997 WWWWWwwwwwwwwwwwwWWWWWWWWWWWWwWWWWWWWWWWWWWwWWWWW WWWWWWWWWwWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWwWwwww 03084436758664366464026061342507810037583 wwwvwWWWWWWWWWWwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwWWW wwwwwwwwwwwwwwwwwwwWwwWWWWWWWWWWWWWWWWWWWWwvwWWwwwwW WWwwwwwwwwwwWWWWwwwwwwwwwwWWWWWwwwwwwwwwwwwwWWWWWWwwww 番目のGrassプログラム!! wwwWWWWWWWwwwwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwvwW WWWWWWWWWWWWWWWwwwwwwwWwwvwWWWWwwwwwwwWWWWWwwwWWWW WWwwwwwwwWWWWWWWwwwwwwwwWWWWWWWWwwwwwwwwwwwwwwWWWWWW WWWwwwwwwwwwwwwwwvwWWwWWWWWw Friday, March 29, 13
  • 23.
    正規表現「で」プログラミング 正規表現(文法)を固定 数字を喰わせればプログ ラムが得られる! 数字を固定 正規表現(文法)を喰 わせればプログラムが 得られる! Friday, March 29, 13
  • 24.
    正規言語 で プログラミング Ryoma Sin’ya @ Tokyo Tech Friday, March 29, 13
  • 25.
  • 26.
    説明が面倒くさいので終了 _人人人人人人人人人人人人人人_ > アイディア述べて終了!! <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄ Friday, March 29, 13
  • 27.
    続きが気になる人は... RANSのプロジェクトページをチェッ ク!! http://sinya8282.github.com/RANS/ @sinya8282 に reply 直接質問(これが一番) 私のブログなど http://swatmac.info Friday, March 29, 13