言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

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

複雑な形のモルフにマウスイベントを反応させる方法。

普通に Morph を継承しただけのモルフでは、マウスイベントはモルフの周りの矩形全体に反応してしまう。複雑な形状や中抜きを持つモルフの場合、描画していない場所ではマウスイベントを無視したい。Morph>>containsPoint: aPoint を上書きして範囲外では fa…

レイアウトマネージャを利用したツリー表示

問題点: サブモルフのレイアウトが反映されない。 原因: 親モルフをレイアウトする前にサブモルフのサイズを確定する必要があるが、その際にサブモルフをレイアウトしておかなくてはならなかった。 解決: レイアウト時明示的にサブモルフの fullBounds を呼…

SmaCC UI に新しいタブを作り、ツリーを表示させる。

パースをクラスメソッドで行っているため、状態が保存されずパッチを当てにくい。わざとかなー 依存関係をグラフ化する事が出来るか? そもそも、何故依存が必要なのか?

Class と Set

物事をシンプルにするために考えてみたこと。 操作には定義域や値域といったものがある。つまり、ある操作の対象と結果、これは prolog 的に見るとどちらも引数でしかないのだが、これらはある範囲の集合に属する。実際は Smalltalk なんかだと、特にどんな…

レイアウト

レイアウトされるのは Morph>>fullbounds が呼ばれた時。(描画時?) レイアウトされると親のレイアウトが呼ばれる。子は自分で呼ぶ? Morph)>>layoutInBounds: の意味は?大きさを変える時の処理の流れ(よく分かってないと無限ループになる) Morph>>width: Morp…

レイアウトの自作

モルフの中にさらにサブモルフを追加する際。レイアウトを指定するとサブモフルを自動整列させる事が出来る。自動整列の仕方を決めるにはレイアウトを作成する。シンプルな例 'From Squeak3.5 of ''11 April 2003'' [latest update: #5180] on 27 July 2003 …

有限オートマトンと Haskell

有限オートマトンで作った奇数判定機 『オートマトン・言語理論の基礎』米田政明監修 p38 a-> q0 q1(受理) Q = {q0, q1} Σ = {a} δ = {q0 x a -> q1 q1 x a -> q2} F = {q1} このような表記法がメチャクチャ嫌いではあるので、Haskell で表現してみる。 data…

ツリーモルフの作成

まずある文字を表示するハコだけ作る。ショートカットインタフェースについて調査レイアウトの動作 LayoutPolicy>>layout: aMorph in: box でそれぞれのモルフの位置を合わせる

SmaCC

reduceTable の構造 SmaCCGrammarCompiler>>reduceTable より reduceEntry at: トークンID = 状態インデックス 右辺の数 メソッド名 SmaCCToken の構造 {値 (開始位置, 終了位置, ID)} id トークンID start 開始位置 value 値

SmaCCToys

あまり良くない事なのだが、SmaCC 版言語ゲーム(SmaCCToys)の実装をしているうちに、果たしてこれって何の役に立つんだろうか??という気がしてしまい、ここは頭を冷やして喫茶店で考える事にした。 最初にパーサジェネレータのGUIを作るというアイデアを考え…

ステートマシンと言語とオブジェクト

もしもオブジェクトが状態を持たない場合、オブジェクトは関数として振舞う。 もしもオブジェクトが他のオブジェクトを知らない場合、オブジェクトはステートマシンとして振舞う。 もしもオブジェクトが他のオブジェクトを知っている場合、オブジェクトはチ…

イコールとリストの表現

Oz のイコールは普通の代入でも同値検査でも無い。 local X Y in f(X b) = f(a Y) {Show [X Y]} end local はスコープの始まりを表す。scheme で言う所の let。 ラベル(キー: 値 キー: 値) は構造体のようなもの。キーを省略した場合、PHP のように 1, 2, ..…

SmaCC 調査

reduceTable の構造 SmaCCGrammarCompiler>>reduceTable より reduceEntry at: トークンID = 状態インデックス 右辺の数 メソッド名 SmaCCToken の構造 {値 (開始位置, 終了位置, ID)} id トークンID start 開始位置 value 値