コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
しょぼーん ◆lp6HwPeaFWPI
2018/5/6 15:27
INDENTER進捗
ダメです。
インデント消すのは簡単だったけどつけるのは想定ケースが多すぎてきつい。
それにどんどんスパゲッティが茹で上がる。

余談
DIALOG画面で改行をコピーしまくって画面外までいかせてから削除するとカーソルが画面外行った。

コメント

アバター
あきと 2018/5/6 16:47 ◆7TEpcjb/rk2E
改行の先にキーワードがあるかどうか確認してからインデントを入れる必要がある部分がちょっと面倒ですかね。
IF THENで一行で終了しているときと下の秒にELSEやELSEIFが出てきたらENDIFまで監視するなど。

インデントが必要なキーワードはこれかな
IF THEN -- (ELSE | ELSEIF) -- ENDIF
FOR TO -- NEXT
WHILE -- WEND
REPEAT -- UNTIL
DEF -- END
@LABEL -- RETURN
アバター
しょぼーん 2018/5/6 20:50 ◆lp6HwPeaFWPI
IF_FLAGとかの命令の名前使った変数の判定とかENDとENDIFの区別とかサブルーチン解析とかWHILE 1:WENDの一行完結かの判定とかうわああああああああああああ
もう構文解析したほうが速い気がしてきた。
アバター
ツララ 2018/5/8 14:24 ◆ArUdBYOYME1V
基本的にインデントって前後の行で1以上の開きが出るってことは無いなずなので
サーチするキーワードをプラスとマイナスの2つのグループに分類しておいて
毎行の頭に入れる空白文字数はキーワードサーチで足し引きしたカウント変数の掛け算で算出してやればいいんじゃないんです?
プログラムに構文ミスが有るかどうかはRUNさせてみればプチコンが自動でチェックしてくれるんですし。

ENDとENDIFの区別ならまず文字数が3文字と5文字で違いますし
頭の数文字分が共通なG系やSP系命令の区別はどうすればいいんですか?って話になりません?
構文解析するにしても細かい簡単な式の解析の集合体ですから
数値化して敷居値をどこに設定するかっていう練習した方がいいんじゃないんです?
アバター
しょぼーん 2018/5/8 21:54 ◆lp6HwPeaFWPI
成る程です。
アドバイスありがとうございます。
構文解析って敷居値使うんですね。
何しろやったことないもので。

(いつもこれぐらいのツララ節ならいいのに……)
アバター
しょぼーん 2018/5/9 23:12 ◆lp6HwPeaFWPI
PRGを文字列にして一文字づつです。
インデントつける前にインデントは消して初期化します。
後は皆さんの言っている通りインデントの上げ下げを行いたいと思います。
というか、先にインデントをつけるのを作っている先駆者がいたので、それを参考にしながらやりたいと思います。

コメントを書く

この投稿にはコメントできません。

- WEB PATIO -