#####################################################
<2005.09.25 ライブラリ仕様書@久川>
明日よりリホームが開始されるため、片付けに追われておりました。
足が痛いです(泣
ですが、ライブラリ仕様書についてはなんとかできあがりました。
ただ生成ツールに若干の問題があるため、公開には手直しが必要。
今日のアップは無理になってしまいましたが、近日中に
ソースと併せて公開いたします。
また、関数追加法などのチュートリアルと解説書も作成する予定です。
CommonLispの仕様を満たすには程遠い物ではありますが、
反面「拡張性」についてはかなりの重点を置いて作りました。
新機能を追加するのは比較的容易なはずですので、
一人でも多くの方に、機能を作って頂けたらと思っております。

#####################################################
<2005.09.24 スペース読み飛ばし@久川>
文字出現判定フラグを用意し、スペーサー続きの場合
読み飛ばしを行うように修正いたしました。
公開まであとわずか!!!
本日よりライブラリ仕様書生成ツールの作成に着手致します。

#####################################################
<2005.09.23 ファイル名変更とスペース読み飛ばし@久川>
飯床様、昨日はありがとうございました。
残念ながらまだ画面系には入れていないのですが、
連休中には手をつける予定にしております。

本日はソースコードの名称を変更いたしました。
「ModelXXXFunction.cpp」⇒「ModelFunctionXXX.cpp」
理由は下記の2点です。
・関数定義系のファイルであることを分かりやすくするため
 (機能や動作名称を頭に持ってくるのが関数名の自己規約のため
  ファイル名にも規約を適応)
・固定文字列を先頭にすることにより、変動部分が明確化される
ということで、今後ソースコード名称については
「MVCの区分」+「機能区分」+「詳細区分」
のようにしたいと思います。
例外的にmainなどの動作試験用ダミーファイルは除外します。

もう一点はスペースの読み飛ばしです。
現状では、正しいS式(要素間のスペースが常に一個のみ)の式
でしか評価をすることができません。スペースの読み飛ばしを
行っていないため、構造解析に失敗するからです。
以前のようにトークン分割方式を利用していれば
このような事態は発生しないのですが、とにかく軽く作ろうと
思っていたため、複雑なトークン判定機能は入れませんでした。
いくつか解決策を試してみましたが、複数スペースが入ると
やはり解析に失敗してしまう状況です。
再度検討したのち、最良の方法を採用したいと思います。

#####################################################
<2005.09.22 飯床様へのメッセージ@久川>
お越しくださいまして、ありがとうございます。
すみません、同時でしたか・・・。
夕食をとりましたら、早速登録させていただきます。

#####################################################
<2005.09.22 初訪問@飯床>
どうやら同時期の編集だったため。反映されなかったよう。
melthy0_0@hotmail.comでMSNメッセンジャにいます。
よかったら登録願います。

#####################################################
<2005.09.22 関数ヘッダの修正@久川>
家リホームのため、連休中は片付けに明け暮れた久川です。
ようやく目処がつき、本日から作業を再開いたします。

さて、本日はこちらにお客様がみえる予定です。
会社で知り合ったのですが、CUI思考の私と違い
画面描画系に精通したスペシャリストです。
別のプロジェクトで画面系を担当されているそうなのですが
我がTheoriaProjectでも、エージェントとして
参加して暮れないかな~、とひそかに期待しております。
ではでは、ゲストさんのお返事を待つことに致しましょう。

#####################################################
<2005.09.18 関数ヘッダの修正@久川>
環境も整って参りましたので、
そろそろ公開に踏み切ろう!!
と思いソースを印刷したらなんと
関数ヘッダの記述が誤記だらけ(泣
別の関数の機能が書かれているところが多数!
本日より修正に着手いたします。

#####################################################
<2005.09.15 メモリリークの修正@久川>
要素の参照数をカウントしている変数がを
unsigned intで定義したのですが、
場合によってはマイナス値を取ることがあり
これが原因で解放ルートが無限ループに
陥っていました。修正としてintでマイナス値を
許容するようにいたしました。
またシンボルクラスにおいては、参照数をカウントする
変数と、リンク先を保持する変数名が同じだったため、
リンク先を保持する変数名を変更いたしました。
これで、現状確認されているバグは修正が完了致しました。
後は機能増やすだけ(のはず。。。)

#####################################################
<2005.09.14 Assertの修正@久川>
setqのAssertは、evalの実装抜けでした。
こちらはすぐに解決したのですが、
今度はメモリリークが発生!
ガベコレの実装は完璧だと思っていたのですが
まだ甘かったようです(泣
修正いたします。

#####################################################
<2005.09.13 quote省略展開の実装@久川>
quoteの省略形「'」を、字句解析フェーズにて
展開できるように致しました。
今までsetqを使った場合は、第二引数を評価することなく
直接第一引数のリンク先にしていしていましたが、
今回のquote対応に伴い、一律第二引数を評価した後に
リンク先にセットするようにいたしました。
と、ここまでは良かったのですが
何故かquoteされていない値をsetqするとAssert。。。
14日帰宅したらデバッグ致します。

######################################################
<2005.09.12 quote実装@久川>
quote関数を実装しました。evalFunction内で
S式を評価せずにすぐリターンを考えましたが
律儀にクラスを作成してみました。
エラー処理を入れなくてはならなかったため
結果的にはクラスにして正解だったようです。
あとはdiv時に'を(quote)に置換できれば完璧なのですが。。。

######################################################
<2005.09.11 整形@久川>
lambdaのAssertようやく解決いたしました。
さんざん時間をかけて、直したコードは一行だけ!!
しかも「eval(...)」から「e->eval(...)」という修正。。。
FuncEvalのevalからevalを呼び出したため、
クラスのメンバ変数の値が変化し、問題が発生しておりました。
う~、こんなにも長い時間気がつかないとは。
私もまだまだですね(泣
何がともあれ、これでFuncStandard継承への変更は終了。
また、固定引数のconst化とFuncStandardクラスへの
「idIsString」メソッド追加。
乗算関数「FuncTime」の実装と除算関数「Divide」の実装まで
完了いたしました。
ようやく土台が出来上がりましたので、
いよいよこれからは、関数の実装によるLispシステム関数の構築と
拡張を行う段階となりました!!

######################################################
<2005.09.08 整形@久川>
lambdaのAssertは解析難航のため、先にSetQを
FuncStandard継承に変更しました。
こちらは問題なく完了。
休み中にじっくりデバッグすることにいたします。

######################################################
<2005.09.07 整形@久川>
lambdaのAssertをみてみましたが、解決には至らず。。。
FuncEvalをFuncStandard継承に変更したことが
原因だと予測をしているのですが、今のところは不明です。
X-File観ながらだったので(汗
本日再度デバッグ致します。

######################################################
<2005.09.06 整形@久川>
FuncStandard継承への変更と、コメントの徹底。
及び仮引数のconst化を行い、ソースを綺麗にしよう!!
と作業をしている久川であります。

FuncMinusまで終わってひと段落。
ということで「lambda」を動かしてみたら
なんとAssert!
うぅ、明日デバッグします(泣

######################################################
<2005.09.04 lambdaの実装②@久川>
間にいろいろありましたが、とりあえず実装完了。
lambdaとdefunを同時に実装した形になりました。
というか、defunの一形態としてlambdaが実装された
形になっています。本来はlambdaで書かれたものを
シンボルへ束縛することでdefunを実現しているので、
ちょっと実装が間違っている気もしますが・・・。
見た目の動作が正しいのでOKにしましょう(汗

とにかく、ひと段落つきましたので
ここらでコードの整理を行います。
まずはFuncStandardの使用可能クラスは
前面的にこちらへ移行します。
また、仮引数でconst指定が可能な箇所については
constをつけるようにいたします。
各進捗については、「整形進捗」をご覧下さい。

######################################################
<2005.08.27 lambdaの実装①@久川>
defunがないと、関数定義ができず
関数定義ができないということは、Lispで
プログラミングができないということですので
まずはdefun!!なのですが、実現するために
lambdaを先に作ることにしました。
lambdaの書式が
------------------------------------
(lambda 引数 定義 実行に必要な引数)
------------------------------------
だと勘違いしていた私は、早くも失敗!
正しくは
------------------------------------
((lambda 引数 定義) 実行に必要な引数)
------------------------------------
です。

これを解決するため、FuncEval::eval内で
「評価対象がセルであり、その第一引数もセル」の場合は
第一引数を先に評価し、その評価結果を先頭するリストを作るよう
コードを変更しました。と、ここまではよかったのですが
(lambda 引数 定義)の戻りっていったいなんでしょう?
xyzzyで試すと
------------------------------------
(lambda (x) (+ 1 x))
⇒#<lexical-closure: (anonymous)>
------------------------------------
なんじゃこりゃ?
ということで今回はこの動きを参考にはできないようです。



######################################################
<2005.08.26進捗/予定報告@久川>
[はじめに]
To.開発関係者各位
皆さんお越し下さいまして、有難うございます。
日頃お忙しいかとは思いますが、まずはこの書き込みを
ご覧頂いたことを心より感謝いたします。

さて、詳しい運用についてはまだ決めていないのですが
「連絡事項」へは私と皆さんの進捗報告を書き込もうと
思っています。システム全体の進捗については私が更新しますので
「Theoria-Plus進捗」をご参照下さい。
ちなみに追加書き込みを行う場合は、この書き込みより上に
お願いいたします。

[開発規約]
・まだ規約書を作成していませんので、
 適当に今書かれているフォーマットにあわせてください。

[ドキュメント]
・機能仕様書
 ⇒作成検討中。作らないかも・・・。

・ライブラリ仕様書
 ⇒生成ツールメンテ中。
  ヘッダファイルからの自動生成を行います。
  基本的に現在書かれているコメントを
  真似て頂ければ出力されます。
  公開は2005/09/25までに行う予定。

・単体/結合/機能検査仕様書
 ⇒現状は作成予定なし。とっても危険・・・。
  システム全体の運用体制が確定したら作成に着手。
  ・・・するかも。
######################################################

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2005年09月25日 23:09