1
我正在實現類似於OSX默認終端模擬器的終端模擬器:Terminal.app。使用Flex/Bison作爲終端仿真器後端的解析器不是好主意嗎?
我打開與openpty
終端連接,然後使用Flex來解析進入的輸入:普通文本和control sequences和Bison其中要求基於由Flex產生令牌回調(插入字符串,光標正向序列等)。
- 除了正常的文本標記,我已經實現了大約30個轉義序列,沒有任何突出的問題。
- 我做的Flex /野牛重入的,因爲我需要多個終端窗口同時工作
- 我做了一些解決辦法,使的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一無所知,所以您可以繼續擴展。謝謝。 –
請想象一下,你正在和一個經驗不足的觀衆談話。 –