Hatena::Diary

daiki CHIJIWAの日記 このページをアンテナに追加 RSSフィード

2009-04-26

[]インデント構造のパース

Pythonでインデント構造をパースしてみました。

これを使えば、インデントブロックな言語の構造解析が容易になりますね。


def parse(lines):
    def _map(proc, lis):
        if lis == []:
            return []
        return proc(lis[0]) + _map(proc, lis[1:])
    def parse_indent(s):
        for i in range(len(s)):
            if s[i] != " " and s[i] != "\n" and s[i] != "\t":
                return [[s[:i], s[i:]]]
        return []
    def tree(lines_data, c=""):
        i = 0
        f = 0
        struct = []
        while i < len(lines_data):
            if lines_data[i][0] != c:
                f = i
            elif lines_data[i][0] == c and f > 0:
                struct.append(["block"] + tree(lines_data[f:i], lines_data[f][0]))
                f = 0
                continue
            else:
                struct.append(["expr", lines_data[i]])
            i += 1
        if f > 0:
            struct.append(tree([a + b for a, b in lines_data[f:]], lines_data[f:][0]))
        return struct
    return tree(_map(parse_indent, lines))

if __name__ == "__main__":
    print parse("aaa\nbbb\n    ccc\nddd".split("\n"))

↓出力

[['expr', ['', 'aaa']], ['expr', ['', 'bbb']], ['block', ['expr', ['    ', 'ccc'
]]], ['expr', ['', 'ddd']]]

2009-04-12

[][]stringモジュール文字列操作

Erlangには、文字列操作のためのstringモジュールがあります。

それのメモです。


※実際に使用するときは、”string:”を頭に付けてください


2009-04-07

[]「数学入門(上・下)」が届いた

大西さんに薦められて思わず買ってしまった「数学入門(上・下)」が届きました!

曰く、「そもそも計算するとは何かがわかる」そうです。


通学時や学校の休み時間とかに読もうと思います。

2009-04-06

[]『P2P教科書』という本を購入

なんだか面白そうだったので。

『P2P教科書』

届くのが楽しみです!!



無印吉澤 - 書評:P2P教科書

によると、第1章は読み飛ばしてもいいそうです><

2009-04-05

[][]突発オンラインErlang勉強会終了!!

http://www.lingr.com/room/9OFKsml09bi/archives/2009/04/05

ログは↑にて読むことができます。


無事終えることができました。

ありがとうございます!

12:00から約10時間、お疲れ様でした!!><

参加者人数は30人以上でとても楽しい勉強会でした。


# Erlangだけではなく、Skip Graph やπ計算とかの勉強もしたのは内緒

[][]Skypeの『SIProp勉強会』というチャットグループに拉致られた\(^o^)/

P2Pについて語るチャットだそうです。


[0:30:07] Kazuyuki Shudoの発言: 昼間 URL が出た若者 (高専 1年生) を Twitter で follow してみた http://d.hatena.ne.jp/daiki41ti/about

[0:33:49] Noritsuna Imamuraの発言: 新番組 ストーカー準教授。

[0:34:20] Kazuyuki Shudoの発言: スカウト活動といってください (違

[0:34:37] Toshio Koideの発言: とりあえず、福岡はすごいってことで

[0:37:06] Kazuyuki Shudoの発言: (****) やらないか? みたいな

[0:38:27] Noritsuna Imamuraの発言: おー、響き的にはダメさがほとんどかわらないwww

[0:39:01] Noritsuna Imamuraの発言: 内容はすばらしいのにw

[0:40:41] Kazuyuki Shudoの発言: ストーカーとスカウト、似てる

[0:40:52] Kazuyuki Shudoの発言: ストウカ


こんな流れで俺を拉致したそうです。

ひどいですね。オトナって。







…冗談です。

ホントはメチャクチャ嬉しい!!><

こんなのやってる人とかもいて、とにかく感動しました><

ありがとうございます!!!


これからよろしくお願いします! >>SIPropの人達


よく分からないので質問してみた

[2:21:00] daiki41ti@突発オンラインErlang勉強会: このレベル高すぎる空間は一体何なんですか?><

[2:21:24] Toshio Koide: 私もよくわかりません、わたしも拉致された口です

[2:21:32] ohnishim: よくわかりません。モンハンしてました

[2:21:40] Noritsuna Imamura: たぶん、怪獣が暴れるためのスペースです。なので、逃げ遅れると焼け死にます。そんな空間です。


とてつもなくカオスだということだけ分かりました。