javascript设计模式交流(2)
2010-09-14 13:17:16 来源:WEB开发网核心提示: 词法分析有限状态机任务很简单,从输入字符流中读入一个一个的字符,javascript设计模式交流(2)(4),当辨认出输入的字符能构成一个独立的语法单元(token)时,便将这个token放入待分析的词句流中,其他字符原样放置,那么正斜杠/和它后面的字符必须被看成一个整体,这里给出一个简单
词法分析有限状态机任务很简单,从输入字符流中读入一个一个的字符,当辨认出输入的字符能构成一个独立的语法单元(token)时,便将这个token放入待分析的词句流中。
这里给出一个简单的例子:正斜杠转义的实现。通常字符串转义都是以反斜杠实现的,假如有一个字符串,现在我们要把正斜杠用作转义符以做一些特殊用途,其他字符原样放置。那么正斜杠/和它后面的字符必须被看成一个整体,其它每个字符都是一个整体。
这个状态机只有两个状态 第一个状态是读入普通字符状态 第二个状态是读入正斜杠以后的状态 状态图如下
在js中 充分利用语言特性 将每个状态实现为一个函数 它接受一个状态改变参数 然后返回下一个状态
<script>
functionstate_machine()
{
this.state=_1;
this.resault=[];
function_1(c){
if(c!='/'){
this.resault.push(c);
return_1;
}else{
return_2;
}
}
function_2(c){
this.resault.push('/'+c);
return_1;
}
this.change=function(c){
this.state=this.state(c);
};
}
varsm=newstate_machine();
varqueue=("a//sd/jh/ds").split('');
for(vari=0;i<queue.length;i++)
sm.change(queue[i]);
alert(sm.resault);
</script>
Tags:javascript 设计模式 交流
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接