« PortaProの交換用パッドをお取り寄せ | Main | Adobe InDesign CS / CS2用JavaScript「正規表現検索スタイル適用」 »

2006.08.14

Zaurus向けSpiderMonkey1.5パッケージ

このエントリは、より新しいエントリJavaScript shell (js)、OSSP js 1.6.20060820のZaurus向けパッケージによって刷新されています。

スタンドアローンなJavaScriptインタプリタであるところのJavaScript shell (js)SpiderMonkey1.5のLinux Zaurus向けパッケージを作ったよ。

ダウンロード spidermonkey_1.5_arm.ipk.bin (245.1K)

ソース
http://pkgsrc.se/lang/spidermonkey

Mac OS X 10.4.7上でクロスコンパイル。
ビルド方法が特殊で、CC=arm-linux-gccして./configureすればいいって感じになってない。
かなり無理矢理なことをして作成。バッドノウハウだと思うので、ここには書かないです。

irbみたいにインタラクティブにJavaScriptが実行できる。

$ ./js
js> myStr = "";

js> regexp = new RegExp("<([^>]+)>");
/<([^>]+)>/
js> myStr.match(regexp);
,test
js> RegExp.$1;
test
js>

こんな感じ。readlineが組み込まれているので、コマンドライン編集が充実している。C-rによる履歴検索があったのに驚き。

RubyやPerlみたいにJavaScriptをファイルに保存して実行することもできる。標準出力への出力はprint()だった。

-----hello.js------
myStr = "Hello, JavaScript!";
print(myStr);
-----------------

$ ./js -f hello.js
Hello, JavaScript!

ちょっと試した限りではマルチバイトには対応してない感じ。

print("あいう".length); => 9 (UTF8)
print("あいう".substr(0, 1)); =>化ける

何か方法があるんだろうね。

$ ./js --help
usage: js [-PswW] [-b branchlimit] [-c stackchunksize] [-v version] [-f scriptfile] [-S maxstacksize] [scriptfile] [scriptarg...]

引数が取れるらしい。

引数の参照の仕方が分かりました。まずはシェバング行を書いて実行権を付け、

#!/usr/bin/env js
for(i = 0; i < arguments.length)
{
print(arguments[i]);
}

でもって、

$ ./test.js a b c
a
b
c
$

こんな感じでした。

|

« PortaProの交換用パッドをお取り寄せ | Main | Adobe InDesign CS / CS2用JavaScript「正規表現検索スタイル適用」 »

Comments

ここでいいのかな?2ch:ECMAScriptスレの561です。
間違ってたらごめんなさい。
OSSP JS : http://www.ossp.org/pkg/lib/js/
は autoconf 対応させた SpiderMonkey で Fx 1.5 と同じ JS 1.6 対応、最新版だと configure --with-utf8 で utf8 対応になるようです。
自分ではまだ試してないのですが、参考まで。

Posted by: mal_blue | 2006.09.07 at 05:39 PM

mal_blueさん、わざわざありがとうございます。
探させてしまって恐縮です。URLを書いておけばよかったですね。
OSSPっていうのは知りませんでした。
有意義な情報ありがとうございます。後で試してみたいと思います。

結構このエントリはヒットが多いようなので、いただいた情報引用させていただきます。

> 今更だが、SpiderMonkey 付属の js shell だと
> Unicode 対応 API を使ってないのでダメ。
> JS_CompileUCScript, JS_EvaluateUCScript を使うように直せばいいが、
> 対応してるのは UTF-16(LE) なので
> UTF-8 への変換関数も自前で用意する必要がある。

Posted by: moyashi | 2006.09.07 at 07:00 PM

configure中のtestコマンドがva_copy()のところで止まるので、後でセルフコンパイル環境をZaurus上に整えたときに試すとして、とりあえずMac OS X用に--with-utf8付きでコンパイルしてみました。

./configure --helpの--with-utf8の解説に以下のようにあります。

build with exclusive UTF-8 C strings (uses Unicode UTF-8 encoded C strings only)

とりあえずUTF-8でソースを書いて、

print("あ".length) // => 3

あれ。C strings onlyとはどういう意味でしょうか。NULL文字で終了する、C文字文字列のことですかね。

--------以下蛇足

こっちのjsはFileオブジェクトが使えるので、今公開している1.5よりはちょっと実用っぽく使えるかもしれないですね。

こっちのソースにはmanが付いていたので、引数の参照の仕方が分かりました。まずはシェバング行を書いて実行権を付け、

#!/usr/bin/env js
for(i = 0; i < arguments.length)
{
print(arguments[i]);
}

でもって、

$ ./test.js a b c
a
b
c
$

こんな感じでした。

Posted by: moyashi | 2006.09.08 at 03:41 AM

どうもです。
OSSP JS のソースをみたら、jsstr.c 辺りで UTF-8 対応していて、JS_*UC* の Unicode 対応API を使わずに、内部 UTF-16 なのを UTF-8 に変えているみたいです(自信なし)。C strings only はその辺のことかと。

> print("あ".length) // => 3
うーん、JS_*UC* を使うと文字数を渡す必要があるので(not byte len) そこから面倒をみてくれるようなのですが、上記の対応だと C string の延長なのでそうなるのかも、すいません。

> こっちのソースにはmanが付いていたので、引数の参照の仕方が分かりました。
オリジナルは「ソース見ろ」の世界ですから^^; man はありがたいですね。ソースを見て、

js>for (var i in it) print(i);

とかするとw
サンプル用のコードが残っているようです。

お役に立ったかどうかわかりませんが、応援しております、でわでわ。

Posted by: mal_blue | 2006.09.09 at 09:44 PM

コメントありがとうございます。そうなんですよね。オリジナルはソースしか入ってない。
jsを実用に使う人は居ないと思うのでしょうがないですが。

doxygen用のmakefileが入ってますが、ちと使い方が分からなかったです。

Posted by: moyashi | 2006.09.10 at 12:30 AM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/13760/11425776

Listed below are links to weblogs that reference Zaurus向けSpiderMonkey1.5パッケージ:

« PortaProの交換用パッドをお取り寄せ | Main | Adobe InDesign CS / CS2用JavaScript「正規表現検索スタイル適用」 »