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 件のコメント:
コメントを投稿