私は、OSX用のデフォルト端末エミュレータTerminal.appに似た端末エミュレータを実装しています。ターミナルエミュレータのバックエンドにパーサーとしてFlex/Bisonを使用するのは悪い考えですか?
Iはopenpty
との端子接続を開き、受信入力を解析するためのFlexを使用:Flexによって生成トークンに基づいてコールバックを呼び出し、通常のテキストとcontrol sequencesとバイソンは(文字列、カーソルフォワード配列などを挿入します)。
- 通常のテキストトークンに加えて、私は約30のエスケープシーケンスを未解決の問題なしで実装しています。
- 私は同時に
- 動作するように、複数の端末のウィンドウを必要とするので、私は私の別の質問に基づいて連続出力を読み取るためのFlex /バイソンを作るために、いくつかの回避策をしたフレックス/バイソン再入をした:How to detect partial unfinished token and join its pieces that are obtained from two consequent portions of input?。
これまでのところ、Flex/Bisonが仕事をしているようですが、遅かれ早かれFlex/Bisonを端末入力を解析するツールとして使用しないでください。
問題は、端末入力用に手書きパーサの代わりにFlex/Bisonを使用するとどのような問題が生じるのでしょうか?パフォーマンスが問題になることはありますか?
それはやり過ぎだ。あなたにはDPDAは必要ありません。あなたはNFA/DFAでそれをすべて行うことができます。最も複雑なターミナル言語Inknowは3270であり、それは「単純に」大きなステートマシンです。 – EJP
@EJP、答えをもっと明示してください。それは残念なことですが、これまでのところそれは仕事です:私は手書きパーサの代わりに文法を書くことができ、それはより簡単な方法であるようです。パフォーマンス面での不満?また残念ながら私はDPDA、NFA/DFAについては今のところ知らないので、あなたもそれを拡張することができます。ありがとう。 –
あなたはあまり経験豊かではない聴衆と話していると想像してください。 –