基本的にインデントって前後の行で1以上の開きが出るってことは無いなずなので
サーチするキーワードをプラスとマイナスの2つのグループに分類しておいて
毎行の頭に入れる空白文字数はキーワードサーチで足し引きしたカウント変数の掛け算で算出してやればいいんじゃないんです?
プログラムに構文ミスが有るかどうかはRUNさせてみればプチコンが自動でチェックしてくれるんですし。
ENDとENDIFの区別ならまず文字数が3文字と5文字で違いますし
頭の数文字分が共通なG系やSP系命令の区別はどうすればいいんですか?って話になりません?
構文解析するにしても細かい簡単な式の解析の集合体ですから
数値化して敷居値をどこに設定するかっていう練習した方がいいんじゃないんです?