Diksam

Diksam基礎文法最速マスター

Diksamの文法一覧です。Java, C++, C#等の言語をある程度知っている人はこれを読めばDiksamの基礎をマスターしてDiksamを書くことができるようになっています。――はい、便乗です。なにやらはてダのトップの人気記事が基礎文法最速マスターだらけになっていた…

例外処理について、私はこう思う

他人の意見の翻訳ばかりでもアレなので。例外処理機構についての私の考え方は、Diksamがそうなっているように、 例外処理機構自体は必要 検査例外も必要 というものです。

継承ツリーの最上位クラス

カメよりも遅い歩みですがいちおうDiksamは機能追加を続けているので、たまには言語の話も。JavaやC#には、継承ツリーの最上位クラスとして「Object」がいます。型なし言語にもたいていは同様のクラスがありますね。 C++にはありませんが、それは、template(…

Diksamウイジェットセット

いつまでもエロゲの話が上がっているのも何なので、Diksamの現状報告など。現在のDiksamでは、ここで書いたように、ウインドウを開いて文字や線等の図形や画像を表示することができます。 プログラミング言語を作る/Diksam on Windowsただ、実用上はボタンの…

Diksam ver.4.0.03を公開しました

Diksamのバグフィックスのため、ver.0.4.03を公開しました。http://kmaebashi.com/programmer/devlang/diksam_on_windows.html修正点は以下の2点です。 文字リテラルに関するバグで領域破壊を起こしていた問題を修正。 http://kmaebashi.com/bbs/list.php?bo…

Diksam EUC版が動かない方情報募集

あけましておめでとうございます。今年もよろしくお願いいたします。それはさておき、掲示板の方で、DiksamのUNIX版のEUCバージョンが、Vine Linux 4.2とMacOS Xにて正常動作しない、との話が出ています。http://kmaebashi.com/bbs/list.php?boardid=kmaebas…

Diksam ver.0.4.02を公開しました

Diksamを微妙に修正しましたので、ver.0.4.02を公開しました。http://kmaebashi.com/programmer/devlang/diksam_on_windows.html修正点は以下の2点です。 Windows版にて、0x5C問題の対応が抜けていたので(_o_)、追加。 UNIX版にて、UTF-8版を追加。 いまどき…

Diksam on Windowsを公開しました

Webサイトのほうで、Diksamの新バージョン、「Diksam on Windows」を公開しました。プログラミング言語を作る/Diksam on Windowsこれは、Diksamに、ウインドウを開いたり直線や円弧やビットマップを描画したりキーボードやマウスのイベントを拾う機能を加え…

WindowsのAPIでラバーバンド

教えてクンモードです。WindowsのAPI(GDI)で、ドローツールとかでよく見る「ラバーバンド」を実現するにはどうすればいいんでしょうか。ラバーバンドといえばXOR、それにはSetROP2()、というところまではすぐにわかったのですが、ラバーバンドの線の色を制御…

PenとかBrushとかDCとかGraphicsとかGCとか

大昔、N-BASICとかで、描画色を指定するときには、COLOR文で指定すると以後の描画は全部その色になってたと思いますが。この方法なら、LINE文でいちいち色を指定する必要がないわけで、これはこれでひとつの方法だと思います。……が、こういう、「モーダル」…

Diksamのグローバル定数

Diksamには、複数ソースファイルにまたがるグローバル変数はありません。 これは私は問題ないと思っています。グローバル変数自体、そんなに使用が奨励されるものではなく、数も少ないだろうし、get_xxx()やset_xxx()関数を作ればよいだろうと。Cで言うstdin…

Diksam暫定公開2008/10/26版

ずいぶん長いことかかってしまいました。2ヶ月ぶりの暫定公開です。UNIX版: http://kmaebashi.com/programmer/devlang/diksam_unix_20081026.tgzWindows版: http://kmaebashi.com/programmer/devlang/diksam_win_20081026.tgzビルトインスクリプトにより単…

Diksamの関数型

Diksamの構文規則において、関数呼び出しは以下のようになっています。 primary_expression LP argument_list RPつまり、式の後ろに、括弧で囲んだ引数並びを付け加えたものが関数呼び出しです(LP, RPはそれぞれleft paren, right parenで、「(」と「)」を意…

Diksam暫定公開2008/08/25版

また暫定公開です。UNIX版: http://kmaebashi.com/programmer/devlang/diksam_unix_20080825.tgz Windows版: http://kmaebashi.com/programmer/devlang/diksam_win_20080825.tgz ダウンキャストが付きました。 C#風の例外処理機構が付きました。 ダウンキ…

Diksamにファイバーは導入できるか

コメントをいただいたのですが、長くなりそうですのでエントリでお返事します。hayashiさん: 最近flex+bisonを使った言語処理系を作る勉強を始めまして、diksamをいじって勉強させていただいてます。 これは光栄です。 ふとネットを見てて思ったことなので…

Diksam2008/06/05版

また暫定公開です。UNIX版: http://kmaebashi.com/programmer/devlang/diksam_unix_20080512.tgz Windows版: http://kmaebashi.com/programmer/devlang/diksam_win_20080512.tgz本来ならちゃんと言語仕様も文書化すべきところですが、日々どたばたしてまして…

Diksam暫定公開

既に忘れ去られているような気もしますが、Diksamは一応細々と作業を進めていました。先日、 *1:…には見えないかもしれませんが、一応遅々として進んではいるのでそのうち公開します。ええと、遅くとも連休明けには。 なんてことを書いてしまったのもありま…

Diksamのポリモルフィズム

以前 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…

Diksam現状

えー、やっと分割コンパイルがまともに動きました… 会社の仕事が忙しくあまり時間が取れなかったのもありますが、それにしても、思った以上に時間がかかっています。だからデザインをもっとちゃんとやれ、と、Joel on Softwareに書いてあったような気がしま…

クラスのメンバ

Javaとかでメソッドを書くとき、 public static HogeHoge getHogeHoge() { … }みたいな形になるわけで、この中でもっとも注目されるべきはメソッド名であるgetHogeHogeであるはずなのに、それがずいぶん後ろのほうに埋もれてしまっているのが気に入らない。…

はじめての#ifdef?

プログラムを書くにあたって、「移植性を高めよう」とばかりに#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);なんだ今時こ…