JavaScript

Io風味パーサ

かなり、適当ですが、Io風味のパーサを作ってみました。 a(b,c,d[][]) e f{} []といった式をパースして、以下のような構造を作ります。 call{ call{ call{a(b,c,call{d[],[]}), e}, f{} }, [] }Ioと互換ではなくて、拡張したり、手を抜いたりしてます。 Ioは…

プログラミング言語JSOP(2)

factの計算が出来るようにしてみました。ifと=を追加して前回の関数呼び出し部分のバグを取ってあります。 <html> <script language="javascript"> function eval(p, env) { if (!isNaN(p))return p; if (p instanceof Array) {// 関数適用 switch(p[0]) { case "+": return eval(p[1], env) + ev</html>…

プログラミング言語JSOP

簡単な、JSONを使ったプログラミング言語JSOPを作ってみました。 数値演算しかできません。 ハッシュと配列で何とかすることを考えたら、関数型言語風になりました。 var program = { body:{ body:["+", "x", ["/", "y", 2]], x:["add", 1, "y"], y:["mul", …

10分で書く構文解析器

10分で書く構文解析器をやってみました。 再帰下降法を使っています。 四則演算して結果を返します。 最初に、簡単なスタックのように使える文字読み込み関数pop(),push(),peek()をつくり、 その関数を利用して、再帰下降構文解析の関数expr,term,factを作成…

10分で書く字句解析器

http://sakurai.s59.xrea.com/10min/10minlex.htmlなんか、やってみました。 後で見たら、最後失敗してて恥ずかしいです。 名前が、sakuraiなもんで。sakuraエディタ使ってみました。 正規表現使ってます。 字句解析って、flexをインストールしようとして失…

パターンマッチング

http://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp22.html この辺を読んで、javascriptに移植してみました。 これを使えば、うまいことマクロが書けるようになりそうです。 cdrとかの処理がいかにも遅そうなんですが、、、。 とりあえず、動けばいいのよ…

SimpleJSLex

JavaScriptなでしこもどき http://nadesico.bz2.jp/を見てて、字句解析器生成ツール作ってくれないかなぁと書いてあったので、シンプルな字句解析器ジェネレータを作ってみました。JavaScriptは正規表現オブジェクト利用すれば結構楽に出来ました。 function…