2015年7月28日火曜日

Scalaで学ぶ関数脳入門 パーサー2

P333 リスト8の確認
 def test(caption:String,data:Stirng){
  println(Caption+data)
  read (new SimpleLexer(data))
}
def read(lexer:Simplelexer):Unit=lexer.nextToken match= {
  case Token(lexer.EOF,value)=>println()
 case token:Token=>print(token);read(lexer)
}

case token:Token=>print(token);read(lexer)のところで、再帰を使っている。lexerの中身は、readで処理されるたびに、先頭文字が1文字ずつ削除されていく。print(token)により、token.toStirngがプリントされるということのようだ。

P335 リスト9について
 def expression = {
  number
  nextToken match {
   case  Token(...
 ....
ここでは、再帰は見当たらない?一桁数字+一桁数字の単純な式だけの処理をしているということだろうか?
このへんになってくると、パーサーの複雑さを感じる。

*********
いちおう、最後まで全ページを読んでみた。全体的に、関数型に関する記述は少ないので、関数型プログラミングの学習にはあまりならなかったが、基本的な並列処理やパーサの記述がとても参考になった。

0 件のコメント:

コメントを投稿