2008-01-01から1ヶ月間の記事一覧

属性文法の面倒な点

Attribute Grammars を読んでみる.これの22ページあたりに出てくる文法をとりあげてみる. Symbol-table を毎回書かなければいけない add-item て? 副作用があっていいの? ::= program is Symbol-table() ), program), empty-table) ::= begin end Symbol…

ここからが大変そう

上の例のかわりに Parse> r "var a; a=3; var b; b=a+3;" Found value[ [ ],["1001","3","=","POP"],[ ], ["1002","1001","Read","3","+","=","POP"] ] Parse> みたいに出したい.つまり,var a や var b のための領域(上では1001 と 1002 )を確保して,その…

コード生成部できた

Parsec で作る簡単なコンパイラ. 結局,字句解析のかわりに tok str というあやしいコンビネータ(str を読んで,その後ろのスペースをとばす) を定義 コード生成部は toCodable クラスを使う.これで,命令のリストが作られる. toCodable :: a -> CodeSt…

toString と show と

HaskellでtoString - 西尾泰和のはてなダイアリー にて,この前の 「Haskell で toStringを定義する方法 」を書いてくれた.確かにtoString は実装できるのだけど,すでに show という手段があるのだから, 通常はデフォルトのshow を使って ある一部のクラ…

Parsec続き

代入式らしいものは書けるようになった.あと型クラスを使って toCode (コードを生成する関数)を実装してみる.うーんやっぱり 型なのに「instance」と書くのはまだ抵抗がある.あと Foo {bar:: Int} という記法は扱いがすごい面倒なことがわかった.特に…

属性文法は重要か

Why Attribute Grammars Matter というページを見つけた.日付が01-07-05 なんだけど,これは 2001年7月5日か,2005年1月7日かわからない.まだ読み始めたばかりだけれど,中央付近にあるグラフがなんかあやしい.リスト構造の逆をたどるともっと柔軟にデー…

Parsec(Haskell)わからないこといろいろ

字句解析の方法がわからん,というかややこしすぎ.http://www.lab2.kuis.kyoto-u.ac.jp/~hanatani/tmp/Parsec.htmlのセパレートスキャナってなんだろ.仕方なく spc とかいうあやしい文法をはさんでいる JavaでいうtoString の作り方がわからない show b::B…

Parsec入門

ちょっとParsecをいじってみた.整数定数の足し算と引き算の式,変数宣言が書ける(宣言できるけど使えない).計算をせずにASTだけを出力する. import Text.ParserCombinators.Parsec --main r :: String -> String r input = case parse source "lisp" in…

大事なのはLookup力

Sublinear-space evaluation algorithms for attribute grammars という論文を見つける.1987年もの.attribute grammar というのは死に絶えた技術なんだろうか,それはさておき ROOT -> exp exp.env = φ exp -> exp + exp exp1.val = exp2.val + exp3.val e…

突然Parsecを思い出す

パーサジェネレータって, パーサジェネレータの持つ言語(文法定義) JavaとかCとかの一般的な言語 という2重の言語が必要だなー,と思っていたら,これがあったことを思い出す.Parsec はパーサジェネレータじゃないから確かに単一の言語(Haskell)で書ける…

XQuery

上の論文は,XQuery についても言及している.たぶんXML文書を変更したときに,XQueryに対する検索結果をインクリメンタルに変える,という仕組みも提供しているらしい.XQueryの文法をしらなかったのでこのへんを読んでみた. for $i in document("Tutorial…

[論文] XMLの制約検証をインクリメンタルに行う.

Consistently updating XML documents using incremental constraint check queriesある XML 文書とそのXML Schema を与えて,XML文書の変更があったとき,XML Schemaを満たしているかどうかを,差分を検出して高速に行うものらしい.すべての言語をXML と X…

Bitter Haskell

で,Haskell は詳しい構文を知らない.あと$ が出てくるとパースできなくなるへたれなので,構文糖を除きまくった苦い Haskell ができあがると予想. S := def* def := NAME '=' expr expr := elem+ elem := NUM | NAME | '(' expr ')' | lambda lambda := '…

Haskell Hackathon に参加します.

いろんな言語でHaskell の処理系を作ってみるという企画.私はJavaで作るといって申し込んだけど,実は Java を用いて Tonyuで書かれたHaskell パーサを生成 Tonyu でがんばってグラフ簡約のアニメーション というのをできればやってみたい.

JDTもまいったする

javaソース を自動生成してみた.これだけインナークラス使いまくりだと,一文字書き換えただけでEclipse が10秒くらいかたまる.

ひらメソッドの循環参照問題.

あるクラス A がある class A extends B Bは未読なので読みに行く B の中で A を参照している と,無限ループになってその先が読めなくなる のはどうすればいいのでしょう.

pukiwiki 自動整形ツール

http://www2.eplang.jp/hoge1e3/util/outline.cgi pukiwiki にソースを貼り付けるときに,自動的に行頭をスペースをおぎなう. タブはスペース4個におきかえ ただし行頭が- だと何もしない(JDTのソース読むサイトでは,箇条書きをつかってコメントを記入し…

JDT のソースを読むWiki

minixのソースを読むWikiw にならなって,ひらメソッドで,JDTのソースを読むWiki] を立ち上げた. プログラムをPukiwikiに直貼り付けると不恰好になる.書くとそれっぽく出してくれるプラグインとかあるかな.あとクラス名からリンクが生成されるとか.

ひらメソッドで読むJDT

JDT(Eclipse のJavaコンパイラ) はどれくらい苦労して実装されているのかを調べたくなったので,ソースを読むことにした.package org.eclipse.jdt.internal.compiler.ast; の頭から開始 AbstractMethodDeclaration.java public abstract class AbstractMet…

<Ruby>はタグです.

<Ruby>の括弧を半角文字で書いたら何も表示されない,とおもったらルビを振るためのHTMLタグだったことを思い出す.Rubistの皆さんご注意を.

String<Ruby> とか String<SQL> とか

以前も書いたし,あっちとかこっちとかでコメントにも書いているけど,文字列に言語情報をもたせて,静的にチェックする仕組みはないのかな.String<Ruby> なら,Rubyのプログラムとして正しいプログラムしか格納できないとか.「マクロ定義で言語仕様を拡…

Kanasan.JS

前回はprototype.js を読んだが,今回は オライリー本 をひたすら読むというもの. ライトニングトークでは,Aroeとかswf 生成のためのアセンブラの話(実はazukiで実装).「ライトニングトーク」と意識してやったのは初.質問時間が設定されないのでちょっと…

Azuki 動くか?

Tonyuのプラグインが,なんとかTonyuのコードからJavaのソースを吐くところまではこぎつけたけど,Eclipseのルールにのっとってビルダをたたいたりするあたりでつまずき中.

先人の苦労話

電子情報通信学会誌の会誌が来た.いつも電子電気な記事が多くて分野違いなのだが,今月の特集は,昔研究とかで苦労した話が載っていた.こういうのなら分野が違ってもそれなりに読める.テレビ電話の標準を策定しているさなか「会議ってさーあんまりテレビ…

実装なき発表はつまらない

それは,単に 「動くものがプロジェクタに投影されたほうがおもしろい」 ではなく 「実装しないと,システムの詳細,全体が本人にも理解できない」 からである ような気がしてきた.

あなたは,どっち? 〜 IDE派と手打ち派

ここに,IDEに頼りまくりのプログラマと,エディタで手打ち&コマンドラインコンパイルなプログラマがいました.あなたは,どちらの意見により多く賛成できますか?IDE派はいいました 「同じことを2度3度書きたくないから,補完機能は重要」 手打ち派はいい…