WEB开发网
开发学院网页设计JavaScript javascript设计模式交流(2) 阅读

javascript设计模式交流(2)

 2010-09-14 13:17:16 来源:WEB开发网   
核心提示: 词法分析有限状态机任务很简单,从输入字符流中读入一个一个的字符,javascript设计模式交流(2)(4),当辨认出输入的字符能构成一个独立的语法单元(token)时,便将这个token放入待分析的词句流中,其他字符原样放置,那么正斜杠/和它后面的字符必须被看成一个整体,这里给出一个简单

词法分析有限状态机任务很简单,从输入字符流中读入一个一个的字符,当辨认出输入的字符能构成一个独立的语法单元(token)时,便将这个token放入待分析的词句流中。

这里给出一个简单的例子:正斜杠转义的实现。通常字符串转义都是以反斜杠实现的,假如有一个字符串,现在我们要把正斜杠用作转义符以做一些特殊用途,其他字符原样放置。那么正斜杠/和它后面的字符必须被看成一个整体,其它每个字符都是一个整体。

这个状态机只有两个状态 第一个状态是读入普通字符状态 第二个状态是读入正斜杠以后的状态 状态图如下

javascript设计模式交流(2)

在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>

上一页  1 2 3 4 5 6  下一页

Tags:javascript 设计模式 交流

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接