2007年12月17日

MeCabで日本語インタプリタ

MeCabで日本語の構文を自由に解析できるようになったので、それを使って、日本語計算機を作ってみることにした。現在まだ最低限のことができるようになっただけなんだけど、しばらくこれを作っていこうかと思う。これを少しずつ拡張していけば、日本語のプログラミング言語処理系にできるかもしれない。

5年くらい前にプログラミング言語のロゴを日本語化していた。でも日本語の構文解析の部分で挫折してしまった。chasenやMeCabを使えばいいんだろうなということは、あとで分かってきたけれど、なかなか手を出せないまま今に至ってしまった。

それが、最近MeCabをPythonで使ってみて簡単に日本語が解析できてしまったので、これはいけると思ってしまった。それで作ってみることにした。開発言語としては今のところPythonを使ってみる。インタプリタをインタプリタで作るというのは、ちょっと速度的にもったいなさそうだけど、Pythonの気軽なプロトタイピングが今かなり気に入っているので、とりあえずこれで作る。

日本語プログラミング言語というのは古くはMindというものから、現在「なでしこ」「ドリトル」「プロデル」などが出てる。今でも販売されているMindはForthというもともと英単語を後置表記で表記していたプログラミング言語を日本語の単語で使えるようにすることから始まっている。一方の現在主流の日本語プログラミング言語は、ソースを読んで確認したわけではないけれど、どうやらロゴを発展させた形で作られているのではないかと思う。根拠は、以前日本語ロゴを作った経験から。ドリトルの前身はロゴ坊というまさに日本語ロゴだったし、後継ドリトルでも、タートルグラフィックが得意だったりしている。プロデルのプログラムの外見もまさにロゴを日本語語順になおしたものに見える。

さて、すでにこういう先人がいるのだけれど、おそらくそれらを追い越せるだけのものが簡単に作れるとも思わないが、ちょっとアイデアがいろいろ思いつくので、日本語インタプリタを作ってみることにする。それもロゴを手本に作ってみる。MeCabという本格的な日本語解析モジュールを利用するのだから、かなりきっちりとした日本語表記を目指そうと思う。

わざわざダウンロードして試してもらう段階ではないけれど、公開しておきます。

とりあえずできたもの:
■ダウンロード calc.py
稼働条件
・MeCab公式サイトよりMeCabのWindows版をインストールしていること
・Windows版Python2.5をインストールしてあること
・Windows版Python2.5用MeCabモジュールをインストールしてあること

py2exeで実行形式にしたものの圧縮ファイルを置いたつもりが、UPしてませんでした。すみません。


現時点では最低限のことしかできない。
・解釈できるのは一行、それも単文。
・整数の四則演算ができる。
・式の記述は、文章表記。
・現時点利用できる構文は、
「○を□にたす」「○を□にかける」「○から□をひく」「○で□をわる」「○と□をたす」
「○に□をたす」「○に□をかける」「○を□からひく」「○を□でわる」「○と□をかける」
・上記の○、□の場所に数字を入れた文を書いて、エンターを押すと、次の行に答えが出てくる。
・終了と入力すると終了する。

いろいろやることは思いつくけど、まずリスト演算と再帰的な文の呼び出しを実現できるようにしよう。まだ○と□には数値リテラルしか指定できない。これができれば十分複雑なことができるようになる。


posted by takayan at 03:04 | Comment(0) | TrackBack(0) | 日本語プログラミング | このブログの読者になる | 更新情報をチェックする

2007年12月19日

日本語プログラミング言語の仕様を考えてみる

前回作ってみたものをどう発展させようか。以前から考えていたものをまとめてみた。できる限り細かく考えてみたが、整合性がとれるかどうか作ってみないと分からないし、それをプログラムできるかどうか分からない。とにかく考えていることを言葉で表すとこんな感じになる。


■プログラムの構成要素についての定義

文字:
・プログラムの表記を構成する最小単位は文字である。
・文字のコードは16ビットユニコードである。
・エスケープコードによって表現されたものも一つの文字である。
・空白、タブ、改行も文字である。
・空白文字とは空白、タブ、改行である。
・空白文字をエスケープコードで表現したものは空白文字とは見なされない。
・空白文字の連続は一つの空白として扱われる。
・空白は空白文字以外の文字の連続を分割する。

記号:
・記号は一つの文字もしくは複数の文字の連続によって表され、それを構成する文字の列があらかじめ複数定義されている。
・記号は定義されているものの中で最も長いものとしてのみ解釈される。
・記号とそれに隣接する文字や記号とは間に空白が無くても分割されている。

数値:
・先頭から末尾までの文字が数値を表すものとして解釈されるもののみが数値である。
・数値には整数と実数がある。
・整数は小数点を含まない。

ワード(単語):
・分割されていない文字の一つ以上の連続をワードと呼ぶ。
・ワードには属性がある。
・記号は記号という属性をもったワードである。
・整数を表す文字の連続からなるワードは整数という属性をもつ。
・実数を表す文字の連続からなるワードは実数という属性を持つ。
・同一の引用符記号(”’"')に囲まれた文字の連続は、文字列という属性を持つワードである。
・文字列には空白も含めることができる。
・ワードには、言語仕様であらかじめ用意された手順によって値や手順を割り当てることができる。
・ワードに値を割り当てるということは、値を返す手順を割り当てることである。
・ワードは最初それ自身の文字の連続を値として返す手順が割り当てられている。
・数値は常にそれが表す数値を値として持つ。
・文字列は常にそれを構成する文字の並びを値として持つ。

ノード:
・ノードとはワードとリストをまとめて呼ぶための名前である。
・ワードはワードという属性を持ったノードと考えることもできる。
・リストはリストという属性を持ったノードと考えることもできる。

リスト:
・リストはノードによって構成される。
・そのリストを構成するノードを要素と呼ぶ。
・リストは別のリストの要素となるとき、対になるリスト引用符(「」[])で囲まれる。

プログラム:
・プログラムはリストである。
・リストの最初の要素から順に各要素が消費され、実行されていく。


■プログラムの解釈について
・プログラムは文の並びである。
・文は並んでいる順序で解釈される。
・文には単純文と式文がある。
・単純文はいくつかの目的語と述語からなる。
・句点(。)は文を区切る記号であり、それを越えて目的語の探索をしない。
・読点(、)は単なるワードを区切る記号である。
・述語には手順が割り当てられて、それに従って解釈される。
・述語は解釈され値を返すものと値を返さないものがある。
・値を返す述語は必ず値を返す。
・値を返さない述語は必ず値を返さない。
・述語の名前はそれを構成する文字そのものである。
・目的語を持たない単純文もある。
・後置詞は述語とともに定義される。
・述語は後置詞によって目的語の値を受け取り、手順の処理で利用する。
・目的語には後置詞が続いている。
・目的語と後置詞は連結されていてもよい。
・目的語と後置詞の間には空白文字があってもよい。
・後置詞を伴わない目的語も許される。
・後置詞の並びには順序がある。
・同じ名前の述語でも違う後置詞を伴う場合は別のものとみなされる。
・同じ名前の述語で同じ後置詞を伴う場合でも後置詞の順序が違うものは別のものとみなされる。
・目的語の解釈は、述語の解釈に先立っておこなわれる。
・値を返さない目的語があれば、その単純文の解釈は中止され例外が発生する。
・目的語は文である。
・目的語となれるものでもっとも単純なものは、目的語を持たない述語である。
・一つの文章に多くの述語が使われ、目的語の所属の判断が複雑になる場合は、括弧「()()」を使って優先順位を明確にする。
・目的語の探索は再帰的に右側の目的語から決定されていく。
・式文は式によって記述された文であり、必ず値を返す。
・式には単項式と二項式、そしてリスト式がある。
・単項式は単項演算子と項からなり、値を返す。
・二項式は項と二項演算子と項からなり、値を返す。
・演算子には結合順位と結合方向があり、それに従って解釈される。
・演算子は言語仕様に含まれ、新たに定義することはできない。
・演算子は記号であるものと記号でないものがある。
・演算子の項の属性が、演算子が要求するものではないときは例外が発生し、解釈が中止される。
・項は、より結合順位の高い式、もしくは述語のみからなる単純文、もしくは括弧で囲まれている値を返す文である。
・リスト式は、リスト引用符(「」)で囲まれたリストである。
・リスト式の値は、そのリストそのものである。
・述語には名詞形と動詞形がある。
・後置詞の直前には、動詞形の述語は直接置けない。
・動詞形は必要に応じて活用する。
・例外を発生させる述語、およびそれをとらえる述語がある。

将来的にはクラスが扱えるようにしてもいいが、とりあえずそれを考えない。作るとすればこんな感じになるだろう。

クラス(分類):
・インスタンス変数は、「(インスタンス名)の(変数)」で表記する。
・クラス変数は、「(クラス名)の(変数)」で表記する。
・インスタンスメソッドは、「(インスタンス名)を(メソッド)」で表記する。
・クラスメソッドは、「(クラス名)を(メソッド)」で表記する。


そしてこれらの規則に従って基本命令が定義されている。

繰り返し文:
<整数式>回 「<リスト>」を 繰り返す。
「<リスト>」を <整数式>回 繰り返す。
「<リスト>」を <論理式>になるまで 繰り返す。
「<リスト>」を <論理式>の間 繰り返す。
<論理式>になるまで 「<リスト>」を 繰り返す。
<論理式>の間 「<リスト>」を 繰り返す。
「<リスト>」の要素を順に<ワード>とおいて 「<リスト>」を 繰り返す。
「<リスト>」を 「<リスト>」の要素を順に<ワード>とおいて 繰り返す。

判断文:
<論理式>ならば 「<リスト>」を 実行する。
<論理式>でなければ 「<リスト>」を 実行する。
<論理式>ならば 「<リストA>」を、それ以外ならば 「<リストB>」を実行する。
<論理式>ならば 「<リストA>」を、<論理式>ならば 「<リストB>」を、<論理式>ならば 「<リストC>」を、それ以外ならば 「<リストZ>」を実行する。

定義文:
<文>を<ワード>とする。
<文>を<ワード>とおく。
<文>を<ワード>と呼ぶ。
<ワード>に<文>を代入する。
<ワード>←<文>
<ワード>:=<文>

手順の定義:
{<ワード>-<後置詞>} <ワード>の手順 <リスト> 手順終わり


これを一度に実現させることはできないだろうが、暇なときにちょっとずつ作ってみよう。


posted by takayan at 02:53 | Comment(0) | TrackBack(0) | 日本語プログラミング | このブログの読者になる | 更新情報をチェックする

2007年12月21日

分かりやすい日本語の引数を考える

先日は、箇条書きで"言語"について描写してみた。自分自身で読み返してみて、いろいろ問題点に気がついた。

助詞が使えるというのはとても面白いとは思うのだけど、考えればすぐに、述語の目的語を「て・に・を・は」などの助詞だけで受けられないのはわかる。そういう意味でより拡大した意味を持たせて後置詞と呼ぶことにしたのだけど、さらに考えを進めるとすべての後置詞で受けるというのも無理がある。

例えば、扇形の面積を求める述語を考えてみる。扇形の面積を求めるには、中心角、半径が必要になるが、この中心角と半径にはどんな助詞をつけるべきだろうか。いいものが思いつかない。では助詞に限らず後置詞を添えたらいいだろうか。前回説明はしなかったが後置詞の意味は「後ろに置くワード」という意味で使っている。

すぐに思いつくのが、
「Aという中心角、Rという半径の扇形の面積」

という表現だろう。つまり「という中心角」「という半径の」という後置詞を使う方法だ。でもこれだと後置詞という考えに縛られて、日本語としての自然さを犠牲にしてはいないだろうか。間違った日本語ではいないが、「という」という言葉が頻出することに、くどさを感じてしまう。

数学の教科書ではどんな表現を使っていただろう。たしか「中心角A、半径Rの扇形の面積」ではないだろうか。できればこんな形で表現できた方が僕には美しく感じられる。しかしこれだともう後置詞を使ったいままでの構文とは違うものになってしまう。でもこれが実現できるのなら、構文を壊してでもこっちの方がいい。そう思ってしまう。

これを一般化させると、仮引数への代入を述語の呼び出し文に明記できるということになる。でもよく考えてみると、この実引数は式の可能性だってある。こうなると人間はともかくインタプリタが解析するのが一段と難しくなるだろう。思い通りの解釈が無理になるかもしれない。

ならば実引数の部分を括弧で囲んで明確にすればどうだろう。括弧で囲むというのはいいかもしれない。構文的にも今までの規則を拡張して解決できるだろう。

でも式中だと括弧()は優先順位を変える記号として理解できるが、文章中では補足説明的な役割になってしまう。文章表現を中心にするプログラム言語ならば、式以外での()はあまり使わない方がいい。

では角括弧「」はどうだろう。リストを使うのは構文的に楽に組み込める。でも本来のリストとの区別が問題になってくる。リストとワードでは表されるものが大きく違ってしまう。

仮引数名を括弧の前に置くという特異な構文を使うので、別の記号が使えるのならばそのほうがいい。どうせならば専用の括弧が分かりやすいのではないだろうか。中括弧{}はまだ他のことに使っていないから、それにしよう。

結局こうすることにした。
中心角{A}、半径{R}の扇形の面積

そして、仮引数を明示しなくていいときは、仮引数と波括弧を省略できる。つまり、
AにBを足す

のようにできる。
文の構文を考えると、

= { 仮引数名 '{' 目的語 '}' 後置詞|',' } 仮引数名 '{' 目的語 '}' 後置詞 述語
| { 目的語 後置詞|',' } 目的語 後置詞 述語
| 述語

内部的には反転させて、次のように処理させる。

= 述語 後置詞 '{' 目的語 '}' 仮引数名 { 後置詞|',' '{' 目的語 '}' 仮引数名 }
| 述語 後置詞 目的語 { 後置詞|',' 目的語 }
| 述語


読点'、'はただの区切り記号としていたが、その役割も変える必要がある。このときの読点は並列の記号としてはたらく。つまり、後続する直後の目的語と並列され、そして同じ述語に所属する。その並列している目的語と一緒になって、全体をその後置詞が受けているとみなす。もし後続する目的語の直後に後置詞が無く、かわりに読点がある場合は、同様にして後続の目的語も加えて並列してあるとみなす。必要なだけこれを繰り返す。これができれば自然な文章になるだろう。

「、」に近いが、「と」という演算子も作ろう。これは後置詞のように振る舞う演算子だ。

二項演算子「と」:左右の項をひとつのリストにする演算子。「と」が述語のすぐ左隣の位置にあるときは演算子ではなく、後置詞とみなされる。演算子「と」は記号ではない。したがって「と」に隣接するものは「と」によって分割されることはない。

この二項演算子「と」の存在のために後置詞「と」を右から二番目以降に伴う述語は定義できない。逆に演算子「と」の意味で「と」を使う可能性のある述語は、実引数がリストであるかを判断し、リストであった場合、そのリストの要素を順に処理を行うように手順を記述することになる。

たとえば、「和」という述語がその例になる。この述語は後置詞「の」だけを伴う。実引数がリストの場合は、それらを数値とみなし、その合計を計算する。実引数が数値を表すワードならばそれをそのまま返す。「和」は、自分への引数が演算子「と」によって作られたものであるかは知らない(知れるように細工してもいいが)、そのため演算子「と」を使わずに直にリストの形で引数を与えてもいい。例、「1 2 3 4 5」の和。

今日はここまで。
念のため。これは既存のプログラミング言語を解説したものではなく、作れたらいいなと思っている日本語インタプリタの仕様を夢想する記事。


posted by takayan at 00:57 | Comment(0) | TrackBack(0) | 日本語プログラミング | このブログの読者になる | 更新情報をチェックする

2007年12月23日

変数の扱いについて

日本語プログラミング言語を妄想する続き。プログラミング言語Logoを日本語化しようという目論みから始まったことだけど、今の仕様ではLogoでの変数の扱いを踏襲していない。できるだけ自然な日本語の表記にしたいからだ。

Logoではワードを値として参照しているときは、頭に「:」を付ける。このlogoの「:」は、「thing "」の省略である。この手続き「thing」は文字列で示された名前の変数に与えられた値を返す手続きである。これをこの言語で実現するとすれば「の値」という述語になるだろう。

「:」でこの省略形を表現することで、logoではそのワードが手続きではなく、変数名として使われていることがはっきりと外見で分かるようにしてある。この用法はとても分かりやすいので、できれば倣ったほうがいいのだけど、日本語で書くときは見栄えがあまり良くない。できるだけ日本語らしく表記することを優先したいので、これを使わないことにする。述語「の値」の用意はするが。

そのため、ワードは次のように処理される。処理速度なんて最初から念頭に置いていない。これは動的な言語である。

■ワードの処理
1.述語として登録されているか調べ、候補を選ぶ。無ければ、3.へ
2.リストの並びを調べ、この候補が矛盾無く使えるか調べる。このとき、複数の述語が適合する場合は、「曖昧な表現です」という例外が発生し、解釈を中止する。一つならば、この述語の結果を持って、5.へ。
3.述語として登録されていないとき、もしくは述語が定義されていてもどれも矛盾してしまうときは、変数としてその名前が登録されているか調べ、登録されていればその値を結果とし、5.へ。
4.変数としても登録されていないときは、「このワードを知りません」という例外を発生させて、解釈を中止する。
5.結果をこのワードの値とする。

■文としてのリストの処理
リストの中のワードは、どのように解釈されるだろうか。答えは、リストはリストのままである。述語に処理されることによってはじめて要素は解釈の対象となる。つまり、制御文など、リストを文として解釈する述語が実行されるときになって、そのリストの内容が文として処理される。実際にはその時点でいわゆるeval関数が実行される。そのとき変数となるべきワードは変数として解釈される。これは手本にしているLogoをそのまま踏襲している。


とりあえずここまで考えておけば、後は作っていくうちになんとかなるだろう。Logo、特にUCBLogoの言語仕様を参考にして、それを日本語の文章を解釈できるようにかなり変形させている。実のところ、考え自体は数年前に漠然とできあがっていたのだけれど、日本語の解析ができずに困っていた。


posted by takayan at 00:38 | Comment(0) | TrackBack(0) | 日本語プログラミング | このブログの読者になる | 更新情報をチェックする

2007年12月27日

日本語で計算するプログラム

先日の「MeCabで日本語インタプリタ」以来文章の中で考えているだけで、プログラムそのものを改良していなかったので、日本語計算インタプリタをちょっと拡張してみた。まだまだなんだけれど、前回より少しまともになった。前回は決められた述語に、数値を入れるだけのことしかできなかったけれど、その数値の所に再帰的に文を使えるようにした。一行に続けて他の文も書けるし、漢数字も解釈できるようにした。

実用的なプログラムではないので、これが人の役に立つというわけでもない。とにかく地味なプログラムだ。ただ前回公開したものよりも、こちらのほうが作りたいものを表現できているので、今回も公開することにする。いままで書いてきた仕様はまだ満たしていないし、ずれている。全体像が見えてくるのはまだまだ先のことになるだろう。

主な操作法を書いておくと;

実行するとDOS窓が立ち上がる。漢字入力が中心なので、ALT+半角/全角キーで切り替える。「たす」「ひく」「わる」「かける」「割った余り」「くっつける」といった言葉を助詞をつけて書いて、エンターを押すと、その答えを表示してくれる。今回から、述語を組み合わせて使えるようになったので、「1と2を足した値に3を足す」とか目的語の部分に既定の述語を使った名詞節をおくことができるようになった。日本語らしく接続するために「〜した値」「〜した答え」「〜した結果」という表現なども使えるようにした。文末の表現としても「〜ます」「〜して、」といった表現もできる。「命令形」もたいてい受け入れてくれる。こういうのはmecabによる解析のおかげだが、単純なことしかやっていないのでもっと工夫すれば正確な表現もできるようになるだろう。思い通りの語形変化を選んでくれないので、mecabの辞書も独自のものを作った方が処理が楽になるだろう。

前の文の結果を参照する言葉として、「その結果」「その答え」などの述語が使える。結果を受けるこの言葉は、同じ行で使ってもいいし、エンターした後、次の行で使ってもいい。なお、計算は整数演算だけしか対応していない。唯一「くっつける」は文字列演算のサンプルだ。

制御構造を文の形で定義できるので、案外単純な仕組みで作れるだろう。きっと一般的なプログラミング言語よりは楽だろう。そういうところはLispの親戚らしい特徴だと思う。お気楽にPythonで作っているのも楽な理由だろうけど。

クラスをもっと徹底的に使って作るべきなのだろうが、今は構造体的なものとしてしか使っていない。どんなデータ構造が必要なのかを実際プログラムを作りながら探している段階なので、全体像が分かってからクラスの中にクラスのメンバになるべき関数を移動させていくつもりだ。それにいくつかのファイルに分割していかないとどんどん分かりにくくなってる。一つのファイルだけで処理系を描ききることができれば、それはそれで面白いかもしれないが。


ためしに次の文章を打ちこむと、

千を十で割った値を三で割ります。その答えに三をかけて、一をその結果に足します。

結果が出力されて、次のようになる。
*** 解析内容 ***
1000 を 10 で 割る を 3 で 割る 。
その答え に 3 を かける
1 を その結果 に 足す 。
****************
*** 翻訳内容 ***
述語: 割る
+述語: 割る
++定数: 1000
++定数: 10
+定数: 3
述語: かける
+述語: その答え
+定数: 3
述語: 足す
+定数: 1
+述語: その結果
****************
結果: 33
結果: 99
結果: 100

出力される内容は、解析内容、翻訳内容、そして結果の順。解析内容はMecabを利用して、このプログラムに必要な分かち書きにした結果。翻訳内容は、これをプログラムに翻訳したもので、データの階層構造が描かれている。そして結果は、これはコマンドラインで入力された「文」の数だけ表示される。結果が三つ出力されるのは、上の文章が三つの文から成り立っていることを示している。目的語として使われていない述語の結果が並んでいる。「その答え」「その結果」という言葉の値は、それぞれここに並んでいる一つ前のものが使われているのがわかる。


次回公開するのは、変数の利用、論理演算、リスト演算、ラムダ式の定義、算術式の解釈など、それなりのものが使えるようになってから、だからたぶん一月以上先になるだろう。


■ダウンロード
無保証。必要な環境は前回と同じ。

Pythonスクリプトソース:
nihongo.py

py2exeで作った実行形式を固めたもの:
nihongo.zip


posted by takayan at 02:26 | Comment(0) | TrackBack(0) | 日本語プログラミング | このブログの読者になる | 更新情報をチェックする

2008年10月15日

SpiderMonkeyで日本語を使えるようにしてみた。

JavaScriptの奥深さを改めて思い知ったので、Firefoxなどで使われているJavaScriptエンジンSpiderMonkeyで最近いろいろ遊んでいました。SpiderMonkeyを触るのは、四年ぶりぐらい。ちょうど、Firefoxの1.0が出るかでないかの頃、いろいろいじってました。

SpiderMonkeyは、ソースを持ってきてコンパイルすると、スタンドアロンで利用することができます。Windows環境にはJavaScriptによく似てWindowsでのいろんな操作に使えるJScriptというものがあるので、それほど必要なものというのではないんだけれど、やっぱり由緒正しいJavaScriptに触れてみたいという気持ちは抑えがたい。

ただ、この単体のSpiderMonkeyではまだ日本語がうまく使えなかった(Windowsでしか使っていないので他のプラットフォームでの事情はわからないが)。以前使っていたときもそのことが気に入らなくて、日本語が使えるようにちょっと修正したものを作って試していました。今回、Mercurialでダウンロードしたら、プレリリースのSpiderMonkeyバージョン1.8が使えたので、それに以前の修正を適応し、さらに-f、 -eオプションも使えるようにしてみました。

本来、JavaScriptでは変数名に日本語が使えます。JavaScriptを紹介しているサイトには、いまだに識別子の構成文字は半角英数のみと古い仕様のまま紹介してあるものもありますが、JavaScriptの標準仕様であるECMAScript3の仕様において、ちゃんとUnicode文字列が使用できることは明記してあります。簡単な漢字変数のスクリプトを含んだHTMLを書いてFirefoxで開くと、確かに使えるのが分かります。ただ使えることは使えますがあまりおすすめはしません。やたらWebページでの記述には使うべきではないでしょう。しかし、本来できるべきものができないというのがちょっと不満でしたので、できるようにしてみました。

全角文字を使うとき気をつけることは、Unicode文字はそれぞれ用途によって分類がされていることです。例えば全角の数字(1,2,3,4,5)はそれ自体数値として使えませんが分類上は数値を表す文字とされています。JavaScriptではUnicode文字の分類を区別するので、半角数字と同じように全角数字は名前(識別子)の先頭文字として利用できません(二文字目からは使える)。また+×☆※などなどの全角記号は識別子に利用することはできません。漢数字は問題はないみたい。

まだ開発中のベータ版ですので、いろいろ問題があるかもしれません。

■ ダウンロード
自己責任でご利用ください。
smjp001.zip


■ 配布ページ
http://et-dev.main.jp/index.php?SpiderMonkey

メッセージも日本語にしてみましたが、標準的な用語になっているか確認して訳していません。

例文
js>あ行=["あ","い","う","え","お"].reduce(function(a,b)a+b);
あいうえお
js>print(\u3042行); // \u3042:’あ'のユニコードエスケープシーケンス表記
あいうえお
js>print(あ行.length);
5
問題がありましたら、コメントください。
Blogged with the Flock Browser


posted by takayan at 04:02 | Comment(2) | TrackBack(0) | 日本語プログラミング | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。