Diksam
Diksamの文法一覧です。Java, C++, C#等の言語をある程度知っている人はこれを読めばDiksamの基礎をマスターしてDiksamを書くことができるようになっています。――はい、便乗です。なにやらはてダのトップの人気記事が基礎文法最速マスターだらけになっていた…
他人の意見の翻訳ばかりでもアレなので。例外処理機構についての私の考え方は、Diksamがそうなっているように、 例外処理機構自体は必要 検査例外も必要 というものです。
カメよりも遅い歩みですがいちおうDiksamは機能追加を続けているので、たまには言語の話も。JavaやC#には、継承ツリーの最上位クラスとして「Object」がいます。型なし言語にもたいていは同様のクラスがありますね。 C++にはありませんが、それは、template(…
いつまでもエロゲの話が上がっているのも何なので、Diksamの現状報告など。現在のDiksamでは、ここで書いたように、ウインドウを開いて文字や線等の図形や画像を表示することができます。 プログラミング言語を作る/Diksam on Windowsただ、実用上はボタンの…
Diksamのバグフィックスのため、ver.0.4.03を公開しました。http://kmaebashi.com/programmer/devlang/diksam_on_windows.html修正点は以下の2点です。 文字リテラルに関するバグで領域破壊を起こしていた問題を修正。 http://kmaebashi.com/bbs/list.php?bo…
あけましておめでとうございます。今年もよろしくお願いいたします。それはさておき、掲示板の方で、DiksamのUNIX版のEUCバージョンが、Vine Linux 4.2とMacOS Xにて正常動作しない、との話が出ています。http://kmaebashi.com/bbs/list.php?boardid=kmaebas…
Diksamを微妙に修正しましたので、ver.0.4.02を公開しました。http://kmaebashi.com/programmer/devlang/diksam_on_windows.html修正点は以下の2点です。 Windows版にて、0x5C問題の対応が抜けていたので(_o_)、追加。 UNIX版にて、UTF-8版を追加。 いまどき…
Webサイトのほうで、Diksamの新バージョン、「Diksam on Windows」を公開しました。プログラミング言語を作る/Diksam on Windowsこれは、Diksamに、ウインドウを開いたり直線や円弧やビットマップを描画したりキーボードやマウスのイベントを拾う機能を加え…
教えてクンモードです。WindowsのAPI(GDI)で、ドローツールとかでよく見る「ラバーバンド」を実現するにはどうすればいいんでしょうか。ラバーバンドといえばXOR、それにはSetROP2()、というところまではすぐにわかったのですが、ラバーバンドの線の色を制御…
大昔、N-BASICとかで、描画色を指定するときには、COLOR文で指定すると以後の描画は全部その色になってたと思いますが。この方法なら、LINE文でいちいち色を指定する必要がないわけで、これはこれでひとつの方法だと思います。……が、こういう、「モーダル」…
Diksamには、複数ソースファイルにまたがるグローバル変数はありません。 これは私は問題ないと思っています。グローバル変数自体、そんなに使用が奨励されるものではなく、数も少ないだろうし、get_xxx()やset_xxx()関数を作ればよいだろうと。Cで言うstdin…
ずいぶん長いことかかってしまいました。2ヶ月ぶりの暫定公開です。UNIX版: http://kmaebashi.com/programmer/devlang/diksam_unix_20081026.tgzWindows版: http://kmaebashi.com/programmer/devlang/diksam_win_20081026.tgzビルトインスクリプトにより単…
Diksamの構文規則において、関数呼び出しは以下のようになっています。 primary_expression LP argument_list RPつまり、式の後ろに、括弧で囲んだ引数並びを付け加えたものが関数呼び出しです(LP, RPはそれぞれleft paren, right parenで、「(」と「)」を意…
また暫定公開です。UNIX版: http://kmaebashi.com/programmer/devlang/diksam_unix_20080825.tgz Windows版: http://kmaebashi.com/programmer/devlang/diksam_win_20080825.tgz ダウンキャストが付きました。 C#風の例外処理機構が付きました。 ダウンキ…
コメントをいただいたのですが、長くなりそうですのでエントリでお返事します。hayashiさん: 最近flex+bisonを使った言語処理系を作る勉強を始めまして、diksamをいじって勉強させていただいてます。 これは光栄です。 ふとネットを見てて思ったことなので…
また暫定公開です。UNIX版: http://kmaebashi.com/programmer/devlang/diksam_unix_20080512.tgz Windows版: http://kmaebashi.com/programmer/devlang/diksam_win_20080512.tgz本来ならちゃんと言語仕様も文書化すべきところですが、日々どたばたしてまして…
既に忘れ去られているような気もしますが、Diksamは一応細々と作業を進めていました。先日、 *1:…には見えないかもしれませんが、一応遅々として進んではいるのでそのうち公開します。ええと、遅くとも連休明けには。 なんてことを書いてしまったのもありま…
以前 http://d.hatena.ne.jp/kmaebashi/20071031#p1 にメモだけ書いた件をもうちょっとちゃんと書きます。単一継承しか考えないのであれば、ポリモルフィズムは、オブジェクトごとに関数へのポインタ*1の配列(俗に言うvtable)へのポインタを持たせればよいわ…
眠いので簡単にメモだけ書きますが。 単一継承しか考えないのであれば、ポリモルフィズムは、オブジェクトごとに関数へのポインタ*1の配列(俗に言うvtable)へのポインタを持たせればよいのですが(そのへんの話は以前こちらとか「Java謎+落とし穴徹底解明」に…
最近、カテゴリが[雑記]ばっかりで、どこが「プログラミング言語を作る日記」なんだかわからない状況なので。 C++, Java, C#とかでは、コンストラクタはクラスと同名のメソッドで、サブクラスに継承されることはありません。 Diksamでは、 p = new Point.cre…
久々に言語話を。こんな宣言があったとき、 Hoge a;Hogeが出てきた時点では、これがクラス名だか変数名だか関数名だか区別が付きません。 Hoge[] a;だと、Hoge[まで見ても区別できないので、何も考えずに文法を書くとyaccはconflictを出します。 Cでは、「ty…
えー、やっと分割コンパイルがまともに動きました… 会社の仕事が忙しくあまり時間が取れなかったのもありますが、それにしても、思った以上に時間がかかっています。だからデザインをもっとちゃんとやれ、と、Joel on Softwareに書いてあったような気がしま…
Javaとかでメソッドを書くとき、 public static HogeHoge getHogeHoge() { … }みたいな形になるわけで、この中でもっとも注目されるべきはメソッド名であるgetHogeHogeであるはずなのに、それがずいぶん後ろのほうに埋もれてしまっているのが気に入らない。…
プログラムを書くにあたって、「移植性を高めよう」とばかりに#ifdefを使っていろいろなマシンごとのコードを個別に書くのは愚かなことだ、というのは、常識と言っていいと思う。「プログラミング作法」にも書いてあるし(p.272より)。 というわけでcrowbarに…
2日ほど研修で東京行ってました。ヒマなときにDiksamのOOの仕様を少々考えたのでメモ。 まず、これは前々から考えていたことですが、継承について。 abstractなクラス以外は継承不可 メソッドはデフォルトでnon virtual アクセス修飾子はpublicとprivate。デ…
ちょい間が空きました 仕事で帰りが遅くなり、かつ、なんというかストレスフルな状態だと、ついつい飲んで帰っちゃうので… それはさておき。 Diksamで、いつまでも1行目に int print(string str);とか書いてるのもアレなので、ソースファイルを分割する方法…
一応始めたばかりなので続けて書いてみる 現行のDiksamでは分割コンパイルも出来ないのですが、Cで書かれたネイティブ関数が(ひとつだけ)存在し、それを使うにはCのプロトタイプ宣言よろしく宣言しなければなりません。 int print(string str);なんだ今時こ…