2016-04-24 13 views
1

私は、OSX用のデフォルト端末エミュレータTerminal.appに似た端末エミュレータを実装しています。ターミナルエミュレータのバックエンドにパーサーとしてFlex/Bisonを使用するのは悪い考えですか?

Iはopenptyとの端子接続を開き、受信入力を解析するためのFlexを使用:Flexによって生成トークンに基づいてコールバックを呼び出し、通常のテキストとcontrol sequencesとバイソンは(文字列、カーソルフォワード配列などを挿入します)。

  1. 通常のテキストトークンに加えて、私は約30のエスケープシーケンスを未解決の問題なしで実装しています。
  2. 私は同時に
  3. 動作するように、複数の端末のウィンドウを必要とするので、私は私の別の質問に基づいて連続出力を読み取るための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を使用するとどのような問題が生じるのでしょうか?パフォーマンスが問題になることはありますか?

+0

それはやり過ぎだ。あなたにはDPDAは必要ありません。あなたはNFA/DFAでそれをすべて行うことができます。最も複雑なターミナル言語Inknowは3270であり、それは「単純に」大きなステートマシンです。 – EJP

+0

@EJP、答えをもっと明示してください。それは残念なことですが、これまでのところそれは仕事です:私は手書きパーサの代わりに文法を書くことができ、それはより簡単な方法であるようです。パフォーマンス面での不満?また残念ながら私はDPDA、NFA/DFAについては今のところ知らないので、あなたもそれを拡張することができます。ありがとう。 –

+0

あなたはあまり経験豊かではない聴衆と話していると想像してください。 –

答えて

2

略語は時々役立ちます。

字句解析器からのトークンを解釈することができる。言及されたスタックは、入力を解釈できる代替方法を見ながらマシンの状態を保存するために使用されます。フレックス(そしておそらくバイソン)かどうかを検討する際に

は、私はあなたがコントロールシーケンス内に散在することができます制御文字の問題を解決しようとしている方法ともっと心配になり、良い方法でしょう。

さらに読書:

関連する問題