D

みんな大好きWalterさんの負け惜しみ

D

2chのD言語スレよりリンク転載。http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D&artnum=100775

caperが吐いたコードを読む

LALR(1)はどうやって動作しているのでしょうか? 理解を完全にするために、caperの吐いたコードを追いかけてみたいと思います。 caperは、jonigataさんの作られたパーサジェネレーターです。パーサジェネレータの中では群を抜いてきれいなコードを吐いてくれ…

頭の悪いUTF9

試しにDで書いてみたら普通にビット操作のほうが短かった。こりゃスクリプト言語なら100バイト切るな……orz バイト境界をまたぐpacked配列が使えないと長くなるはずという単なる思いこみオチでした。終了。

バックトレース

D

先人の成果はありがたく利用すべきという言葉の意味を実感。 http://d.hatena.ne.jp/shinichiro_h/20051216#1134740218 これがまだ動作することに感動。 標準のphobosが例外もみ消しやがるのもいまだ健在なので、大変有り難いです。つーかphobosが例外止めさ…

caper for D

手書きと強弁できることが目標らしいパーサジェネレータcaperに、D言語吐かせてみました。 http://panathenaia.halfmoon.jp/alang/caper.7z caperは所謂スキャナレスの状態遷移型パーサーです。スキャナは自分で書く必要があります。パースを途中で打ち切る…

PRINT USINGその2

D

なんかの拍子で5分間だけDやります。 目的のシンタクス。 print_using!("### + ### = ###")(1, 2, 3); void function (int, int) f = &print_using!("##/##"); f(12, 8); めんどくさいんで対応は#とintだけでいいや。連続している#の数の幅でintを右詰め出力…

0.1を10回足しても1にならない@拡張精度

有名な話なんですが、じゃあ実際どれぐらい誤差が出るのよと。案外doubleまでしか検証されて無いんじゃないかと思ってやってみました。 program Project1; {$APPTYPE CONSOLE} uses Crt; var F: Single = 0; D: Double = 0; E: Extended = 0; I: Integer; be…

0.161

D

なんか凄いことになってますね。これで構造化BASICだかRubyだかのように一番外の式は括弧無しで関数呼べるようになったら完璧ですね。 templateのは試したところ特に感動も無く通りました。C++のtypenameって一体……?

meating

D

全体的にD言語だけでは話題が不足気味。 主に-runの話とか-runの話とか-runの話とか。 Lightweight Languageってなんだろう。実行が軽いという意味ではないのは確実として、気楽に書けるというならIDEがしっかりしててコードの自動生成や入力補完が利く環境…

Dの

D

プログラム言語のある機能xxxの前に「Dの」という冠詞をよく見かけるようになりました。 そして、私はそれに恐怖を覚えております。

パーサジェネレータ動くところまで

D言語だとみなさん喰い付きがいいですな…。 動くところまで持って行きましたので載せておきます。 k.inabaさんの指摘を受けてmixinを使うようにしました。正直mixinの存在なんて頭から消えてましたははは。 test.d + import testdriver; expression => | sum…

ずぼら向けパーサジェネレーター

http://d.hatena.ne.jp/ytqwerty/20050424#p1の続き。反応をいただいたので、もう少し詳しく書くことにしましょう。 たとえば四則演算。 expression => | sum + int evaluate(); sum => | product | add' x:sum "+" y:product -- left rec | sub' x:sum "-" …

The Village of Vampire

bread versus riceが不発に終わったのでかなり人狼にルールを近づけてThe Village of Vampire開発中。http://f22.aaa.livedoor.jp/~qwerty/private/vampire/で、内部的な話。AN HTTPDからD言語(dmd)製のCGIを呼ぶとWindows2000(SP4)ではPOSTで百発百中AN HTT…

windows.h for D

D

いつのまにかdmdがコンパイル時に定数の範囲チェックを行っていてcastでもくぐり抜けられないようになっていてそれでwinbase.dとかwinuser.dがこけてるんですよ。元々型を考えずになんでもuintにしてしまっていたといえばそれだけなんですが。 それで環境再…

exeのCGIを作ってみる

D

http://d.hatena.ne.jp/ytqwerty/20041014#p1を実装してみました。id:h_sakuraiさんのhttp://www.wikiroom.com/sakurai/?D%B8%C0%B8%EC%A4%C7CGIを参考にさせていただきました。ありがとうございます。AN HTTPD*1とかapacheとかで動くみたいです。画面キャプ…

version 0.101

D

std.streamが新しくなりました。一週間ぶりの更新がこれでは、日記に書くネタが無い、と言ってるのと同じです…精進せねば

version 1.000.100

D

…えーと…1.00は特別な数字じゃなかったということでしょうね。 ……えーと……

version 0.99

D

http://www.digitalmars.com/d/changelog.html…0.99ですよ。 もう一回ニュースグループに何かポストしておかないといけないと思いつつめんどくさいっす。英語は読むのと書くのでは必要な気合いと労力が2000倍ぐらい違う気がするこの頃… 先のPRINT USINGなん…

PRINT USING

D

いつかやろうと思っていたネタ。http://p22.aaacafe.ne.jp/~qwerty/private/junk/printusing.dBASICのPRINT USINGをDに移植してみました。 import printusing; enum { LC_ALL = 0 } extern(C) char* setlocale(int, char*); int main() { setlocale(LC_ALL, …

diff

元の論文を読まずに、CやらRubyのソース辺をかき集めて動くように。http://hp.vector.co.jp/authors/VA007799/viviProg/doc5.htmhttp://raa.ruby-lang.org/search.rhtml?search=diff.rb struct Diff_Result { int[][2] path; } Diff_Result diff(char[] data…

version 0.95

D

出てるし…。しかもQueenをコンパイルできるし…言い訳が消えてしまった…std.string.formatに"%d"とかも実装されたのが嬉しい点。 それと、std.stdioって…

あ、悪い

D

http://pc5.2ch.net/test/read.cgi/tech/1079068715/733-Queenをdmd0.94でコンパイルしようとすると、リンクエラーが起きやがる*1もので、私はまだ0.93使ってるのです。 そのうち直します。 *1:.objを見るにコンパイラのバグ

Fileのコンストラクタはopenメソッド

D

http://d.hatena.ne.jp/shinichiro_h/20040611#p1の、微妙に続いてないような話。なんでopen中でCreateFileに渡されてるフラグがOPEN_ALWAYSなんじゃい。どう考えてもOPEN_EXISTINGが正しいだろーに。結果どうなるかといいますと、存在しないファイルをINモ…

マクロの代わり

D

class TypeAndId2Type(T, uint id) { } template message_handler(_T, uint _id, alias _handler) { enum { id = _id } alias _T T; bit dispatch_handler(Message m, TypeAndId2Type!(T, _id) dummy) { if(m.id == _id){ _handler(m); return true; }else{ …

そしてD

D

Dに不都合を避けるための変な命名規則が追加されない事を祈ります。 本気で避けようとするならば、グローバル識別子をtemplate中で使うのを避けて全部引数で貰うとか、常にモジュール名からだらだら書くか… いやまてよ。templateが宣言されたモジュールがpri…

mixin???

D

これじゃ、単なるdefineだと思ったのは私だけじゃありますまい。さいしょちょっと面白そうに思ったのですが、スコープが宣言場所じゃなくて使用場所、つまりdynamic scope寄りになってるし、インライン展開が見込めるところからして単なる型付きdefine。それ…

Mikeさんからのメール

D

D向けWin32 APIポーティングとしては、全部手書きとしか思えない凄さで精力的にポーティングを進められているMikeさんからメール来ました。既にdmd 0.88対応済み!速い!流石!http://www.geocities.com/one_mad_alien/dcode/で…I would like to have you as…

version 0.88

D

Cスタイルキャスト禁止。 それ自体は喜ばしいのですが、C言語の悪いところを直せば直すほど、最初っからC風にしなけりゃ良かったという風になっていくのは、なんだかなあです。これならCスタイルキャストは最初から禁止しておいてC++のdynamic〜, reinterpre…

ニュースグループ近況

D

自分でも忘れてた投稿に対して、ものすごい間隔のあいたレスがWalter様から。http://www.digitalmars.com/drn-bin/wwwnews?D/28990…いや…書き直せって…んな事言われても…これはwindows.hのコードで、私は自動変換かましたいわけですけど…。それに、最後の行…

Version 0.86

D

とか言ってたら0.86*1出てましたよ。 亜種を作るのはバージョンが少し違った程度では大きな影響が無い程度に収束してからのほうが良さげです。待ってればMinGW版gdcも出るかもしれないし。 "Max # of fixups = 数字" とかいう謎のメッセージが表示されるよう…