タグ

pythonとimplementationに関するyouzのブックマーク (5)

  • ((Pythonで) 書く ((さらに良い) Lisp) インタプリタ)

    ((Pythonで) 書く ((さらに良い) Lisp) インタプリタ) Peter Norvig / 青木靖 訳 前のエッセイでは、90行のPythonコードでシンプルなLispインタプリタを書く方法を示した(lis.py)。このエッセイでは、3倍込み入っているが、より完全なlispy.pyを実装しよう。それぞれの節で1つの機能追加を扱っている。 (1) 新しいデータ型 - 文字列、論理型、複素数、ポート Lispyへの新しいデータ型の追加は3つの部分からなる。データの内部表現、それを扱う手続き、読み書きのためのシンタックスだ。ここでは4つの型を追加する(入力ポート以外はPythonのネイティブ表現をそのまま使う)。 文字列 文字列リテラルはダブルクォーテーションで囲まれる。文字列の中で \n は改行を、\" はダブルクォーテーションを意味する。論理型  構文 #t と #f はTrue

  • Logo基礎文法最速実装 - みねこあ

    結構頑張って書いた Logo基礎文法最速マスター ですが、はてな的プログラミング言語人気ランキング ですと、最下位らへんをさまよっておりまする...。おかしいな、これでLogo 人口がグングン増して、今週末はみんなしてタートルで遊んでいる プチLOGOブームがやってくるハズだったのに...。こんなハズじゃなかった。 というわけで、テコ入れです。 今回の記事は Logoの基礎文法を実装してしまえ、という試みです。だって、 他のLisp言語をある程度知っている人はこれを読めば Logo の基礎をマスターして Logo 処理系を書くことができるようになります。 Logo基礎文法最速マスター :接触編 - みねこあ なんて行った手前もありますし、やっぱり文法を理解するには実装するのが一番です!これなら はてなーさん にも人気でるかな?自分で作った処理には愛着も沸きますしね。 名付けて 「Logo基

    Logo基礎文法最速実装 - みねこあ
  • 正規表現エンジンを作ろう (2)〜NFAとDFAを実装する〜:CodeZine

    はじめに こんにちは。hirataraです。 稿は、正規表現エンジン作成の第2回目です。前回は正規表現の数学的な側面を説明しました。今回は正規表現エンジンの実際の評価器となる、NFAとDFAを実装します。 対象読者 正規表現をもっと知りたい方 情報科学分野に興味がある方 正規表現エンジンを実装する必要がある方 必要な環境 サンプルはPython2.5で開発しましたが、2.4の環境でも動くはずです。 Python2.5 が動作する環境 実装する正規表現の仕様 今回から正規表現エンジンの実装に入りますが、実際に手を動かし始める前に、到達すべきゴールを明確にしておきましょう。まず、連載中に実装する正規表現の仕様を決定します。この連載では数学的な定義である3つの正規表現のみを実装し、正規表現が当にDFAと等価であり、DFAをシミュレートすることで実装できることを確かめます。 文法 これから作る

    正規表現エンジンを作ろう (2)〜NFAとDFAを実装する〜:CodeZine
  • 草植えてみましたwWWwwww - 西尾泰和のはてなダイアリー

    wWWWwWWWWwv wWWwWWWwv wWWwWWWwv wWWwWWWwv wWWwWWWwv wWWwWWWwv wWWwWWWwv wWWWwWWWWwv wWWwwwwwwwwwwwwWWWWWWwWWWWWWwWWWWWWWWWwWWWWWWWWW WWWWWWwWWWWWWWWWWWWWwWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWww wwwWWWWWWWWWWWWWWWWwwwwwwwWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWwWWWW WWWWWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwWWWWWWWWWWWWW WWWWWWWWwWWWWWWWWWWWWWWWWWWWWWwwWWWWWWWWWWWWWWWWWWWWWW

    草植えてみましたwWWwwww - 西尾泰和のはてなダイアリー
  • PythonでLISPっぽい何かを作ってみた - ラシウラ

    Pythonでのインタプリタのコードは、体は200行程度で、builtinで100行程度の300行程度です。一番やりたかったのはmacro機構を実装してみたかったこと。 一般のデータに対しては、整数以外の関数は組み込んでないのですが、以下のようなコード例を解釈できます。 ; arith (say (* (+ 1 2) 10)) ; => 30 ; cell (say (cons 1 nil)) ; => (1) (say (head (cons 1 nil))) ; => 1 ; set (set (quote hoge) 10) (say (+ 10 hoge)) ; => 20 ; lambda (say ((lambda (a b) (* (+ a b) a)) 10 5)) ; => 150 ; macros (set (quote =) (macro (var value) ;

    PythonでLISPっぽい何かを作ってみた - ラシウラ
  • 1