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…
HaskellでtoString - 西尾泰和のはてなダイアリー にて,この前の 「Haskell で toStringを定義する方法 」を書いてくれた.確かにtoString は実装できるのだけど,すでに show という手段があるのだから, 通常はデフォルトのshow を使って ある一部のクラ…
代入式らしいものは書けるようになった.あと型クラスを使って toCode (コードを生成する関数)を実装してみる.うーんやっぱり 型なのに「instance」と書くのはまだ抵抗がある.あと Foo {bar:: Int} という記法は扱いがすごい面倒なことがわかった.特に…
Why Attribute Grammars Matter というページを見つけた.日付が01-07-05 なんだけど,これは 2001年7月5日か,2005年1月7日かわからない.まだ読み始めたばかりだけれど,中央付近にあるグラフがなんかあやしい.リスト構造の逆をたどるともっと柔軟にデー…
字句解析の方法がわからん,というかややこしすぎ.http://www.lab2.kuis.kyoto-u.ac.jp/~hanatani/tmp/Parsec.htmlのセパレートスキャナってなんだろ.仕方なく spc とかいうあやしい文法をはさんでいる JavaでいうtoString の作り方がわからない show b::B…
ちょっとParsecをいじってみた.整数定数の足し算と引き算の式,変数宣言が書ける(宣言できるけど使えない).計算をせずにASTだけを出力する. import Text.ParserCombinators.Parsec --main r :: String -> String r input = case parse source "lisp" in…
Sublinear-space evaluation algorithms for attribute grammars という論文を見つける.1987年もの.attribute grammar というのは死に絶えた技術なんだろうか,それはさておき ROOT -> exp exp.env = φ exp -> exp + exp exp1.val = exp2.val + exp3.val e…
パーサジェネレータって, パーサジェネレータの持つ言語(文法定義) JavaとかCとかの一般的な言語 という2重の言語が必要だなー,と思っていたら,これがあったことを思い出す.Parsec はパーサジェネレータじゃないから確かに単一の言語(Haskell)で書ける…
上の論文は,XQuery についても言及している.たぶんXML文書を変更したときに,XQueryに対する検索結果をインクリメンタルに変える,という仕組みも提供しているらしい.XQueryの文法をしらなかったのでこのへんを読んでみた. for $i in document("Tutorial…
Consistently updating XML documents using incremental constraint check queriesある XML 文書とそのXML Schema を与えて,XML文書の変更があったとき,XML Schemaを満たしているかどうかを,差分を検出して高速に行うものらしい.すべての言語をXML と X…
で,Haskell は詳しい構文を知らない.あと$ が出てくるとパースできなくなるへたれなので,構文糖を除きまくった苦い Haskell ができあがると予想. S := def* def := NAME '=' expr expr := elem+ elem := NUM | NAME | '(' expr ')' | lambda lambda := '…
いろんな言語でHaskell の処理系を作ってみるという企画.私はJavaで作るといって申し込んだけど,実は Java を用いて Tonyuで書かれたHaskell パーサを生成 Tonyu でがんばってグラフ簡約のアニメーション というのをできればやってみたい.
javaソース を自動生成してみた.これだけインナークラス使いまくりだと,一文字書き換えただけでEclipse が10秒くらいかたまる.
あるクラス A がある class A extends B Bは未読なので読みに行く B の中で A を参照している と,無限ループになってその先が読めなくなる のはどうすればいいのでしょう.
http://www2.eplang.jp/hoge1e3/util/outline.cgi pukiwiki にソースを貼り付けるときに,自動的に行頭をスペースをおぎなう. タブはスペース4個におきかえ ただし行頭が- だと何もしない(JDTのソース読むサイトでは,箇条書きをつかってコメントを記入し…
minixのソースを読むWikiw にならなって,ひらメソッドで,JDTのソースを読むWiki] を立ち上げた. プログラムをPukiwikiに直貼り付けると不恰好になる.書くとそれっぽく出してくれるプラグインとかあるかな.あとクラス名からリンクが生成されるとか.
JDT(Eclipse のJavaコンパイラ) はどれくらい苦労して実装されているのかを調べたくなったので,ソースを読むことにした.package org.eclipse.jdt.internal.compiler.ast; の頭から開始 AbstractMethodDeclaration.java public abstract class AbstractMet…
<Ruby>の括弧を半角文字で書いたら何も表示されない,とおもったらルビを振るためのHTMLタグだったことを思い出す.Rubistの皆さんご注意を.
以前も書いたし,あっちとかこっちとかでコメントにも書いているけど,文字列に言語情報をもたせて,静的にチェックする仕組みはないのかな.String<Ruby> なら,Rubyのプログラムとして正しいプログラムしか格納できないとか.「マクロ定義で言語仕様を拡…
前回はprototype.js を読んだが,今回は オライリー本 をひたすら読むというもの. ライトニングトークでは,Aroeとかswf 生成のためのアセンブラの話(実はazukiで実装).「ライトニングトーク」と意識してやったのは初.質問時間が設定されないのでちょっと…
Tonyuのプラグインが,なんとかTonyuのコードからJavaのソースを吐くところまではこぎつけたけど,Eclipseのルールにのっとってビルダをたたいたりするあたりでつまずき中.
電子情報通信学会誌の会誌が来た.いつも電子電気な記事が多くて分野違いなのだが,今月の特集は,昔研究とかで苦労した話が載っていた.こういうのなら分野が違ってもそれなりに読める.テレビ電話の標準を策定しているさなか「会議ってさーあんまりテレビ…
それは,単に 「動くものがプロジェクタに投影されたほうがおもしろい」 ではなく 「実装しないと,システムの詳細,全体が本人にも理解できない」 からである ような気がしてきた.
ここに,IDEに頼りまくりのプログラマと,エディタで手打ち&コマンドラインコンパイルなプログラマがいました.あなたは,どちらの意見により多く賛成できますか?IDE派はいいました 「同じことを2度3度書きたくないから,補完機能は重要」 手打ち派はいい…