決定性有限オートマトン

wikipediaの例をjavascriptで書いてみました。

<script>
var M = {
	sigma:["q0","q1"],
	S:[0,1],
	T:{
		q0:function(s){return s == "0" ? "q1" : s == "1" ? "q0" : null; },
		q1:function(s){return s == "0" ? "q0" : s == "1" ? "q1" : null; }
	},
	s:"q0",
	A:["q0"],
	judge: function(str) {with(this){
		var s1 = s;
		for (var i = 0; i < str.length; i++) {
			var f = T[s1];
			if (f == null) return false;
			s1 = f( str.charAt(i) );
		}
		for (var i = 0; i < A.length; i++)
			if (s1 == A[i]) return true;
		return false;
	}}
}

function p(str) {
	document.write(str+":"+M.judge(str)+"<br>");
}
p("1111");
p("10111");
p("101110");
</script>