ほぼ、C言語の演算子が定義できてて+αの演算子がついてる言語です。 最初構文木を作って、それをインタプリタで動くいう。 なにが、新しいのかというと、プログラムは数値や識別子以外は演算子でつながってるってこと。 演算子でつながってるだけなので、構文木もそんな風になってます。 あとは、説明めんどくさいので。いいや。 とにかく、S式に代わると言い張っていいんじゃないのかなぁと思えるくらいになってきたんじゃないかと思います。 いつも、そう思ってるのだけど、これ以上シンプルで分かりやすくってのは難しいと思います。 ってところまで来たと思いますけど、どうでしょうか。 このインタプリタ部分をもっと拡張すると俺的に理想に近い言語になりそうです。 1+2*3;4 が ["xox",["xox",1,"+",["xox",2,"*",3]],";",4] となる〜っていう言語です。xoxは左結合の2項演算子の
式ベースのパーサとインタプリタを作ってみました。 {a:(a,b){a+b};b:(a,b){a*b}(5,2);c:(a(10,20)+b)*5;d:{a:a;c:c}}.d このような、式をパースして、実行すると、 {a:Lambda([a,b],XOX(a,+,b)),c:200} のような、式が帰って来ます。 今までは、括弧は特別扱いしようとしていました。 しかし、今回のものは式をパースするときに、 特別扱いしているものがありません。括弧や、セミコロン、カンマも 只の演算子です。 そこが、今までのものと一番違う点です。 実際に動くサンプルは以下にあります。 http://sakurai.s59.xrea.com/diary/c2.html 追記: なんか、前回と同じことを書いてるなぁ。 関数が使えるようになったところと、オブジェクトで振り分けるようにした点が違うはずなのだけど。。。
JavaScriptの進化が止まらない。もし、JavaScriptの欠点を挙げるとすれば、外部のファイルがロードできない点にあったと思う。やはりこれができないと他の言語の比べると弱い印象になってしまう。 だが、それをもJavaScriptは克服していく。本当にすごい。 今回紹介するオープンソース・ソフトウェアはAjile、外部スクリプトファイルの読み込み等多数の機能を実装したJavaScriptライブラリだ。 JavaScriptはあまり得意ではないので、これはあまり自信がない。ただ、すごいという事だけはお伝えしたい。まず、外部ファイルの読み込み。これはLoad(ファイル名)にて実装される。 さらにNameSpace。汚染の被害軽減のためには必須だろう。次がIncludeとImport。Importはアスタリスクをサポートしているようだ。さらにImportAsというものもある。 実際の実装
id:brazil さんのブックマークで知ったのだが、 Firebugには、便利な組み込み関数が定義されているようだ。 一通りさわってみたのだが、 $x() で 任意のXPath要素が取得できるのとかに感動した。 そして、やっぱりちゃんとドキュメント読むべきだなぁと思った。 XPathから要素を取得する。 $x("/html/body/h1"); -> 要素の配列が返ってくる。 selector名から要素を取得する。(getElementsByTagName) $$("h1") -> 要素の配列 所要時間測定 console#time, console#timeEnd time ~ timeEnd で囲んだ部分の所要時間を 計測することが出来るみたいで、 以下のような関数にまとめると良さそうだ。 function bench( callback ) { var uniq_id = Date
Thank you, Firebug. You made the web amazing for all! The story of Firefox and Firebug are synonymous with the rise of the web. We fought the good fight and changed how developers inspect HTML and debug JS in the browser. Firebug ushered the Web 2.0 era. Today, the work pioneered by the Firebug community through the last 12 years lives on in Firefox Developer Tools. Switch to the latest version of
元Vine SPARC開発者。2003年度未踏ユース採択者。ウノウ株式会社立ち上げ時に参画して4年間CTOとして従事。退職して現在P&Aラボにて客員起業家として起業準備中。 先週末未踏ユースOBで二泊三日の河口湖まで開発合宿に行ってきました 僕はJavascriptでpythonを実装してみるという、なんとも無駄な試みに挑戦してみました 結果できたのは字句解析のところまでorz 字句解析ができた時点で力尽き果ててDSで遊んでました ^^; とりあえず恥を忍んで晒してみる jspython なんか適当なpythonプログラムを突っ込んでtokenizeしてみてください それっぽい出力が出てくると思います 短いプログラムがいいかと思います あんまりブラウザをいじめないで >< 基本的にはpythonのプログラムをjavascriptに移植した感じなので、大体はあってるとは思うのですが、pyth
JavaScript・Dynamic HTML・Windows Scripting Hostの講座。このサイトはどのページも自由にリンクを張ってもらってけっこうです。 できれば直に張ってください。 これ以下のページはInternet Explorer 5.0、 Netscape Communicator 4.6で表示を確認しています。 フォントサイズは中または12Ptを、 表示色はハイカラー以上を推奨します。 最近、CSSを使ってページを書き換えています。 CSS1対応のブラウザでないとレイアウトがページ作成者の意図と違う可能性大です。 なおNetscape Communicatorをお使いの方はなるべく最新のバージョンでご覧ください。 New! Update! は2ヵ月目安ですが、あくまで目安です。
09/21-23の間、言語開発合宿に参加してきました。 最初は恐ろしくて参加をためらっていたのですが、ujihisaという人の執拗な誘いもあって思い切って参加してみたところ大変楽しかったです。素敵な会にお誘いいただきありがとうございました。情報科学系のすごい先輩方と知り合いになれて嬉しかった! 私は当初の予定ではオリジナルの言語を作る予定だったのですが断念、結局jsでSchemeなどをつくっていました。Lisp/Scheme系言語は実装が簡単なため巷に満ち溢れていますが、まあそんなことはどうでもいいですね! 一応期限内に完成して継続と末尾再帰最適化まで実装できたので面目は保たれました。たぶん。 詳細な説明は後日行いますが、とりあえず発表資料とブラウザで動くデモを公開したいと思います。 デモ:Javascript Scheme コンソールって書いたとこの下のほそいのに字を打ってエンターを押す
### 실시간 라이브 카지노의 장점과 와일드 홀덤 적용법 카지노의 매력은 언제나 사람들을 끌어모으는 힘이 있습니다. 그러나 최근 몇 년간 온라인 게임의 발전으로 인해 이제 우리는 집에서도 손쉽게 그 흥미로운 세계에 발을 들여놓을 수 있게 되었습니다. 특히, 실시간 라이브 카지노는 진짜 딜러와 함께하는 생생한 경험을 제공하며, 마치 실제 카지노에 있는 듯한 느낌을 선사합니다. 이번 블로그 포스트에서는 … Read more
Products: vbs2js vbs2js - VBScript to JScript converter This is a tool that converts VBscripts to JScripts. It performs complete parsing of VBScript code and can even automatically substitute expressions like strcomp(a,b,1)=0 for a.toLowerCase()==b.toLowerCase() The output of the tool is not a ready-to-run JScript program but - rather - a template that gives developer a headstart in the co
C++ の特徴のひとつである演算子オーバーロード、その粋を極めたのが Boost Lambda (無名関数) と Boost Spirit (構文解析) ではないかと思っています。JavaScript では無名関数が使えるので Lambda に関しては間に合っているとも言えますが、Spirit はそうも行きません。JavaScript 2 で演算子オーバーロードがサポートされるのならチャレンジしてみようかななどと思ってそれきりになっていました。 しかし、一部でパーサブームが起こっているというのを受け、Perl 6 Rules をつらつらと眺めているうち、正規表現のメタ文字を使えば文法定義をきれいに書けるのではと思い至りました。そこで実際に JavaScript でパーサジェネレータを作り、Spirit にあやかって Gin (ジン) と名づけてみました。 文法定義 正規表現リテラルを使うこ
JavaScriptコンソール*1はだいぶ前に作っていましたが、JScriptのものがないので作ってみました。 〓JScriptコンソール〓 ※拡張子jsで保存 (function() { var stdIn, stdOut, stdErr; if( (typeof WScript) != "undefined") { var execFile = WScript.FullName; if(!execFile) { WScript.Echo("現在の環境では実行できません。"); } else if( (/^.*cscript\.exe$/i).test(execFile) ) { main(); } else if( (/^.*wscript\.exe$/i).test(execFile) ) { open(); } else { WScript.Echo("現在の環境では実行できません
JScriptだけでなく、VBScriptも使えるWSHのコンソールとなりました。 特徴 JScriptだけでなく、VBScriptも使用可能 JScriptとVBScriptをネストして起動*1できます。JScript()とVBScript()というメソッドがあります。 コマンドも簡易的に実行可能(JScript) JScriptで//:cmd DOSコマンドとすると、そのDOSコマンドの実行結果が表示されます。 historyの保持,echoとpromptの変更対応 エラーが発生しなかったコマンドの履歴を保持します。 また、コマンド入力時に表示されるプロンプトの制御ができます。 複数行コマンドにも対応 JScriptの場合 コマンド蓄積中でないとき、;で終わる文字列の入力はすぐに実行されます。;で終わらない文字列の場合、そのコマンドから蓄積を開始します。 コマンド蓄積中のとき、;のみの
「SpiderMonkey で JavaScript のインタラクティブシェル - bkブログ」のWin版です。 以下の内容で「ijs.js」というファイルを作成。 function print(s) { WScript.StdOut.Write(s); } (function () { for(;;) { print("js> "); var l = WScript.StdIn.ReadLine(); if (l == "!") { var a = []; while((l = WScript.StdIn.ReadLine()) != "!") { a.push(l); } l = a.join("\n"); } try { var v = eval(l); print(v); print("\n"); } catch(e) { print("Exception: "); print((
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く