fdpl_memo0001
の編集
https://k.osask.jp/klog/?fdpl_memo0001
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
2012_0001
2013_0001
2013_0002
2013_0003
2014_0001
2015_0001
2016_07
2016_08
2016_09
2016_10
2016_11
2017_01
2017_02
2017_03
2017_04
2017_05
2018_01
2019_01
BracketName
FormattingRules
FrontPage
Help
InterWiki
InterWikiName
InterWikiSandBox
K
KH_SARC_00
KH_dha8
MenuBar
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
VC_install
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
fdpl_memo0001
fdpl_memo0002
fdpl_memo0003
fdpl_memo0004
fdpl_memo0005
fdpl_memo0006
fdpl_memo0007
fdpl_memo0008
fdpl_memo0009
fdpl_memo0010
gg02_0004
gg02_0005
gg02_0006
gg02_0007
gg02_0008
gg02_0009
https
impressions
memo0001
memo0002
oisix01
osaskology
osaskology0
osecpu_0001
osecpu_0002
p20200229a
p20200303a
p20200310a
p20200321a
p20200401a
p20200730a
p20201230a
p20220628a
p20220701a
populars
prog_0001
prog_0002
prog_0003
prog_0004
prog_0005
* KH-FDPL に関するメモ-0001 -(by [[K]], 2015.01.07) ** (1) アイデア列挙 -実現できるかどうかはともかくとして、とりあえずこれができるようになりたいと思っていることを列挙してみる。 -(1-1) 変数も構造体オブジェクトも宣言しなくても使える。初出時に宣言される。 --変数宣言のスコープが問題になる。あるループの中で宣言した変数が外からは参照できないのは[[K]]としては望ましくない。かといってグローバル変数をデフォルトにしたいわけでもない。うーむー。 -(1-2) 変数は型を持たない。つまり a=1 のあとに a = "abc" とすることもできる。 -(1-3) 変数や構造体メンバは、未宣言状態に戻すことができる。 -(1-4) 型という概念はない。あるオブジェクトにあるメンバが存在するかしないかだけが問題になる。 -(1-5) プログラムの実行が終了しても、関数やオブジェクトは消去されない。 -(1-6) includeとかrequireみたいな記述をしなくてもよい。 -(1-7) コンパイラであることが理想だけど、とりあえずはインタプリタで始めよう。 -(1-8) KH-FDPLを使ってKH-FDPLを拡張できる(基本構文レベルから改造できる)。 --そんなことができるのかどうかは悩ましいところ。・・・できる気がしてきた。 -(1-9) KH-FDPLを起動すると、前回の終了状態からスタートする。 -(1-10) プログラムはコマンドラインから入力できるが、テキストファイルを読ませることもできる。そうするとバッチファイル的に実行されてプログラムが読み込まれる。 -(1-11) プログラムを文字列に格納しておいて、それを実行することができる。いわゆるevalができる。 -(1-12) 構文ルール上、ここは定数でなければいけない、という部分がない。なんでも変数に代入できるし、なんでも変数で指定できる。たとえばgotoラベルも変数に代入できる。 -(1-13) マルチタスクに動作する。実行中でも変数や関数内容を書き換えられる。 -(1-14) 任意の変数名に対して、それがメンバを持つオブジェクトなのか、配列名なのか、それともただの変数なのか、関数ポインタなのか、未定義なのかを知ることができる。また配列の場合は添え字の範囲を知れるし、オブジェクトの場合はメンバ名の一覧を得られる。 --もっとも配列の添え字の範囲はその時点のものであって、もっと大きな値を指定することはできるし(自動拡張される)、オブジェクトのメンバだっていつでも増やせる。 ** (2) イメージ KH-FDPL version 0.01a OK print a undefined OK a=3 OK print a 3 OK a++ OK print a 4 ** (3) 議論 -(3-1) (1-11)と(1-8)は相性がいいかもしれない。複数のeval関数を書いた上で、プロンプトやファイルで入力したものが、どのeval関数で実行すればいいのかを切り替えさせればいいから。 -(3-2) (1-8)をあてにしてもいいのなら、とりあえずは、ヘボヘボな言語仕様でもよさそうな気はする。 -(3-3) 内部の基本型: --数値型(めんどくさいのでdoubleのみ) ---やっぱりint型も作ることにした。これがないといろいろ不便なので。 --文字列型(長さ情報を持っていて、そのために0x00を内部に含むこともできる) --ポインタ型(別のオブジェクトを指し示すために使う、もしくは関数ポインタとして使う) --オブジェクト型 ---これはKVSの構造を持っていて、配列もこれを使う。構造体オブジェクトとして使う場合はメンバ名がkeyになり、配列の場合は添え字がkeyになる。 --いずれのオブジェクトもIDを持っている。 -(3-4) 変数の内容は文字列型にコンバートできる。ポインタ型やオブジェクト型でもできる。したがって、配列の添え字としてオブジェクト型を指定することもできる。 -(3-5) ++aはa+=1と厳密に同じ結果になる。でもa=a+1は少し違う。もちろん値は同じだけど、a=a+1の場合は新しくオブジェクトが作られる。つまりIDが変わる。 * こめんと欄 #comment
タイムスタンプを変更しない
* KH-FDPL に関するメモ-0001 -(by [[K]], 2015.01.07) ** (1) アイデア列挙 -実現できるかどうかはともかくとして、とりあえずこれができるようになりたいと思っていることを列挙してみる。 -(1-1) 変数も構造体オブジェクトも宣言しなくても使える。初出時に宣言される。 --変数宣言のスコープが問題になる。あるループの中で宣言した変数が外からは参照できないのは[[K]]としては望ましくない。かといってグローバル変数をデフォルトにしたいわけでもない。うーむー。 -(1-2) 変数は型を持たない。つまり a=1 のあとに a = "abc" とすることもできる。 -(1-3) 変数や構造体メンバは、未宣言状態に戻すことができる。 -(1-4) 型という概念はない。あるオブジェクトにあるメンバが存在するかしないかだけが問題になる。 -(1-5) プログラムの実行が終了しても、関数やオブジェクトは消去されない。 -(1-6) includeとかrequireみたいな記述をしなくてもよい。 -(1-7) コンパイラであることが理想だけど、とりあえずはインタプリタで始めよう。 -(1-8) KH-FDPLを使ってKH-FDPLを拡張できる(基本構文レベルから改造できる)。 --そんなことができるのかどうかは悩ましいところ。・・・できる気がしてきた。 -(1-9) KH-FDPLを起動すると、前回の終了状態からスタートする。 -(1-10) プログラムはコマンドラインから入力できるが、テキストファイルを読ませることもできる。そうするとバッチファイル的に実行されてプログラムが読み込まれる。 -(1-11) プログラムを文字列に格納しておいて、それを実行することができる。いわゆるevalができる。 -(1-12) 構文ルール上、ここは定数でなければいけない、という部分がない。なんでも変数に代入できるし、なんでも変数で指定できる。たとえばgotoラベルも変数に代入できる。 -(1-13) マルチタスクに動作する。実行中でも変数や関数内容を書き換えられる。 -(1-14) 任意の変数名に対して、それがメンバを持つオブジェクトなのか、配列名なのか、それともただの変数なのか、関数ポインタなのか、未定義なのかを知ることができる。また配列の場合は添え字の範囲を知れるし、オブジェクトの場合はメンバ名の一覧を得られる。 --もっとも配列の添え字の範囲はその時点のものであって、もっと大きな値を指定することはできるし(自動拡張される)、オブジェクトのメンバだっていつでも増やせる。 ** (2) イメージ KH-FDPL version 0.01a OK print a undefined OK a=3 OK print a 3 OK a++ OK print a 4 ** (3) 議論 -(3-1) (1-11)と(1-8)は相性がいいかもしれない。複数のeval関数を書いた上で、プロンプトやファイルで入力したものが、どのeval関数で実行すればいいのかを切り替えさせればいいから。 -(3-2) (1-8)をあてにしてもいいのなら、とりあえずは、ヘボヘボな言語仕様でもよさそうな気はする。 -(3-3) 内部の基本型: --数値型(めんどくさいのでdoubleのみ) ---やっぱりint型も作ることにした。これがないといろいろ不便なので。 --文字列型(長さ情報を持っていて、そのために0x00を内部に含むこともできる) --ポインタ型(別のオブジェクトを指し示すために使う、もしくは関数ポインタとして使う) --オブジェクト型 ---これはKVSの構造を持っていて、配列もこれを使う。構造体オブジェクトとして使う場合はメンバ名がkeyになり、配列の場合は添え字がkeyになる。 --いずれのオブジェクトもIDを持っている。 -(3-4) 変数の内容は文字列型にコンバートできる。ポインタ型やオブジェクト型でもできる。したがって、配列の添え字としてオブジェクト型を指定することもできる。 -(3-5) ++aはa+=1と厳密に同じ結果になる。でもa=a+1は少し違う。もちろん値は同じだけど、a=a+1の場合は新しくオブジェクトが作られる。つまりIDが変わる。 * こめんと欄 #comment
テキスト整形のルールを表示する