簡単オリジナル言語作成ver2014/02/26
久しぶりにやりました
前のverが13/4なので ほぼ一年ぶりW
13/4頃も一年ぶりに再開させたかんじなので
作成期間2年で全然進んでないダメっぷりw
そうさなぁ
りささんとこのBBSに言語作成の本読んでますって
書いたの5年くらい前っぽかったりします
オリジナル言語作成はストップしてましたが
「Rubyで作る奇妙なプログラミング言語」の簡易言語を写経したり
HSPに移植したりはしてました
2013/6頃から写経始めたみたいです
ってこっちもサボりサボリではあるんですが
今日はラベルに関していじってました
ラベル文読み込みとJUMPニーモニック追加
読めるだけで動き方設定してないのですが
ラベルはラベル定義があるだけじゃダメで
JUMPのp1定義もした方がいいみたい
ラベルと飛ぶ前の場所を二つとも管理すると良さげですね
って書籍の簡単言語がそんなかんじなんです
書籍とかに載ってる言語を自分なりに改造するっていいかも
テンプレートとして
自由にやった方がいいようで
テンプレートは欲しいですよね
それか 僕に全部自力で実装する能力がないか
って全部自力で実装できるやつなんているんか?W
しかも全部車輪の再発明w
gitちょっとWEBで勉強して
githubはまだ全然わかんないんですがw
subversionもちょっとやってみて
結局@wikiで管理することにしました
しばらく一人開発なんだろーなー
最後まで一人開発かもしれへんw
LIFO 後入先出法 の亜種として
僕がよくmesboxで使う技なんですが
先からデータを入れていって 64kb越えると
後ろのデータから消えていくんです
mesboxなんで データを先から入れないと最新のを表示できないからなんですが^^;
でもそういうデータ構造って良くない?w
logmesのデータ管理もそうして欲しいです。とかw
一定の量越えると動かなくなりますし
logmesに限らず 簡易ログ管理として良さそうです
後はテキスト表示とか
テキスト表示は64k以前のテキストなんてほぼいらないし
logmesでもほぼいらないんですが
という訳で思考実験
まず64kbの文字列のなんか(入れるの)用意
まずは前から後ろに向けてデータ格納し続ける
一番後ろに着たら データの挿入先を一番前に変更
後ろに向けてデータを挿入し続ける
うーんw
2byte文字むかつくw
後ろから前に変更したら
最初の文字は更新前の残りですよね
それが2byte文字だったらw 全部文字化けやんw
案B
まず64kbの文字列のなんか(入れるの)用意
最初の先頭を32kbめとする
256*128byte目を先頭の位置として変数に入れる
表示用文字列は256*128byte→256*256byte-1→0→256*128byte-1
追加文字列を渡す
文字列の長さを取得
256*128byte-strlen(文字列)+1 から文字列挿入
先頭用変数に256*128byte-strlen(文字列)+1代入
表示用文字列は256*128byte-strlen(文字列)+1→256*128byte→256*256byte-1→0→256*128byte-strlen(文字列)+1
文字列が途中で途切れる対策が立てばこれでいけるかも
グルグル回ることが不安なら次の方法
案C
まず64kbの文字列のなんか(入れるの)用意
先頭から文字列代入
代入先=次の挿入+前の代入先
みたいなw
代入にmaxsizeを計算してその辺で区切るの必要です
コピーの計算かかるけど考え方が楽でいい
案D
案Bの方式を
64kB/4くらいでデータ用意
そこへ表示用文字列を入れてから表示
だってデータ途中で切れるんだもんw
64kb表示したいなら256kbくらい用意しましょう
4倍くらいってのは勘ですw
なんか「先入れ先出し(FIFO)」っぽさがw
案C の改良
HSPでもそうなんですけど
文字列追加してったらサイズ大きくなってかない?
なので適当なタイミングで
新しく文字列をこさえて
64kbでカットしてコピー
文字列カットモジュール書きました
http://seesaawiki.jp/modu_zazann/d/HSP_2014_split_str.hsp
大きな記憶と小さな記憶
ここで言う記憶とはPCにおけるデータです
大きな記憶
メモリもHDDもCDも
小さな記憶が並んだ羅列だ
プログラムは最初一列に並んだデータを読み出す
記憶するなら一列に並べて保存する
小さな記憶
変数とかmallocとか
いつからか小さな記憶も得意になった
並んだ記憶 配列も 大きさは可変になってきた
プログラムは一列に並んでる
構造体を使えば
要素がsize固定なら
構造体の配列もまた一列に並んでいる
今日はnibble単位でいじってました
nibble単位なのにsizeが4byteなんですが
モジュール変数になってますが
コレ構造体だったら一列に並んでるなぁって
保存形式用なので
保存する時は一列になって暗号かけて保存する予定
なんか単純な話なのに 話がじょじょに大きくなってゆくーw
http://seesaawiki.jp/modu_zazann/d/HSP_2014_step_ar_sub01.hsp
二ついっぺんに置き換え
色々考えたんですけど
てか なんとなく考えてたんですけど
プログラマがプログラムに書く 区切り文字
もしくは 拾う文字
TOOLで拾うために調べて目印にする文字
大体 プログラムってのは それようの
好きにして下さいーって文字みあたらない
文字列の中とか コメントの中とかもあるし
ってか文字列にするとしても
したらコメントか文字列の中に書きたくなる気がします
でも組み合わせると 割といけるんちゃうんかな?って
$# とか
$% とか
で僕が考えたのが
[*]もしくは[*hoge]と
[|*]もしくは[|*hoge]
が文字列の中で言う¥ね |
hogeには好きな文字入れなされ
そんなこと 前書いたっけ?
でも今はコレ決定気味です
で置き換えモジュール書きました
http://seesaawiki.jp/modu_zazann/d/HSP_2014_two_rep.hsp
元のモジュールは 開発wiki から拾ってきたので
動作がわかりにくくて苦労しました
割と簡単な置き換えモジュール使用したんだけどな
一文字目[で2文字目が|だと3文字目が2文字目になって
一文字目[で2文字目が|で3文字目が|だと3文字目削除
って仕様もいいかも今なら割と楽に出来そう
Perlの¥ってそんなかんじゃなかったでしたっけ?