>>931
自分も>>934と同様に、状態変数で管理してたよ。
・Type待ち
 --> 初期状態
・Length待ち
 --> 1byte固定なら1個、2byte固定なら2個、可変長ならN個の状態
・Value処理中
 --> 受信カウンタを併用(初期値は0, Lengthになれば終了)
実装はインスタンス生成時に受信バッファを渡し、後はgetで取得するイテレータになる。

>>933
(Valueが更にTLVとして定義される)階層的なTLV構造で、それが再帰的である、
または複雑な構造(構文)を持つなら、yaccを使うのは良いアイデアかもしれない。
その場合、前記のイテレータをスキャナ(字句解析)として位置付け、
Typeをトークン(字句)として返すよう実装することになる。

yacc以外だと、precssというコードジェネレータを使うのが良いかもしれない。