オートマトンの履歴

私は<%= hoge %>です <5


の中で
<%= hoge %>

「ほげ」
に変換する時、

「状態」+「入力」 => 「新状態」

状態遷移表

スタート

実装

「スタート」+「私」 => 「スタート」(「<」でない)
「スタート」+「は」 => 「スタート」(「<」でない)
「スタート」+「<」:「<」だから次の状態を待つ => 「%待ち状態」
「%」

参考

umecob.js

// 初期状態
trans["START"] = function(c) {
switch (c) {
case "\n":
this.vals.linefeeds++;
return nextState.START.call(this, c);
default:
return nextState.START.call(this, c);
case lf1:
return "JS_PRE_START";
case "$":
return "PRE_SHORT_ECHO";
case '\\':
this.stack.push("START");
return "ESCAPE";
case '\0':
strToCode.call(this);
return null; // 終了
}
};
setDefault('START', function(c) {
this.buffer.add(c);
return "START";
});

https://github.com/shinout/umecob.js/blob/master/umecob.js



__.JPG