タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

javascriptと解るようにに関するCherenkovのブックマーク (4)

  • IT戦記 - JavaScript で数式パーサを書いてみた。

    背景 いままで、ちゃんとパーサというものを書いたことがなかったので勉強のためにアレコレ考えながらやってみようと思って、簡単な数式を木にするパーサを書いてみようと思ったのです>< 今回作るパーサの仕様 パースする数式の演算子は二項演算子 + - * / と単項演算子 + - だけ。 括弧とかは使わない。 演算の優先順位は * / のほうが + - より高い。つまり、 1 + 1 * 1 は 1 + (1 * 1) 単項演算子は二項演算子より優先順位が高い。つまり、 - 1 + 1 は (-1) + 1 で、作ってみた! ソースコード filter 関数とか使ってるので、 Firefox only です。 var parse = function(source) { var tokens = source.match(/[-+*/]|[^-+*/\s]+|\s+/g).filter(/^[^\

    IT戦記 - JavaScript で数式パーサを書いてみた。
  • ノードの集合を「ドキュメント順」に高速に並べ替える。その1 - IT戦記

    ドキュメント順とは何か? ドキュメント順とは、簡単に言えば「XML のソース上の前にある順」のこと。 詳しくはこのへんを見てね。 XPath ではこの「ドキュメント順」という概念がよく登場する。 たとえば、ノードを文字列化するときは子孫テキストノードを「ドキュメント順」に文字列として連結しなければならない。とかとか でも、このドキュメント順へのソート 考えただけでもめちゃめちゃ重そうだ・・・。 いろいろ考えてみた。 XPath 実行中はドキュメント順が変わることがないので、DOM アクセスはキャッシュできる。 ノードの集合は木構造で保存したほうが比較回数が少なくてすむ(アルゴリズム初心者なので、実際に早いか検証しないと><) で、今回は DOM アクセスをキャッシュしながらノードを比較する関数を作る 汎用的に作ったので XPath 目的以外でも使えます。 var order = funct

    ノードの集合を「ドキュメント順」に高速に並べ替える。その1 - IT戦記
  • JavaScript1.7 の yield を使って、非同期処理を同期処理のように書く方法 - IT戦記

    経緯 id:kazuhooku さんが一年前にやってたことですが Kazuho@Cybozu Labs: JavaScript/1.7 で協調的マルチスレッド 今日やっと挙動が理解できたのと、 Weave のソースを読んでいたらこのテクニックをバリバリ使っていて「ちょwwおまwww」ってなったので、自分でも作ってみようと思いました。 ほとんど id:kazuhooku さんのと同じものなので、既出です><当にありがとうございました>< まず、 yield とは何か yield とは、 JavaScript 1.7 から導入された機能です。 以下に yield の細かい挙動を示しておきます。 function f() { // なんかの処理 yield; // ... (1) // なんかの処理 yield; // ... (2) // なんかの処理 } var g = f(); // こ

    JavaScript1.7 の yield を使って、非同期処理を同期処理のように書く方法 - IT戦記
    Cherenkov
    Cherenkov 2008/12/06
    yield とは何か
  • javascript でメモ化 - IT戦記

    Function.prototype.state = function() { return undefined }; force = function(v) { return typeof v == 'function' && v.length == 0 ? force(v()) : v; }; memo = function(f, k, v) { var state = f.state; f.state = f.state(k) !== undefined ? state : function(a) { return a === k ? v : state(a) } return v; }; memoise = function(f) { return function(k) { var v = f.state(k); return v !== undefined ? v : memo

    javascript でメモ化 - IT戦記
    Cherenkov
    Cherenkov 2008/12/06
    javascript でメモ化
  • 1