2011-04-01から1ヶ月間の記事一覧

1 > 2 > 1はfalse

1 2 > 1はfalse.トンチですか?いいえ, JavaScriptです. 優秀な奴はPython.エラーを吐くのはHaskell.嘘を付くのがJavaScript. なんでJavaScriptでこんなことになるのか.関係を表す演算子は左から評価されます.3 > 2 > 1 → (3 > 2) > 1 → true > 1両辺のToNumb…

SyntaxError: Unexpected token }とは何か

Google Chromeのコンソールで, 「(」と打ってEnterしてみましょう. > ( SyntaxError: Unexpected token } えっ...? 僕 } なんて打ってないよ... ワケがわからないよ...いろいろ実験してみましょう. > ( SyntaxError: Unexpected token } > - SyntaxError: Unex…

1..nが配列になるある一つの方法

> Number.prototype.n = function () { for(var i = +this, a = []; i <= n; a.push(i++)); return a; } [Function] > n = 15 15 > x = 1..n () [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ] > x [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1…

if文の{}はどんな場合でも書くべきか?

JavaScriptでは, ifの{}は省略できます. if (a > 10) foo(); else bar(); hoge(); は if (a > 10) { foo(); } else { bar(); } hoge(); と同じ. ECMAScriptの定義では, 12 Statement Statement: Block ... 12.1 Block Block: { StatementList(optional) } St…

正規表現で数式パーサー書いたよ!

最近コンパイラーのお勉強をしてます.練習で数式のパーサーをSLR(1)で書いてみたり,単純に下降再帰で書いてみたり,演算子順位法で書こうとしたりしています...でも, 数式をパースするだけなら, スタックとか作らなくてもいいんじゃね?数式を手計算で変形して…

下降再帰/演算子順位で数式パーサー

前回の記事の続き的な何か.数式パーサーを下降!!!! じゃなくて書こう!!! 実は, id:ajalabox さんの http://d.hatena.ne.jp/ajalabox/20110328/1301319299 にかなり精神的に影響を受けた. うおおおおおおおおおおおおお俺も言語処理系作りてええええええええ…