すたんくらうど
stuncloud.bsky.social
すたんくらうど
@stuncloud.bsky.social
やっている
仕様変更の影響がめっちゃ出てるけど影響を受けた関数はさっぱりしていくので悪くない
October 1, 2026 at 4:49 PM
識別子を解析する際にその識別子がどこ由来か調べる関数を書き始めた、どこにもいなかったらエラーを返す
これやっとくと評価時の探索範囲を絞れてうれしいはず
September 30, 2026 at 5:10 PM
AtomicPtrで生ポインタをスレッド間で共有できそうだけどCopy付いてなくてつれえ、load()で中のポインタ得られそうだけどOrderingがどういうことかわかんね
つまりそもそもAtomicわかってない
September 29, 2026 at 7:58 PM
急にissueがたくさん生えてしまった
September 25, 2026 at 4:01 AM
reduce()すればすべての式を評価できる
September 21, 2026 at 5:25 PM
連鎖する論理演算を短絡評価するために評価器を内包するイテレータを書いた
こいつは式のイテレータと演算子のイテレータも持ち、next()で以下をやる
1. 次の演算子を得る
2. 次の式 (左辺) を得て評価する
3. 演算子と値によりやることがかわる
- ANDかつ偽、またはORかつ真ならそのまま値を返す (短絡する)
- ANDかつ真、またはORかつ偽であればさらに次の式 (右辺) を得て評価し、その値を保存しつつ返す
4. 次にnext()を呼ばれたときは保存した値を左辺として使うことで二重評価を避ける

使うときはall()とかany()で短絡評価できる
September 21, 2026 at 5:24 PM
そんで ! は単項演算子なんだけど演算子として定義しているため二項演算子に紛れ込む可能性がありどうしたもんか考えている
単項演算子は + や - もあるけど二項演算でも使うからなあ、どうすっかなあ
September 17, 2026 at 7:13 PM
今日はnot式の解析書いたけど ! が付けられる式ってほぼ決まってるからparserで不正な式はエラーで弾ける
場合によっては評価しないとわからんものもあるけどparserでは通す
September 17, 2026 at 7:10 PM
parserでこの変数が何者であるか、をやるのダメそうなことがわかった
それやりたいのは言語サーバーなので言語サーバー側で簡易な評価器を実装したほうが良さげ
とは言えparserでもなるべく不審な構文は通したくないのでやれるとこまではがんばる
September 17, 2026 at 7:06 PM
自分にとって好ましくない思想を抱く人物が団体のトップに据えられたらその団体のメンバーも全員その思想に共感してると断ずるのはバカのすることなんだ
September 15, 2026 at 5:53 PM
テスト対象のスクリプトが
hoge = 1
で代入式として解析してたけど身宣言変数への代入なんかの対応入れたら解析結果が変わり今までのテスト無意味になるっつうね
September 15, 2026 at 5:42 PM
よく見たらこのような状況を想定した処理が書いてあったが機能しておらず、そこをちょっと直したらどうにかなった
September 9, 2026 at 5:39 PM
UWSCでifがオブジェクトだった場合、つまり
if = createoleobj("WScript.Shell")
などとやった場合どうなるのと思ったらここではなぜかendifがないとか言い出すのでif文として解析してるんですね、なんでだよ
September 9, 2026 at 4:58 PM
UWSCだと
if (true) then
ならif文になるし
if(true) then
だとif関数になる
なるほど ( が直後に来たら関数とすればいいのか
September 9, 2026 at 4:43 PM
やば、どうしたらいいの
September 9, 2026 at 4:41 PM
識別子として有効なキーワードが来たら一個先のトークンが = か ( だった場合に限り式としての解析を試みるのはどうか

だめだ if (true) then に対応できなさすぎる
September 9, 2026 at 4:41 PM
if = 1
で文の解析がしくじったら式として解析すればいいじゃん方式は一見有効そうであったが、それだと文として解析する最中に`if`は消費してしまうので` = 1`しか残らず結局代入式として解析できなくなりじゃあどうすんだみたいな話になります
September 9, 2026 at 4:38 PM
UWSC互換にする場合
if = 1
みたいなのはif文ではなく変数ifへの代入式として処理されなくてはいけなくて、じゃあどうすんのってなった場合にif文としての解析が必ず失敗するはずなのでそのエラーを握りつぶしてから式としての解析を試みるようにするっていう、たぶん行けるはず
September 7, 2026 at 4:59 PM
にんげんがちょっぴりウカツをやらかすだけでプログラミングの難易度が劇的に上がるのほんとつらい
救いはまだテスト通るか通らないかの段階であること、リリースしたのでこれだと目も当てられない
September 7, 2026 at 3:20 PM
hoge[0] = 1
という代入式で左辺の hoge[0] が解析できなくて、でもコード見る限り間違いがなくてめっちゃいろんなとこにdbg!入れたら [ が適切にトークン化されてなくてサァッ…!
字句解析器が不明な文字トークンとして返してるのにそれをエラーにしてなかったのも問題だなぁ
September 7, 2026 at 3:14 PM
解析した式や文の位置がわかったほうが良いなあということでそれらをenumで表してたのを位置情報+enumのstructにしたことでアホみたいに赤線が出てきた、明日がんばってなおすぞ
August 25, 2026 at 7:17 PM
休憩すべく立ち上がろうとしたら足つりそうになったどうしてどうして
August 11, 2026 at 4:26 PM
とりあえず構文のスニペットを出せるようにはした、あと識別子があればそれを補完する仕組みを書いたのでそれが動いてるといいな…と思いつつ解析器の各所に書かれたtodo!()でクラッシュしまくっててよくない
幸いクラッシュ箇所は出力のとこで確認できるので都度未実装エラーに書き換えていく
August 11, 2026 at 4:25 PM
あと風邪っぽいのであまり集中できない
August 11, 2026 at 4:21 PM
parserは最低限他所から呼べるようにした上で言語サーバーの開発を進めることで言語サーバーで感触見ながら解析器の開発ができて体験が良さそうな気がしていたが言語サーバーがまずむずかしいので解析器がどうとか言ってられない
August 11, 2026 at 4:20 PM