[v=1]<私は a=1>[/v]ラムダ<です a=1> [v=1<私は a=1>]ラムダ<です a=1> <<<私は a=1>ラムダ v=1>spd=1.5><です a=1> struct _inputstr { _inputstr a; tagtype t; val v; } inputstr; 1 < 2 < 3 < 4 私は 4 a=1 3 > 3 ラムダ 3 v=1 2 > 2 spd=1.5 1 > 1 < 2 です 2 a=1 1 > " |<|>"がセパレータ "<"を見つけたら階層+1 "<"を見つけたら階層-1 階層が1で終わらなかったらエラー 処理関数(再起呼び出し処理) "<"を見つけたら再起呼び出し ">"をみつけたら文字列を返す。(文字列とタグはスタック(リストか)) <<<ワタシハ a=1>ラムダ voice=1>spd=1.5><デス a=1> 通常のタグでの表現だと、 ワタシハラムダデス |<|ジツハ|<|ワタシハ|a=1|>|<|ラムダ|voice=1|>|spd=1.5|>|<|デス|a=1|>| 1 1 2 2 2 2 2 2 2 2 1 1 1 1 1 1 |<|<|ジツハ|<|ワタシハ|a=1|>|ラムダ|voice=1|>|spd=1.5|>|<|デス|a=1|>| 1 2 3 3 2 1 1 1 音節 >word> 音節 { list s; tagStrct *tag; } 音節データはタグなし。tag=NULL タグ付きのデータはtag!=NULLとなり、sに音節データが入る。 sに入るデータはタグデータ有りもタグデータなしも同様にリストアップされる。 |< |ジツハ |<|ワタシハ|a=1|> |<|ラムダ|voice=1|> |spd=1.5|> |<|デス|a=1|>|